]> code.delx.au - gnu-emacs/commitdiff
Merge from emacs-23; up to 2010-06-01T01:49:15Z!monnier@iro.umontreal.ca
authorGlenn Morris <rgm@gnu.org>
Sat, 19 Feb 2011 19:40:59 +0000 (11:40 -0800)
committerGlenn Morris <rgm@gnu.org>
Sat, 19 Feb 2011 19:40:59 +0000 (11:40 -0800)
67 files changed:
1  2 
doc/emacs/ChangeLog
doc/emacs/dired.texi
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/ChangeLog
doc/lispref/elisp.texi
doc/lispref/files.texi
doc/lispref/keymaps.texi
doc/lispref/variables.texi
doc/misc/ChangeLog
doc/misc/ada-mode.texi
doc/misc/auth.texi
doc/misc/autotype.texi
doc/misc/calc.texi
doc/misc/cc-mode.texi
doc/misc/cl.texi
doc/misc/dbus.texi
doc/misc/dired-x.texi
doc/misc/ebrowse.texi
doc/misc/ede.texi
doc/misc/ediff.texi
doc/misc/edt.texi
doc/misc/eieio.texi
doc/misc/emacs-mime.texi
doc/misc/epa.texi
doc/misc/erc.texi
doc/misc/eshell.texi
doc/misc/eudc.texi
doc/misc/flymake.texi
doc/misc/forms.texi
doc/misc/gnus.texi
doc/misc/idlwave.texi
doc/misc/mairix-el.texi
doc/misc/message.texi
doc/misc/mh-e.texi
doc/misc/newsticker.texi
doc/misc/nxml-mode.texi
doc/misc/org.texi
doc/misc/pcl-cvs.texi
doc/misc/pgg.texi
doc/misc/rcirc.texi
doc/misc/reftex.texi
doc/misc/remember.texi
doc/misc/sasl.texi
doc/misc/sc.texi
doc/misc/semantic.texi
doc/misc/ses.texi
doc/misc/sieve.texi
doc/misc/smtpmail.texi
doc/misc/speedbar.texi
doc/misc/tramp.texi
doc/misc/trampver.texi
doc/misc/url.texi
doc/misc/vip.texi
doc/misc/viper.texi
doc/misc/widget.texi
doc/misc/woman.texi
lisp/ChangeLog
lisp/files.el
lisp/gnus/ChangeLog
lisp/gnus/gnus.el
lisp/gnus/nnfolder.el
lisp/international/mule-cmds.el
lisp/mail/rmail.el
lisp/mail/rmailmm.el
lisp/simple.el
lisp/vc/log-edit.el

diff --combined doc/emacs/ChangeLog
index ec57887a154c40fb089a3026608537866e45d2cd,9f45fa31cc2e0b0273da0070cfaa8b29d33ddd17..f113a7987c12a1f767a554cce1a86e7580496ef9
@@@ -1,8 -1,7 +1,12 @@@
+ 2011-02-19  Glenn Morris  <rgm@gnu.org>
+       * dired.texi (Dired): Dired-X version number was dropped.
 +2011-02-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (X Resources): Remove *faceName and replace it with
 +      *font for Lucid.
 +
  2011-02-05  Chong Yidong  <cyd@stupidchicken.com>
  
        * rmail.texi (Rmail Display): Document Rmail MIME support more
        vc-log-outgoing.
        (Merging): Document vc-find-conflicted-file.
  
 -2011-02-04  Glenn Morris  <rgm@gnu.org>
 +2011-02-05  Glenn Morris  <rgm@gnu.org>
  
        * custom.texi (Variables): Fix typo.
  
 -2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * search.texi (Regexps): Copyedits.  Mention character classes
        (Bug#7809).
        * files.texi (File Aliases): Restore explanatory text from Eli
        Zaretskii, accidentally removed in 2011-01-08 commit.
  
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
 +      (MAKEINFO_OPTS): New variable.
 +      (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
 +      (emacs.html): New target.
 +      (clean): Remove emacs.html.
 +
 +2011-01-23  Werner Lemberg  <wl@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Now controlled by `configure'.
 +      (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 +      (ENVADD): Updated.
 +
 +2011-01-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Update for ERT addition.
 +
 +      * ack.texi (Acknowledgments): Remove mention of replaced prolog.el.
 +
  2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
  
        * building.texi (Compilation): Improve instructions for running two
        * files.texi (Backup Names): Document the new location of the
        last-resort backup file.
  
 -2011-01-08  Chong Yidong  <cyd@stupidchicken.com>
 -
        * files.texi (File Aliases): Move directory-abbrev-alist doc from Lisp
        manual.  Explain why directory-abbrev-alist elements should be anchored
        (Bug#7777).
  
 -2011-01-07  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-15  Eli Zaretskii  <eliz@gnu.org>
  
        * msdog.texi (Windows Startup): Correct inaccurate description of
        differences between emacsclient.exe and emacsclientw.exe.
  
 -2010-12-30  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-02  Chong Yidong  <cyd@stupidchicken.com>
  
        * rmail.texi (Rmail Display): Edit for grammar and conciseness.
  
 -2010-12-27  Kenichi Handa  <handa@m17n.org>
 +2011-01-02  Kenichi Handa  <handa@m17n.org>
  
        * rmail.texi (Rmail Display): Describe new features of Rmail in Info.
  
 -2010-12-25  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
        * frames.texi (Cut and Paste): Modify the section's name and text:
        don't mix "cut/paste" with "kill/yank".
  
        * trouble.texi (Checklist): Mention debug-on-quit.  (Bug#7667)
  
 -2010-12-18  Glenn Morris  <rgm@gnu.org>
 +2011-01-02  Glenn Morris  <rgm@gnu.org>
  
        * maintaining.texi: Move inclusion of emerge after EDE, so that it
        matches its position in the menu.  (Bug#7674)
  
 -2010-12-14  Glenn Morris  <rgm@gnu.org>
 +2011-01-02  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Checklist): Mention not replying via news either.
  
 -2010-12-11  Eli Zaretskii  <eliz@gnu.org>
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * misc.texi (Document View): Update DocView section with newly
 +      supported document formats.
 +
 +2010-12-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * killing.texi: Resection the Info version to conform to the
 +      printed manual, to avoid making sections on Accumulating Text, CUA
 +      and Rectangles into full chapters.
 +
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * custom.texi (Init Syntax): Add index entries for "character syntax".
        (Bug#7576)
  
 -2010-12-11  Karel Klíč  <kklic@redhat.com>
 +2010-12-13  Karel Klíč  <kklic@redhat.com>
  
        * text.texi (HTML Mode): Small fixes.  (Bug#7607)
  
 -2010-12-10  Glenn Morris  <rgm@gnu.org>
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Checklist): Fix typo in newsgroup name.
  
 -2010-12-05  Chong Yidong  <cyd@stupidchicken.com>
 +2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
  
        * search.texi (Word Search): Note that the lazy highlight always
        matches to whole words (Bug#7470).
  
 -2010-12-04  Eli Zaretskii  <eliz@gnu.org>
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Optional Mode Line): Make the description of
        load-average more accurate.
        (Windows Startup): New node.  Move the stuff about the current
        directory from "Windows HOME".
  
 -2010-11-23  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +2010-11-27  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
  
        * maintaining.texi (VC With A Locking VCS, VC Directory Commands):
        * vc1-xtra.texi (Customizing VC, General VC Options): Small fixes.
  
 -2010-11-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
  
        * maintaining.texi (Version Control Systems): Fix repeated sentence.
        Suggested by Štěpán Němec.
  
 -2010-11-20  Chong Yidong  <cyd@stupidchicken.com>
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
  
        * maintaining.texi (Version Control): Say "commit", not "check in".
        (Version Control Systems): Simplify descriptions.
  
        * emacs.texi (Top): Update node listing.
  
 -2010-11-06  Eli Zaretskii  <eliz@gnu.org>
 +2010-11-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * rmail.texi (Rmail Coding): Characters with no fonts are not
 +      necessarily displayed as empty boxes.
 +
 +      * mule.texi (Language Environments, Fontsets): Characters with no
 +      fonts are not necessarily displayed as empty boxes.
 +
 +      * display.texi (Text Display): Document display of glyphless
 +      characters.
 +
 +2010-11-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * basic.texi (Position Info): Add M-x count-words-region.
 +
 +2010-11-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * msdog.texi (ls in Lisp): Update for ls-lisp changes.
 +
 +2010-11-09  Eli Zaretskii  <eliz@gnu.org>
  
        * msdog.texi (Windows HOME): Add information regarding startup
        directory when invoking Emacs from a desktop shortcut.  (bug#7300)
  
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
 +
 +      * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
 +      (DVIPS): New variable.
 +      (.PHONY): Add html, ps.
 +      (html, emacs.html, ps, emacs.ps, emacs-xtra.ps): New targets.
 +      (clean): Delete html, ps files.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (EMACSSOURCES): Add emacsver.texi.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (VPATH): Remove.
 +      (infodir): Make it absolute.
 +      (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir.
 +
 +      * Makefile.in (dist): Anchor regexps.
 +
 +      * Makefile.in (EMACSSOURCES): Put emacs.texi first.
 +      ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi)
 +      (emacs-xtra.pdf): Use $<.
 +
 +      * Makefile.in (infoclean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.
 +      ($(infodir)/emacs): Use $mkinfodir instead of infodir.
 +
 +      * Makefile.in (distclean): Do not delete emacsver.texi.
 +      (dist): Remove reference to emacsver.texi.in.
 +      * emacsver.texi: New file, replacing emacsver.texi.in.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacsver.texi.in: New file.
 +      * emacs.texi: Set EMACSVER by including emacsver.texi.
 +      * Makefile.in (distclean): Delete emacsver.texi.
 +      (dist): Copy emacsver.texi.
 +      (EMACSSOURCES): Add emacsver.texi.
 +
 +      * ack.texi (Acknowledgments): No more b2m.c.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
 +      (emacs): Remove rule.
 +      (dist): No need to deal with the emacs rule any more.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (version): New, set by configure.
 +      (clean): Delete dist tar file.
 +      (dist): Use version in tar name.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (EMACS_XTRA): Add the main source file.
 +      (emacs-xtra.dvi, emacs-xtra.pdf): Remove explicit emacs-xtra.texi.
 +      (mostlyclean): No core files, reorder other files.
 +      (clean): Delete specific dvi and pdf files.
 +      (infoclean, dist): New rules.
 +      (maintainer-clean): Use infoclean.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (SHELL): Set it.
 +      (INFO_TARGETS, DVI_TARGETS): Remove variables.
 +      (info, dvi): Replace above variables with their expansions.
 +      (info): Move mkdir from here...
 +      ($(infodir)/emacs): ... to here (for parallel builds).
 +      (pdf): New target.
 +      ($(infodir)/emacs): Pass -o option to makeinfo.
 +      (.PHONY): Declare clean rules.
 +      (maintainer-clean): Delete dvi and pdf files.
 +      Guard against cd failures.  Use a more restrictive delete.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * misc.texi (Shell Mode): Remove reference to old function name.
 +
 +2010-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * maintaining.texi (VC Mode Line): Mention all the possible VC status
 +      indicator characters.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (top_srcdir): Remove unused variable.
 +
  2010-09-14  Glenn Morris  <rgm@gnu.org>
  
        * cal-xtra.texi (Fancy Diary Display): Emphasize that sort should be
        * calendar.texi (Appointments): Also updated when a diary include file
        is saved.
  
 -2010-09-12  Glenn Morris  <rgm@gnu.org>
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Bugs): Update the section intro.
        (Known Problems): New section.
        (Sending Patches): Bug fixes are best as responses to existing bugs.
        * emacs.texi (Known Problems): Add menu entry for new section.
  
 -2010-09-04  Chong Yidong  <cyd@stupidchicken.com>
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * xresources.texi: Untabify.
 +
 +2010-09-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * dired.texi (Dired Enter): Minor doc fix (Bug#6982).
  
 -2010-09-02  Glenn Morris  <rgm@gnu.org>
 +2010-09-06  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Saving Emacs Sessions): Mention desktop-path.  (Bug#6948)
  
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Cut/Paste Other App): Remove vut-buffer text.
 +
  2010-08-21  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Amusements): Mention bubbles and animate.
  
 +2010-07-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Visiting): Add more index entries for
 +      large-file-warning-threshold.
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Tool Bars): Add doc for tool-bar-position.
 +
  2010-06-23  Glenn Morris  <rgm@gnu.org>
  
        * abbrevs.texi, basic.texi, buffers.texi, building.texi, calendar.texi:
  
        * basic.texi (Inserting Text): Fix typo.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 23.2 released.
 +      * ack.texi (Acknowledgments):
 +      * emacs.texi (Acknowledgments): Update for notifications.el.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-31  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * dired.texi (Operating on Files): Mention encryption commands
 +      (Bug#6315).
 +
 +2010-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * basic.texi (Moving Point): Update due to renaming of commands bound
 +      to arrows.  Document bidi-aware behavior of C-<right> and C-<left>.
 +
 +2010-05-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Fringes): Document reversal of fringe arrows for R2L
 +      paragraphs.
 +      (Line Truncation): Fix wording for bidi display.
 +
 +      * basic.texi (Moving Point): Document bidi-aware behavior of the arrow
 +      keys.
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * building.texi (GDB Graphical Interface): Remove misleading comparison
        to an IDE (Bug#6128).
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * programs.texi (Man Page):
        * misc.texi (Invoking emacsclient):
        * mini.texi (Repetition):
        * mark.texi (Setting Mark): Fix typos.
  
 -2010-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * misc.texi (Printing): Document htmlfontify-buffer.
  
 -2010-04-21  Glenn Morris  <rgm@gnu.org>
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
  
        * calendar.texi (Displaying the Diary, Format of Diary File):
        Fix external cross-references for TeX format output.
  
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cmdargs.texi (Initial Options): Mention --chdir.
 +
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Tool Bars): Add tool-bar-style.
 +
 +2010-04-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Add SELinux support.
 +
  2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
  
        * programs.texi (Semantic): New node.
  
        * misc.texi (Gnus): Use the `C-h i' keybinding for info.
  
 -2010-04-16  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * emacs.texi (Acknowledgments): Remove duplicate.
  
        * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
  
 -2010-04-15  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * dired.texi (Misc Dired Features): Mention VC diff and log.
        * maintaining.texi (Old Revisions, VC Change Log):
        * custom.texi (Specifying File Variables, Directory Variables):
        Document new commands for manipulating local variable lists.
  
 -2010-04-09  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * trouble.texi (Contributing): Add cindex entry.
        Mention etc/CONTRIBUTE.
  
 -2010-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
  
        * mark.texi (Persistent Mark): Copyedits.  Replace undo example with
        query-replace (Bug#5774).
  
 +2010-04-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi, emacs.texi (Acknowledgments): Update for Org changes.
 +
 +2010-04-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Lucid Resources): Mention faceName for dialogs.
 +
 +2010-04-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Lucid Resources): Mention faceName to set Xft fonts.
 +
  2010-03-30  Eli Zaretskii  <eliz@gnu.org>
  
        * mule.texi (Input Methods): Mention "C-x 8 RET" and add a
        * basic.texi (Inserting Text): Add an index entry for "C-x 8 RET".
        Mention completion provided by `ucs-insert'.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * sending.texi (Sending Mail): Note variables that may need
        customizing.
        (Mail Sending): Expand discussion of send-mail-function.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        Document Message mode as the default mail mode.
  
  
        * emacs.texi (Top): Fix xrefs.
  
 -2010-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * maintaining.texi (VC With A Merging VCS): C-x v v now creates a
        repository if there is none.
        * misc.texi (Navigation): Document doc-view-continuous.
        (Shell Ring): Document new M-r binding.  M-s is no longer bound.
  
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Other Repeating Search): Remove line that `occur'
 +      can not handle multiline matches.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mule.texi (International): Mention support of bidirectional editing.
 +      (Bidirectional Editing): New section.
 +
 +2010-03-28  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * emacs.texi (Top): Update node names to those in building.texi.
 +
 +2010-03-27  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      doc/emacs/building.texi: Describe restored GDB/MI fuctionality removed by 2009-12-29T07:15:34Z!nickrob@snap.net.nz.
 +      doc/emacs/emacs.texi: Update node names for building.texi.
 +
  2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * ack.texi (Acknowledgments):
        * xresources.texi (Table of Resources):
        * mule.texi (Defining Fontsets, Charsets): Update xrefs.
  
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * custom.texi (Init Examples): Add xref to Locals.
  
  2009-06-23  Miles Bader  <miles@gnu.org>
  
 -      * display.texi (Scrolling): Document `recenter-redisplay'
 +      * display.texi (Scrolling): Document `recenter-redisplay'.
        (Temporary Face Changes): Document `text-scale-set'.
  
  2009-06-21  Chong Yidong  <cyd@stupidchicken.com>
        (Fortran Columns): Mention font-locking.
        (Fortran Abbrev): Word syntax not relevant with new-style abbrev.
  
 -2008-08-23  Johan Bockgard  <bojohan@muon>
 +2008-08-23  Johan Bockgård  <bojohan@muon>
  
        * basic.texi (Moving Point): Fix <prior>/<next> confusion.
  
  2005-03-05  Juri Linkov  <juri@jurta.org>
  
        * cmdargs.texi (Emacs Invocation): Add cindex
 -      "invocation (command line arguments)"
 +      "invocation (command line arguments)".
        (Misc X): Add -nbc, --no-blinking-cursor.
  
  2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; fill-column: 79
  ;; End:
  
 -  Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 -    2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 -    Free Software Foundation, Inc.
 +  Copyright (C) 1993-1999, 2001-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
diff --combined doc/emacs/dired.texi
index 914c9984c14162026137831f4648b4cffda427e8,0b3cd7aac0e3619dd054626cc910946076a6a53c..2f274d7a324add6132303dde7f91b4c5f4ea68ce
@@@ -1,5 -1,6 +1,5 @@@
  @c This is part of the Emacs manual.
 -@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
 -@c   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
  @c   Free Software Foundation, Inc.
  @c See file emacs.texi for copying conditions.
  @node Dired, Calendar/Diary, Rmail, Top
@@@ -23,7 -24,7 +23,7 @@@ files.  You first mark certain files i
  them with one command.
  
    The Dired-X package provides various extra features for Dired mode.
- @xref{Top, Dired-X,,dired-x, Dired Extra Version 2 User's Manual}.
+ @xref{Top, Dired-X,,dired-x, Dired Extra User's Manual}.
  
    You can also view a list of files in a directory with @kbd{C-x C-d}
  (@code{list-directory}).  Unlike Dired, this command does not allow
@@@ -686,34 -687,6 +686,34 @@@ suitable guess made using the variable
  Compress the specified files (@code{dired-do-compress}).  If the file
  appears to be a compressed file already, uncompress it instead.
  
 +@findex epa-dired-do-decrypt
 +@kindex :d @r{(Dired)}
 +@cindex decrypting files (in Dired)
 +@item :d
 +Decrypt the specified files (@code{epa-dired-do-decrypt}).
 +@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
 +
 +@findex epa-dired-do-verify
 +@kindex :v @r{(Dired)}
 +@cindex verifying digital signatures on files (in Dired)
 +@item :v
 +Verify digital signatures on the specified files (@code{epa-dired-do-verify}).
 +@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
 +
 +@findex epa-dired-do-sign
 +@kindex :s @r{(Dired)}
 +@cindex signing files (in Dired)
 +@item :s
 +Digitally sign the specified files (@code{epa-dired-do-sign}).
 +@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
 +
 +@findex epa-dired-do-encrypt
 +@kindex :e @r{(Dired)}
 +@cindex encrypting files (in Dired)
 +@item :e
 +Encrypt the specified files (@code{epa-dired-do-encrypt}).
 +@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
 +
  @findex dired-do-load
  @kindex L @r{(Dired)}
  @cindex loading several files (in Dired)
@@@ -1403,3 -1376,7 +1403,3 @@@ it onto a Dired buffer; this either mov
  to the file in that directory.  Precisely which action is taken is
  determined by the originating program.  Dragging files out of a Dired
  buffer is currently not supported.
 -
 -@ignore
 -   arch-tag: d105f9b9-fc1b-4c5f-a949-9b2cf3ca2fc1
 -@end ignore
diff --combined doc/lispintro/ChangeLog
index a6897fc4ec9f41c364d3c9422fab02079f9257ff,19bb3195d66a59bfd4f2abc76a0e08e181a51638..d2e6954025a3c073f4d37e34a285fba128151fc6
@@@ -1,64 -1,7 +1,68 @@@
 -2011-02-18  Eli Zaretskii  <eliz@gnu.org>
++2011-02-19  Eli Zaretskii  <eliz@gnu.org>
+       * emacs-lisp-intro.texi: Sync @dircategory with ../../info/dir.
 +2011-01-23  Werner Lemberg  <wl@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Now controlled by `configure'.
 +      (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 +      (ENVADD): New variable to control texi2dvi and texi2pdf.
 +
 +2010-11-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp-intro.texi: Rename the `count-words-region' example,
 +      since there is now a standard command of that name.
 +
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (.dvi.ps): Remove unnecessary suffix rule.
 +      (.PHONY): Add ps.
 +      (ps, emacs-lisp-intro.ps): New targets.
 +      (clean): Delete ps file.
 +      (MAKEINFO): Use --force like the other doc/ Makefiles do.
 +      Add explicit -I$srcdir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (VPATH): Remove.
 +      (infodir): Make it absolute.
 +      (mkinfodir, $(infodir)/eintr, infoclean): No need to cd $srcdir.
 +
 +      * Makefile.in (dist): Anchor regexps.
 +
 +      * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi)
 +      (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<.
 +
 +      * Makefile.in (infoclean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.
 +      ($(infodir)/eintr): Use $mkinfodir instead of infodir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, html, pdf, dist.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (version): New, set by configure.
 +      (clean): Delete dist tar file.
 +      (dist): Use version in tar name.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (SHELL): Use /bin/sh, like every other Makefile.in.
 +      (INFO_SOURCES, INFO_TARGETS, DVI_TARGETS): Remove variables.
 +      ($(infodir), html, pdf, infoclean, dist): New rules.
 +      (${infodir}/eintr): Ensure $infodir exists.  Use $@.
 +      (emacs-lisp-intro.dvi, emacs-lisp-intro.pdf, emacs-lisp-intro.html):
 +      Use $^.
 +      (.PHONY): Declare clean rules.
 +      (mostlyclean): Delete more temp files.
 +      (clean): Delete specific dvi, pdf and html files.
 +      (maintainer-clean): Use infoclean.
 +      (.NOEXPORT): Remove, unused by any other Makefile.in.
 +
  2010-09-21  Glenn Morris  <rgm@gnu.org>
  
        * cons-1.eps, cons-2.eps, cons-2a.eps, cons-3.eps, cons-4.eps:
  
        * Version 23.2 released.
  
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-02-16  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp-intro.texi: Fix typo in name of `find-tag' command.
@@@ -88,7 -27,8 +92,7 @@@
  
  2009-12-09  David Robinow  <drobinow@gmail.com>  (tiny change)
  
 -      * makefile.w32-in: Use parenthesis for macros for nmake
 -      compatibility.
 +      * makefile.w32-in: Use parenthesis for macros for nmake compatibility.
  
  2009-12-03  Glenn Morris  <rgm@gnu.org>
  
  
  2009-02-22  Karl Berry  <karl@gnu.org>
  
 -      * emacs-lisp-intro.texi (Default Configuration): fix dup word "by by".
 +      * emacs-lisp-intro.texi (Default Configuration): Fix dup word "by by".
  
  2009-02-20  Juanma Barranquero  <lekktu@gmail.com>
  
        (Simple Extension): Replace longer expression with
        `emacs-major-version'.  Remove comment about `number-to-string'
        function.
 -      (Miscellaneous): Add filename option, `-H', to `grep' example
 +      (Miscellaneous): Add filename option, `-H', to `grep' example.
        (debug, debug-on-entry): Replace `GNU Emacs 22' with `a recent
        GNU Emacs'.
        (edebug): More properly state where to place point for 'M-x
        (sentence-end): Specify `in English' for glyphs that end a sentence.
        Note that in GNU Emacs 22, the name refers to both a variable and a
        function.
 -      (fwd-sentence while loops): Write a function as one, not as a form
 +      (fwd-sentence while loops): Write a function as one, not as a form.
        (fwd-para let): Add `which' to sentence with `parstart' and `parsep'.
        (etags): Move sentences involving `find-tag' and sources.  State
        location of Emacs `src' directory.
  2006-08-21  Robert J. Chassell  <bob@rattlesnake.com>
  
        * emacs-lisp-intro.texi: Deleted in directory copy of texinfo.tex
 -        and pointed towards ../man/texinfo.tex so only one file
 -        needs updating.  Added comment of what to do when building on own.
 +      and pointed towards ../man/texinfo.tex so only one file
 +      needs updating.  Added comment of what to do when building on own.
  
        * texinfo.tex: Changed to version 2006-02-13.16
 -        to enable a DVI build using the more recent versions of TeX.
 +      to enable a DVI build using the more recent versions of TeX.
  
  2006-05-25  David Kastrup  <dak@gnu.org>
  
  2003-11-16  Kevin Ryde  <user42@zip.com.au>
  
        * emacs-lisp-intro.texi: [CVS commitment by <bob@rattlesnake.com>]
 -      Corrections to cross references,
 +      Corrections to cross references.
        (Interactive Options): elisp "interactive" -> "Using Interactive".
        (defvar and asterisk): Remove emacs "Edit Options" reference,
        edit-options is no longer described in the emacs manual.
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -      2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +  Copyright (C) 2001-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
 -;;; arch-tag: ee4f8e1f-e14c-4d2e-86de-4dd697e6f1c3
index 7b9ec75446b0061ce63945b7cb7b9867a695020f,4cce412b225cbfd824a814c1ee65f81034ca7a55..11ceea19eefe16c2c6089bc812b3a95050f0cf5e
  
  @c ----------------------------------------------------
  
- @dircategory Emacs
+ @dircategory GNU Emacs Lisp
  @direntry
  * Emacs Lisp Intro: (eintr).
                            A simple introduction to Emacs Lisp programming.
@@@ -228,7 -228,9 +228,7 @@@ people who are not programmers
  @sp 1
  Edition @value{edition-number}, @value{update-date}
  @sp 1
 -Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1997, 2001,
 -   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 -   Free Software Foundation, Inc.
 +Copyright @copyright{} 1990-1995, 1997, 2001-2011 Free Software Foundation, Inc.
  @sp 1
  
  @iftex
@@@ -702,25 -704,23 +702,25 @@@ Regular Expression Searche
  * fwd-para while::              The forward motion @code{while} loop.
  
  Counting: Repetition and Regexps
 +@set COUNT-WORDS count-words-example
 +@c Length of variable name chosen so that things still line up when expanded.
  
  * Why Count Words::
 -* count-words-region::          Use a regexp, but find a problem.
 +* @value{COUNT-WORDS}::         Use a regexp, but find a problem.
  * recursive-count-words::       Start with case of no words in region.
  * Counting Exercise::
  
 -The @code{count-words-region} Function
 +The @code{@value{COUNT-WORDS}} Function
  
 -* Design count-words-region::   The definition using a @code{while} loop.
 -* Whitespace Bug::              The Whitespace Bug in @code{count-words-region}.
 +* Design @value{COUNT-WORDS}::  The definition using a @code{while} loop.
 +* Whitespace Bug::              The Whitespace Bug in @code{@value{COUNT-WORDS}}.
  
  Counting Words in a @code{defun}
  
  * Divide and Conquer::
  * Words and Symbols::           What to count?
  * Syntax::                      What constitutes a word or symbol?
 -* count-words-in-defun::        Very like @code{count-words}.
 +* count-words-in-defun::        Very like @code{@value{COUNT-WORDS}}.
  * Several defuns::              Counting several defuns in a file.
  * Find a File::                 Do you want to look at a file?
  * lengths-list-file::           A list of the lengths of many definitions.
@@@ -13829,37 -13829,35 +13829,37 @@@ word count commands using @code{while} 
  
  @menu
  * Why Count Words::
 -* count-words-region::          Use a regexp, but find a problem.
 +* @value{COUNT-WORDS}::          Use a regexp, but find a problem.
  * recursive-count-words::       Start with case of no words in region.
  * Counting Exercise::
  @end menu
  
 -@node Why Count Words, count-words-region, Counting Words, Counting Words
 +@node Why Count Words, @value{COUNT-WORDS}, Counting Words, Counting Words
  @ifnottex
  @unnumberedsec Counting words
  @end ifnottex
  
 -The standard Emacs distribution contains a function for counting the
 -number of lines within a region.  However, there is no corresponding
 -function for counting words.
 +The standard Emacs distribution contains functions for counting the
 +number of lines and words within a region.
  
  Certain types of writing ask you to count words.  Thus, if you write
  an essay, you may be limited to 800 words; if you write a novel, you
 -may discipline yourself to write 1000 words a day.  It seems odd to me
 -that Emacs lacks a word count command.  Perhaps people use Emacs
 -mostly for code or types of documentation that do not require word
 -counts; or perhaps they restrict themselves to the operating system
 -word count command, @code{wc}.  Alternatively, people may follow
 -the publishers' convention and compute a word count by dividing the
 -number of characters in a document by five.  In any event, here are
 -commands to count words.
 -
 -@node count-words-region, recursive-count-words, Why Count Words, Counting Words
 +may discipline yourself to write 1000 words a day.  It seems odd, but
 +for a long time, Emacs lacked a word count command.  Perhaps people used
 +Emacs mostly for code or types of documentation that did not require
 +word counts; or perhaps they restricted themselves to the operating
 +system word count command, @code{wc}.  Alternatively, people may have
 +followed the publishers' convention and computed a word count by
 +dividing the number of characters in a document by five.
 +
 +There are many ways to implement a command to count words.  Here are
 +some examples, which you may wish to compare with the standard Emacs
 +command, @code{count-words-region}.
 +
 +@node @value{COUNT-WORDS}, recursive-count-words, Why Count Words, Counting Words
  @comment  node-name,  next,  previous,  up
 -@section The @code{count-words-region} Function
 -@findex count-words-region
 +@section The @code{@value{COUNT-WORDS}} Function
 +@findex @value{COUNT-WORDS}
  
  A word count command could count words in a line, paragraph, region,
  or buffer.  What should the command cover?  You could design the
@@@ -13867,7 -13865,7 +13867,7 @@@ command to count the number of words i
  the Emacs tradition encourages flexibility---you may want to count
  words in just a section, rather than all of a buffer.  So it makes
  more sense to design the command to count the number of words in a
 -region.  Once you have a @code{count-words-region} command, you can,
 +region.  Once you have a command to count words in a region, you can,
  if you wish, count words in a whole buffer by marking it with
  @w{@kbd{C-x h}} (@code{mark-whole-buffer}).
  
@@@ -13878,13 -13876,13 +13878,13 @@@ region.  This means that word counting 
  or to a @code{while} loop.
  
  @menu
 -* Design count-words-region::   The definition using a @code{while} loop.
 -* Whitespace Bug::              The Whitespace Bug in @code{count-words-region}.
 +* Design @value{COUNT-WORDS}::  The definition using a @code{while} loop.
 +* Whitespace Bug::              The Whitespace Bug in @code{@value{COUNT-WORDS}}.
  @end menu
  
 -@node Design count-words-region, Whitespace Bug, count-words-region, count-words-region
 +@node Design @value{COUNT-WORDS}, Whitespace Bug, @value{COUNT-WORDS}, @value{COUNT-WORDS}
  @ifnottex
 -@unnumberedsubsec Designing @code{count-words-region}
 +@unnumberedsubsec Designing @code{@value{COUNT-WORDS}}
  @end ifnottex
  
  First, we will implement the word count command with a @code{while}
@@@ -13907,9 -13905,7 +13907,9 @@@ What we need to do is fill in the slots
  
  The name of the function should be self-explanatory and similar to the
  existing @code{count-lines-region} name.  This makes the name easier
 -to remember.  @code{count-words-region} is a good choice.
 +to remember.  @code{count-words-region} is the obvious choice.  Since
 +that name is now used for the standard Emacs command to count words, we
 +will name our implementation @code{@value{COUNT-WORDS}}.
  
  The function counts words within a region.  This means that the
  argument list must contain symbols that are bound to the two
@@@ -13927,7 -13923,7 +13927,7 @@@ first, to set up conditions under whic
  count words, second, to run the @code{while} loop, and third, to send
  a message to the user.
  
 -When a user calls @code{count-words-region}, point may be at the
 +When a user calls @code{@value{COUNT-WORDS}}, point may be at the
  beginning or the end of the region.  However, the counting process
  must start at the beginning of the region.  This means we will want
  to put point there if it is not already there.  Executing
@@@ -14019,7 -14015,7 +14019,7 @@@ All this leads to the following functio
  @smallexample
  @group
  ;;; @r{First version; has bugs!}
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "Print number of words in the region.
  Words are defined as at least one word-constituent
  character followed by at least one character that
@@@ -14060,14 -14056,14 +14060,14 @@@ table determines which characters thes
  @noindent
  As written, the function works, but not in all circumstances.
  
 -@node Whitespace Bug,  , Design count-words-region, count-words-region
 +@node Whitespace Bug,  , Design @value{COUNT-WORDS}, @value{COUNT-WORDS}
  @comment  node-name,  next,  previous,  up
 -@subsection The Whitespace Bug in @code{count-words-region}
 +@subsection The Whitespace Bug in @code{@value{COUNT-WORDS}}
  
 -The @code{count-words-region} command described in the preceding
 +The @code{@value{COUNT-WORDS}} command described in the preceding
  section has two bugs, or rather, one bug with two manifestations.
  First, if you mark a region containing only whitespace in the middle
 -of some text, the @code{count-words-region} command tells you that the
 +of some text, the @code{@value{COUNT-WORDS}} command tells you that the
  region contains one word!  Second, if you mark a region containing
  only whitespace at the end of the buffer or the accessible portion of
  a narrowed buffer, the command displays an error message that looks
@@@ -14088,7 -14084,7 +14088,7 @@@ parenthesis and type @kbd{C-x C-e} to i
  @smallexample
  @group
  ;; @r{First version; has bugs!}
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "Print number of words in the region.
  Words are defined as at least one word-constituent character followed
  by at least one character that is not a word-constituent.  The buffer's
@@@ -14127,12 -14123,12 +14127,12 @@@ syntax table determines which character
  If you wish, you can also install this keybinding by evaluating it:
  
  @smallexample
 -(global-set-key "\C-c=" 'count-words-region)
 +(global-set-key "\C-c=" '@value{COUNT-WORDS})
  @end smallexample
  
  To conduct the first test, set mark and point to the beginning and end
  of the following line and then type @kbd{C-c =} (or @kbd{M-x
 -count-words-region} if you have not bound @kbd{C-c =}):
 +@value{COUNT-WORDS}} if you have not bound @kbd{C-c =}):
  
  @smallexample
      one   two  three
@@@ -14143,7 -14139,7 +14143,7 @@@ Emacs will tell you, correctly, that th
  
  Repeat the test, but place mark at the beginning of the line and place
  point just @emph{before} the word @samp{one}.  Again type the command
 -@kbd{C-c =} (or @kbd{M-x count-words-region}).  Emacs should tell you
 +@kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}).  Emacs should tell you
  that the region has no words, since it is composed only of the
  whitespace at the beginning of the line.  But instead Emacs tells you
  that the region has one word!
@@@ -14152,7 -14148,7 +14152,7 @@@ For the third test, copy the sample lin
  @file{*scratch*} buffer and then type several spaces at the end of the
  line.  Place mark right after the word @samp{three} and point at the
  end of line.  (The end of the line will be the end of the buffer.)
 -Type @kbd{C-c =} (or @kbd{M-x count-words-region}) as you did before.
 +Type @kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}) as you did before.
  Again, Emacs should tell you that the region has no words, since it is
  composed only of the whitespace at the end of the line.  Instead,
  Emacs displays an error message saying @samp{Search failed}.
@@@ -14161,7 -14157,7 +14161,7 @@@ The two bugs stem from the same problem
  
  Consider the first manifestation of the bug, in which the command
  tells you that the whitespace at the beginning of the line contains
 -one word.  What happens is this: The @code{M-x count-words-region}
 +one word.  What happens is this: The @code{M-x @value{COUNT-WORDS}}
  command moves point to the beginning of the region.  The @code{while}
  tests whether the value of point is smaller than the value of
  @code{end}, which it is.  Consequently, the regular expression search
@@@ -14195,7 -14191,7 +14195,7 @@@ an error if the search fails.  The opti
  repeat count.  (In Emacs, you can see a function's documentation by
  typing @kbd{C-h f}, the name of the function, and then @key{RET}.)
  
 -In the @code{count-words-region} definition, the value of the end of
 +In the @code{@value{COUNT-WORDS}} definition, the value of the end of
  the region is held by the variable @code{end} which is passed as an
  argument to the function.  Thus, we can add @code{end} as an argument
  to the regular expression search expression:
  (re-search-forward "\\w+\\W*" end)
  @end smallexample
  
 -However, if you make only this change to the @code{count-words-region}
 +However, if you make only this change to the @code{@value{COUNT-WORDS}}
  definition and then test the new version of the definition on a
  stretch of whitespace, you will receive an error message saying
  @samp{Search failed}.
@@@ -14235,7 -14231,7 +14235,7 @@@ true-or-false-test tests true because t
  than the value of end, since the @code{re-search-forward} expression
  did not move point. @dots{} and the cycle repeats @dots{}
  
 -The @code{count-words-region} definition requires yet another
 +The @code{@value{COUNT-WORDS}} definition requires yet another
  modification, to cause the true-or-false-test of the @code{while} loop
  to test false if the search fails.  Put another way, there are two
  conditions that must be satisfied in the true-or-false-test before the
@@@ -14269,17 -14265,17 +14269,17 @@@ succeeds and as a side effect moves poi
  found, point is moved through the region.  When the search expression
  fails to find another word, or when point reaches the end of the
  region, the true-or-false-test tests false, the @code{while} loop
 -exits, and the @code{count-words-region} function displays one or
 +exits, and the @code{@value{COUNT-WORDS}} function displays one or
  other of its messages.
  
 -After incorporating these final changes, the @code{count-words-region}
 +After incorporating these final changes, the @code{@value{COUNT-WORDS}}
  works without bugs (or at least, without bugs that I have found!).
  Here is what it looks like:
  
  @smallexample
  @group
  ;;; @r{Final version:} @code{while}
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "Print number of words in the region."
    (interactive "r")
    (message "Counting words in region ... ")
  @end group
  @end smallexample
  
 -@node recursive-count-words, Counting Exercise, count-words-region, Counting Words
 +@node recursive-count-words, Counting Exercise, @value{COUNT-WORDS}, Counting Words
  @comment  node-name,  next,  previous,  up
  @section Count Words Recursively
  @cindex Count words recursively
  You can write the function for counting words recursively as well as
  with a @code{while} loop.  Let's see how this is done.
  
 -First, we need to recognize that the @code{count-words-region}
 +First, we need to recognize that the @code{@value{COUNT-WORDS}}
  function has three jobs: it sets up the appropriate conditions for
  counting to occur; it counts the words in the region; and it sends a
  message to the user telling how many words there are.
@@@ -14337,7 -14333,7 +14337,7 @@@ other.  One function will set up the co
  message; the other will return the word count.
  
  Let us start with the function that causes the message to be displayed.
 -We can continue to call this @code{count-words-region}.
 +We can continue to call this @code{@value{COUNT-WORDS}}.
  
  This is the function that the user will call.  It will be interactive.
  Indeed, it will be similar to our previous versions of this
@@@ -14351,7 -14347,7 +14351,7 @@@ previous versions
  @smallexample
  @group
  ;; @r{Recursive version; uses regular expression search}
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "@var{documentation}@dots{}"
    (@var{interactive-expression}@dots{})
  @end group
@@@ -14392,7 -14388,7 +14392,7 @@@ Using @code{let}, the function definiti
  
  @smallexample
  @group
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "Print number of words in the region."
    (interactive "r")
  @end group
@@@ -14488,7 -14484,7 +14488,7 @@@ Thus, the do-again-test should look lik
  Note that the search expression is part of the do-again-test---the
  function returns @code{t} if its search succeeds and @code{nil} if it
  fails.  (@xref{Whitespace Bug, , The Whitespace Bug in
 -@code{count-words-region}}, for an explanation of how
 +@code{@value{COUNT-WORDS}}}, for an explanation of how
  @code{re-search-forward} works.)
  
  The do-again-test is the true-or-false test of an @code{if} clause.
@@@ -14661,7 -14657,7 +14661,7 @@@ The wrapper
  @smallexample
  @group
  ;;; @r{Recursive version}
 -(defun count-words-region (beginning end)
 +(defun @value{COUNT-WORDS} (beginning end)
    "Print number of words in the region.
  @end group
  
@@@ -14706,11 -14702,11 +14706,11 @@@ exclamation mark, and question mark.  D
  
  Our next project is to count the number of words in a function
  definition.  Clearly, this can be done using some variant of
 -@code{count-word-region}.  @xref{Counting Words, , Counting Words:
 +@code{@value{COUNT-WORDS}}.  @xref{Counting Words, , Counting Words:
  Repetition and Regexps}.  If we are just going to count the words in
  one definition, it is easy enough to mark the definition with the
  @kbd{C-M-h} (@code{mark-defun}) command, and then call
 -@code{count-word-region}.
 +@code{@value{COUNT-WORDS}}.
  
  However, I am more ambitious: I want to count the words and symbols in
  every definition in the Emacs sources and then print a graph that
@@@ -14723,7 -14719,7 +14723,7 @@@ and this will tell
  * Divide and Conquer::
  * Words and Symbols::           What to count?
  * Syntax::                      What constitutes a word or symbol?
 -* count-words-in-defun::        Very like @code{count-words}.
 +* count-words-in-defun::        Very like @code{@value{COUNT-WORDS}}.
  * Several defuns::              Counting several defuns in a file.
  * Find a File::                 Do you want to look at a file?
  * lengths-list-file::           A list of the lengths of many definitions.
@@@ -14797,11 -14793,11 +14797,11 @@@ of ten words and symbols
  @noindent
  However, if we mark the @code{multiply-by-seven} definition with
  @kbd{C-M-h} (@code{mark-defun}), and then call
 -@code{count-words-region} on it, we will find that
 -@code{count-words-region} claims the definition has eleven words, not
 +@code{@value{COUNT-WORDS}} on it, we will find that
 +@code{@value{COUNT-WORDS}} claims the definition has eleven words, not
  ten!  Something is wrong!
  
 -The problem is twofold: @code{count-words-region} does not count the
 +The problem is twofold: @code{@value{COUNT-WORDS}} does not count the
  @samp{*} as a word, and it counts the single symbol,
  @code{multiply-by-seven}, as containing three words.  The hyphens are
  treated as if they were interword spaces rather than intraword
@@@ -14809,8 -14805,8 +14809,8 @@@ connectors: @samp{multiply-by-seven} i
  @samp{multiply by seven}.
  
  The cause of this confusion is the regular expression search within
 -the @code{count-words-region} definition that moves point forward word
 -by word.  In the canonical version of @code{count-words-region}, the
 +the @code{@value{COUNT-WORDS}} definition that moves point forward word
 +by word.  In the canonical version of @code{@value{COUNT-WORDS}}, the
  regexp is:
  
  @smallexample
@@@ -14843,8 -14839,8 +14843,8 @@@ Syntax tables specify which characters 
  Usually, a hyphen is not specified as a `word constituent character'.
  Instead, it is specified as being in the `class of characters that are
  part of symbol names but not words.'  This means that the
 -@code{count-words-region} function treats it in the same way it treats
 -an interword white space, which is why @code{count-words-region}
 +@code{@value{COUNT-WORDS}} function treats it in the same way it treats
 +an interword white space, which is why @code{@value{COUNT-WORDS}}
  counts @samp{multiply-by-seven} as three words.
  
  There are two ways to cause Emacs to count @samp{multiply-by-seven} as
@@@ -14857,7 -14853,7 +14857,7 @@@ most common character within symbols th
  constituent character; there are others, too.
  
  Alternatively, we can redefine the regular expression used in the
 -@code{count-words} definition so as to include symbols.  This
 +@code{@value{COUNT-WORDS}} definition so as to include symbols.  This
  procedure has the merit of clarity, but the task is a little tricky.
  
  @need 1200
@@@ -14914,7 -14910,7 +14914,7 @@@ Here is the full regular expression
  @cindex Counting words in a @code{defun}
  
  We have seen that there are several ways to write a
 -@code{count-word-region} function.  To write a
 +@code{count-words-region} function.  To write a
  @code{count-words-in-defun}, we need merely adapt one of these
  versions.
  
@@@ -15048,7 -15044,7 +15048,7 @@@ Put together, the @code{count-words-in-
  How to test this?  The function is not interactive, but it is easy to
  put a wrapper around the function to make it interactive; we can use
  almost the same code as for the recursive version of
 -@code{count-words-region}:
 +@code{@value{COUNT-WORDS}}:
  
  @smallexample
  @group
@@@ -18889,7 -18885,7 +18889,7 @@@ Lisp Reference Manual}
  
  @itemize @bullet
  @item
 -Install the @code{count-words-region} function and then cause it to
 +Install the @code{@value{COUNT-WORDS}} function and then cause it to
  enter the built-in debugger when you call it.  Run the command on a
  region containing two words.  You will need to press @kbd{d} a
  remarkable number of times.  On your system, is a `hook' called after
@@@ -18898,7 -18894,7 +18898,7 @@@ Overview, , Command Loop Overview, elis
  Manual}.)
  
  @item
 -Copy @code{count-words-region} into the @file{*scratch*} buffer,
 +Copy @code{@value{COUNT-WORDS}} into the @file{*scratch*} buffer,
  instrument the function for Edebug, and walk through its execution.
  The function does not need to have a bug, although you can introduce
  one if you wish.  If the function lacks a bug, the walk-through
@@@ -18913,7 -18909,7 +18913,7 @@@ for commands made outside of the Edebu
  @item
  In the Edebug debugging buffer, use the @kbd{p}
  (@code{edebug-bounce-point}) command to see where in the region the
 -@code{count-words-region} is working.
 +@code{@value{COUNT-WORDS}} is working.
  
  @item
  Move point to some spot further down the function and then type the
@@@ -22276,3 -22272,6 +22276,3 @@@ airplane
  
  @bye
  
 -@ignore
 -   arch-tag: da1a2154-531f-43a8-8e33-fc7faad10acf
 -@end ignore
diff --combined doc/lispref/ChangeLog
index 0f1f0425478a6ec9deda7d84d3eb8a70bb1fb43a,9be1104a2564e3a292357c52c8c31f387a7e4e8b..90eed004d390d4fcf66a1e66902031f910aa0659
@@@ -1,23 -1,22 +1,43 @@@
 -2011-02-18  Eli Zaretskii  <eliz@gnu.org>
++2011-02-19  Eli Zaretskii  <eliz@gnu.org>
+       * elisp.texi: Sync @dircategory with ../../info/dir.
+       * files.texi (Visiting Functions): Document find-file-literally,
+       both the command and the variable.
+       * variables.texi (Creating Buffer-Local): Explain the meaning of
+       permanent local variables.
 -2011-02-18  Glenn Morris  <rgm@gnu.org>
++      * files.texi (Visiting Functions): Document find-file-literally,
++      both the command and the variable.
++
++      * variables.texi (Creating Buffer-Local): Explain the meaning of
++      permanent local variables.
++
++2011-02-19  Glenn Morris  <rgm@gnu.org>
+       * keymaps.texi (Remapping Commands): Mention how to undo it.
 +2011-02-09  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * loading.texi (Hooks for Loading): Remove unnecessary advice
 +      about eval-after-load (Bug#7986).
 +
  2011-02-05  Chong Yidong  <cyd@stupidchicken.com>
  
        * commands.texi (Accessing Mouse): Note that a header line is not
        included in the row of posn-col-row.
  
 +2011-02-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * modes.texi (Major Mode Conventions): Add face guidelines.
 +      (Faces for Font Lock): List faces in order of prominence.
 +
 +2011-02-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      format-time-string now supports subsecond time stamp resolution
 +      * os.texi (Time Parsing): Document %N.
 +
  2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
  
        * vol1.texi (Top):
        * keymaps.texi (Defining Menus): Add "menu item" and "extended
        menu item" concept index entries (Bug#7805).
  
 -2011-01-23  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (texinfodir): New variable.
 +      (usermanualdir): Remove as redundant with $(emacsdir).
 +      (MAKEINFO): Remove options, leave only program name.
 +      (MAKEINFO_OPTS): New variable.
 +      (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
 +
 +2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
              Richard Kim  <emacs18@gmail.com>
  
        * loading.texi (Library Search): Document list-load-path-shadows
        (Bug#7757).
  
 -2011-01-23  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
  
        * searching.texi (Regexp Special): Remove outdated discussion of
        character sets (Bug#7780).
  
 -2011-01-22  Chong Yidong  <cyd@stupidchicken.com>
 -
        * frames.texi (Pop-Up Menus): Document where menu title comes
        from (Bug#7684).
  
 -2011-01-22  Glenn Morris  <rgm@gnu.org>
 +2011-01-25  Glenn Morris  <rgm@gnu.org>
  
        * display.texi (Making Buttons): Mention limitation of text buttons.
  
 -2011-01-08  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-23  Werner Lemberg  <wl@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Now controlled by `configure'.
 +      (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 +      (ENVADD): New variable to control texi2dvi and texi2pdf.
 +
 +2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
  
        * files.texi (Directory Names): Move directory-abbrev-alist doc to
        Emacs manual.
  
 -2011-01-07  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-15  Eli Zaretskii  <eliz@gnu.org>
  
        * files.texi (Directory Names): Explain why FROM in
        directory-abbrev-alist should begin with \`.  (Bug#7777)
  
 -2010-12-25  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * loading.texi (Hooks for Loading): Adjust doc of eval-after-load.
 +
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
        * modes.texi (Emulating Mode Line): Fix last change.
  
 -2010-12-18  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
        * modes.texi (Emulating Mode Line): Update documentation of
        format-mode-line according to changes that fixed bug #7587.
  
 -2010-12-11  Eli Zaretskii  <eliz@gnu.org>
 +2010-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Derived Modes): Mention prog-mode.
 +
 +      * keymaps.texi (Simple Menu Items, Extended Menu Items): Remove mention
 +      of the key-binding-data cache since we don't use it any more.
 +
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * processes.texi (Shell Arguments):
        * strings.texi (Creating Strings): Don't mention "shell commands";
        * processes.texi (Shell Arguments): Fix documentation of
        `split-string-and-unquote'.  Add indexing.  (Bug#7563)
  
 -2010-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * modes.texi (Auto-Indentation): New section to document SMIE.
        (Major Mode Conventions):
        * text.texi (Mode-Specific Indent): Refer to it.
  
 -2010-12-04  Eli Zaretskii  <eliz@gnu.org>
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Other Display Specs): Document left-fringe and
        right-fringe display specs.
  
 -2010-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * backups.texi (Making Backups):
        * modes.texi (Example Major Modes): Use recommended coding style.
        (Major Mode Basics, Derived Modes): Encourge more strongly use of
        define-derived-mode.  Mention completion-at-point-functions.
  
 -2010-11-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
  
        * nonascii.texi (Converting Representations):
        Document byte-to-string.
  
 +2010-12-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * buffers.texi (Modification Time):
 +      verify-visited-file-modtime now defaults to the current buffer.
 +
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * nonascii.texi (Converting Representations): Document byte-to-string.
 +
        * strings.texi (Creating Strings): Don't mention semi-obsolete
        function char-to-string.
        (String Conversion): Shorten discussion of semi-obsolete function
        * functions.texi (Mapping Functions): Use string instead of
        char-to-string in examples.
  
 -2010-11-20  Chong Yidong  <cyd@stupidchicken.com>
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
  
        * text.texi (Kill Functions, Kill Functions)
        (Low-Level Kill Ring, Low-Level Kill Ring): Remove obsolete
        * variables.texi (Defining Variables): Change "pi" example to
        "float-pi".
  
 -2010-11-12  Eli Zaretskii  <eliz@gnu.org>
 +2010-11-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * commands.texi (Click Events): Document the values of X, Y and
 +      COL, ROW in the event's position, when the click is on the header
 +      or mode line, on the fringes, or in the margins.
 +
 +2010-11-17  Eli Zaretskii  <eliz@gnu.org>
  
        * customize.texi (Composite Types): Lower-case index entry.
  
        * loading.texi (How Programs Do Loading):
        Document load-file-name.  (Bug#7346)
  
 -2010-11-10  Glenn Morris  <rgm@gnu.org>
 +2010-11-17  Glenn Morris  <rgm@gnu.org>
  
        * text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
  
 -2010-10-27  Glenn Morris  <rgm@gnu.org>
 +2010-11-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Usual Display): Characters with no fonts are not
 +      necessarily displayed as empty boxes.
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * maps.texi (Standard Keymaps): Update File menu description.
  
 -2010-10-22  Eli Zaretskii  <eliz@gnu.org>
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
 +
 +2010-10-24  Eli Zaretskii  <eliz@gnu.org>
  
        * display.texi (Window Systems): Deprecate use of window-system as
        a predicate.
  
 -2010-09-05  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-10-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * help.texi (Documentation Basics): Remove mentions of digest-doc and
 +      sorted-doc.
 +
 +2010-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * os.texi (Dynamic Libraries): New node, with slightly modified
 +      text deleted from "Image Formats".
 +      (System Interface): Add @menu entry for "Dynamic Libraries".
 +
 +      * display.texi (Image Formats): Remove description of
 +      image-library-alist.  (Renamed in 2010-10-13T14:50:06Z!lekktu@gmail.com.)
 +
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * book-spine.texinfo: Rename to book-spine.texi.
 +
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
 +
 +      * Makefile.in (DVIPS): New variable.
 +      (.PHONY): Add html, ps.
 +      (html, elisp.html, ps, elisp.ps): New targets.
 +      (clean): Delete html, ps files.
 +      ($(infodir)/elisp): Remove unnecessary includes.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (emacsdir): New variable.
 +      (srcs): Add emacsver.texi.
 +      ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (VPATH): Remove.
 +      (infodir): Make it absolute.
 +      (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
 +
 +      * Makefile.in (dist): Anchor regexps.
 +
 +      * Makefile.in (srcs): Put elisp.texi first.
 +      ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
 +
 +      * Makefile.in (infoclean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.
 +      ($(infodir)/elisp): Use $mkinfodir instead of infodir.
 +
 +      * Makefile.in (dist): Remove reference to emacsver.texi.in.
 +      Also copy emacsver.texi, and edit $emacsdir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (emacsdir): New variable.
 +      (MAKEINFO): Add -I $emacsdir.
 +      (dist): Copy emacsver.texi.
 +      (srcs): Add emacsver.texi.
 +
 +      * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
 +      Set EMACSVER by including emacsver.texi.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (version): New, set by configure.
 +      (clean): Delete dist tar file.
 +      (dist): Use version in tar name.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in: Rearrange to more closely resemble doc/emacs/Makefile.
 +      (INSTALL_INFO): Remove unused variable.
 +      (mostlyclean, infoclean, dist): New rules.
 +      (clean): Delete dvi and pdf files.
 +      (maintainer-clean): Remove elisp.oaux, use infoclean.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (dvi, pdf, $(infodir)): New targets.
 +      ($(infodir)/elisp): Ensure target directory exists.  Use $@.
 +      Fix -I typo.
 +      (clean): No 'make.out' or 'core' files.
 +      (.PHONY): Declare clean rules.
 +      (maintainer-clean): Delete pdf file.  Guard against cd failures.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.texi (File Name Components): Remove ignored section about
 +      deleted variable directory-sep-char.
 +
 +2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): New defopt
 +      remote-file-name-inhibit-cache.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi (Killing Emacs): Hook now runs in batch mode.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * text.texi (Special Properties): Clarify when modification-hooks run.
 +
 +2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.texi (Syntax Flags): Document new `c' flag.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * display.texi (ImageMagick Images): General cleanup.
 +
 +2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
  
        * files.texi (Directory Names): Use \` rather than ^.
  
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * text.texi (Low-Level Kill Ring):
 +      * frames.texi (Window System Selections): Remove cut buffer
 +      documentation.
 +
 +2010-08-28  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Fringe Size/Pos): Add a cross-reference to "Layout
 +      Parameters", where the default fringe width is described.
 +
 +      * frames.texi (Window Frame Parameters, Basic Parameters)
 +      (Position Parameters, Layout Parameters, Management Parameters)
 +      (Cursor Parameters, Font and Color Parameters): Add indexing for
 +      frame parameters.  (Bug#6929)
 +
 +2010-08-25  Tom Tromey  <tromey@redhat.com>
 +
 +      * vol2.texi (Top): Update.
 +      * vol1.texi (Top): Update.
 +      * tips.texi (Library Headers): Mention Package-Version and
 +      Package-Requires.
 +      * package.texi: New file.
 +      * os.texi (System Interface): Update pointers.
 +      * elisp.texi (Top): Link to new nodes.  Include package.texi.
 +      * anti.texi (Antinews): Update pointers.
 +
 +2010-08-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * processes.texi (Filter Functions): Fix last change.
 +
 +2010-08-24  Markus Triska  <triska@gmx.at>
 +
 +      * processes.texi (Filter Functions): Use `buffer-live-p' instead
 +      of `buffer-name' in the main text as well as in the example
 +      (Bug#3098).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * nonascii.texi (Text Representations):
 +      * loading.texi (Loading Non-ASCII):
 +      * compile.texi (Byte Compilation): Don't mention obsolete
 +      --unibyte command-line argument.
 +
  2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
  
        * modes.texi (Defining Minor Modes): Doc fix (Bug#6880).
  
 -2010-08-19  Chong Yidong  <cyd@stupidchicken.com>
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
  
        * objects.texi (Bool-Vector Type): Minor definition tweak (Bug#6878).
  
 -2010-08-02  Christoph  <cschol2112@googlemail.com>
 +2010-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * commands.texi (Misc Events): Add cross-references to where
 +      POSITION of a mouse event is described in detail.
 +
 +2010-08-08  Christoph  <cschol2112@googlemail.com>
  
        * control.texi (Handling Errors) <error-message-string>: Fix arg name.
  
 -2010-07-29  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * modes.texi (Defining Minor Modes): Use C-backspace, not C-delete.
        Suggested by Štěpán Němec <stepnem@gmail.com>.
  
 -2010-07-28  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * minibuf.texi (High-Level Completion): Document args of
        `read-buffer-function' (bug#5625).
  
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Layout Parameters): Add doc for tool-bar-position.
 +
 +2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * processes.texi (Process Information): Explain process property
 +      `remote-tty'.
 +
  2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
  
        * modes.texi (Defining Minor Modes): Use C-delete in examples,
        instead of "\C-\^?" (bug#6334).
  
 -2010-07-21  Juanma Barranquero  <lekktu@gmail.com>
 -
        * text.texi (Special Properties): Fix typo.
  
 +2010-07-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * internals.texi (Writing Emacs Primitives): Adapt to ANSI C
 +      calling sequences, which are now the standard.
 +
  2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * text.texi (Undo): Clarify command loop behavior (Bug#2433).
  
  2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * errors.texi (Standard Errors): Remove unnecessary markup
 -      (Bug#6461).
 +      * errors.texi (Standard Errors): Remove unnecessary markup (Bug#6461).
  
  2010-06-02  Chong Yidong  <cyd@stupidchicken.com>
  
        * minibuf.texi (Basic Completion): Document completion-boundaries.
        (Programmed Completion): Document the new fourth method for boundaries.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * Version 23.2 released.
 +      * display.texi (Image Cache): Update documentation about image caching.
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * windows.texi (Textual Scrolling):
        * tips.texi (Coding Conventions):
        * loading.texi (Where Defined):
        * edebug.texi (Instrumenting): Fix typos.
  
 -2010-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
        * keymaps.texi (Menu Bar): Document :advertised-binding property.
  
  
        * elisp.texi (Top): Update node description.
  
 +2010-05-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * nonascii.texi (Character Properties):
 +      Document unicode-category-table.  Add an index entry for Unicode
 +      general category.
 +
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * locals.texi (Standard Buffer-Local Variables):
 +      Remove @ignore'd reference to `direction-reversed'.
 +
  2010-04-14  Juri Linkov  <juri@jurta.org>
  
        Fix @deffn without category.
  
        * frames.texi (Cursor Parameters): Fix typo.  (Bug#5760)
  
 -2010-03-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * processes.texi (Network Processes): Document seqpacket type.
  
 +2010-03-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * os.texi (System Environment): Do not mention lynxos.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-06  Chong Yidong  <cyd@stupidchicken.com>
  
        * objects.texi (Integer Type): Take note of the read syntax
  2005-02-05  Eli Zaretskii  <eliz@gnu.org>
  
        * frames.texi (Color Names): Add pointer to the X docs about RGB
 -      color specifications.  Improve indexing
 +      color specifications.  Improve indexing.
        (Text Terminal Colors): Replace the description of RGB values by
        an xref to "Color Names".
  
        * minibuf.texi (Reading File Names): read-file-name has new
        arg PREDICATE.  New function read-directory-name.
  
 -      * macros.texi (Defining Macros): Give definition of `declare'
 +      * macros.texi (Defining Macros): Give definition of `declare'.
        (Indenting Macros): New node.
  
        * frames.texi (Parameter Access): Add modify-all-frames-parameters.
        * numbers.texi (Integer Basics): Add most-positive-fixnum,
        most-negative-fixnum.
  
 -      * compile.texi (Byte Compilation): Explain no-byte-compile
 +      * compile.texi (Byte Compilation): Explain no-byte-compile.
        (Compiler Errors): New node.
  
        * os.texi (User Identification): user-uid, user-real-uid
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; add-log-time-zone-rule: t
  ;; End:
  
 -    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -      2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +  Copyright (C) 1998-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
diff --combined doc/lispref/elisp.texi
index ad7931d45b45edd11967a37a221263623a6d7520,cfc02a07068470fd7e3f1344416b6b4d08f8a26b..cc3ceb8003cf7d3b809dc438d968f60e9caab7c7
@@@ -8,7 -8,7 +8,7 @@@
  @c Please remember to update the edition number in README as well.
  @c And also the copies in vol1.texi and vol2.texi.
  @set VERSION  3.0
 -@set EMACSVER 23.2.94
 +@include emacsver.texi
  @set DATE July 2009
  
  @c in general, keep the following line commented out, unless doing a
@@@ -44,7 -44,8 +44,7 @@@
  This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@*
  corresponding to Emacs version @value{EMACSVER}.
  
 -Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
 -1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011  Free Software
 +Copyright @copyright{} 1990-1996, 1998-2011  Free Software
  Foundation, Inc.
  
  @quotation
@@@ -62,7 -63,7 +62,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory GNU Emacs Lisp
  @direntry
  * Elisp: (elisp).       The Emacs Lisp Reference Manual.
  @end direntry
@@@ -158,8 -159,6 +158,8 @@@ Cover art by Etienne Suvasa
  * System Interface::        Getting the user id, system type, environment
                                variables, and other such things.
  
 +* Packaging::               Preparing Lisp code for distribution.
 +
  Appendices
  
  * Antinews::                Info for users downgrading to Emacs 22.
@@@ -1394,12 -1393,6 +1394,12 @@@ Operating System Interfac
  * Session Management::      Saving and restoring state with
                                X Session Management.
  
 +Preparing Lisp code for distribution
 +
 +* Packaging Basics::        The basic concepts of Emacs Lisp packages.
 +* Simple Packages::         How to package a single .el file.
 +* Multi-file Packages::     How to package multiple files.
 +
  Starting Up Emacs
  
  * Startup Summary::         Sequence of actions Emacs performs at startup.
@@@ -1496,8 -1489,6 +1496,8 @@@ Object Internal
  @include display.texi
  @include os.texi
  
 +@include package.texi
 +
  @c MOVE to Emacs Manual:  include misc-modes.texi
  
  @c appendices
  
  \f
  These words prevent "local variables" above from confusing Emacs.
 -
 -@ignore
 -   arch-tag: f7e9a219-a0e1-4776-b631-08eaa1d49b34
 -@end ignore
diff --combined doc/lispref/files.texi
index 46ebced7a3257ce5781f343e6ffce86530dcf640,fd9f3bb464878fd6253aab4690516b0ca87ab27b..3697f18baddac3959ffbc301c3b33f56b761ee76
@@@ -1,6 -1,7 +1,6 @@@
  @c -*-texinfo-*-
  @c This is part of the GNU Emacs Lisp Reference Manual.
 -@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
 -@c   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
  @c   Free Software Foundation, Inc.
  @c See the file elisp.texi for copying conditions.
  @setfilename ../../info/files
@@@ -113,6 -114,26 +113,26 @@@ When @code{find-file} is called interac
  @var{filename} in the minibuffer.
  @end deffn
  
+ @deffn Command find-file-literally filename
+ This command visits @var{filename}, like @code{find-file} does, but it
+ does not perform any format conversions (@pxref{Format Conversion}),
+ character code conversions (@pxref{Coding Systems}), or end-of-line
+ conversions (@pxref{Coding System Basics, End of line conversion}).
+ The buffer visiting the file is made unibyte, and its major mode is
+ Fundamental mode, regardless of the file name.  File local variable
+ specifications  in the file (@pxref{File Local Variables}) are
+ ignored, and automatic decompression and adding a newline at the end
+ of the file due to @code{require-final-newline} (@pxref{Saving
+ Buffers, require-final-newline}) are also disabled.
+ Note that if Emacs already has a buffer visiting the same file
+ non-literally, it will not visit the same file literally, but instead
+ just switch to the existing buffer.  If you want to be sure of
+ accessing a file's contents literally, you should create a temporary
+ buffer and then read the file contents into it using
+ @code{insert-file-contents-literally} (@pxref{Reading from Files}).
+ @end deffn
  @defun find-file-noselect filename &optional nowarn rawfile wildcards
  This function is the guts of all the file-visiting functions.  It
  returns a buffer visiting the file @var{filename}.  You may make the
@@@ -224,6 -245,16 +244,16 @@@ This is not a normal hook because the v
  used, and in many cases only some of the functions are called.
  @end defvar
  
+ @defvar find-file-literally
+ This buffer-local variable, if set to a non-@code{nil} value, makes
+ @code{save-buffer} behave as if the buffer were visiting its file
+ literally, i.e. without conversions of any kind.  The command
+ @code{find-file-literally} sets this variable's local value, but other
+ equivalent functions and commands can do that as well, e.g.@: to avoid
+ automatic addition of a newline at the end of the file.  This variable
+ us permanent local, so it is unaffected by changes of major modes.
+ @end defvar
  @node Subroutines of Visiting
  @comment  node-name,  next,  previous,  up
  @subsection Subroutines of Visiting
@@@ -1757,6 -1788,20 +1787,6 @@@ Note that the @samp{.~3~} in the two la
  not an extension.
  @end defun
  
 -@ignore
 -Andrew Innes says that this
 -
 -@c @defvar directory-sep-char
 -This variable holds the character that Emacs normally uses to separate
 -file name components.  The default value is @code{?/}, but on MS-Windows
 -you can set it to @code{?\\}; then the functions that transform file names
 -use backslashes in their output.
 -
 -File names using backslashes work as input to Lisp primitives even on
 -MS-DOS and MS-Windows, even if @code{directory-sep-char} has its default
 -value of @code{?/}.
 -@end defvar
 -@end ignore
  
  @node Relative File Names
  @subsection Absolute and Relative File Names
@@@ -2813,34 -2858,6 +2843,34 @@@ non-magic directory to serve as its cur
  is a good way to come up with one.
  @end defun
  
 +@defopt remote-file-name-inhibit-cache
 +Whether to use the remote file-name cache for read access.
 +
 +File attributes of remote files are cached for better performance.  If
 +they are changed out of Emacs' control, the cached values become
 +invalid, and must be reread.
 +
 +When set to @code{nil}, cached values are always used.  This shall be
 +set with care.  When set to @code{t}, cached values are never used.
 +ALthough this is the safest value, it could result in performance
 +degradation.
 +
 +A compromise is to set it to a positive number.  This means that
 +cached values are used for that amount of seconds since they were
 +cached.
 +
 +In case a remote file is checked regularly, it might be reasonable to
 +let-bind this variable to a value less then the time period between
 +two checks.  Example:
 +
 +@example
 +(defun display-time-file-nonempty-p (file)
 +  (let ((remote-file-name-inhibit-cache (- display-time-interval 5)))
 +    (and (file-exists-p file)
 +         (< 0 (nth 7 (file-attributes (file-chase-links file)))))))
 +@end example
 +@end defopt
 +
  @node Format Conversion
  @section File Format Conversion
  
@@@ -3157,3 -3174,7 +3187,3 @@@ will produce good, general extensions w
  names or values---because a program that general is probably difficult
  to write, and slow.  Instead, choose a set of possible data types that
  are reasonably flexible, and not too hard to encode.
 -
 -@ignore
 -   arch-tag: 141f74ce-6ae3-40dc-a6c4-ef83fc4ec35c
 -@end ignore
diff --combined doc/lispref/keymaps.texi
index 4a2964b9b6c55ccd1e586e68994df90f1a5c77e4,bc1937442f8422ab6772d21687caa8d35466696c..af24ff5aa436e8e8cd63fcc6d2bcd23391e45215
@@@ -1,6 -1,8 +1,6 @@@
  @c -*-texinfo-*-
  @c This is part of the GNU Emacs Lisp Reference Manual.
 -@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001,
 -@c   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 -@c   Free Software Foundation, Inc.
 +@c Copyright (C) 1990-1994, 1998-2011  Free Software Foundation, Inc.
  @c See the file elisp.texi for copying conditions.
  @setfilename ../../info/keymaps
  @node Keymaps, Modes, Command Loop, Top
@@@ -1508,6 -1510,12 +1508,12 @@@ does not have the effect of remapping @
  if an ordinary binding specifies @code{my-kill-line}, this keymap will
  remap it to @code{my-other-kill-line}.
  
+ To undo the remapping of a command, remap it to @code{nil}; e.g.
+ @smallexample
+ (define-key my-mode-map [remap kill-line] nil)
+ @end smallexample
  @defun command-remapping command &optional position keymaps
  This function returns the remapping for @var{command} (a symbol),
  given the current active keymaps.  If @var{command} is not remapped
@@@ -2071,6 -2079,21 +2077,6 @@@ look at a menu.  This is because the X 
  of menus in advance.  To force recalculation of the menu bar, call
  @code{force-mode-line-update} (@pxref{Mode Line Format}).
  
 -  You've probably noticed that menu items show the equivalent keyboard key
 -sequence (if any) to invoke the same command.  To save time on
 -recalculation, menu display caches this information in a sublist in the
 -binding, like this:
 -
 -@c This line is not too long--rms.
 -@example
 -(@var{item-string} @r{[}@var{help}@r{]} (@var{key-binding-data}) . @var{real-binding})
 -@end example
 -
 -@noindent
 -Don't put these sublists in the menu item yourself; menu display
 -calculates them automatically.  Don't mention keyboard equivalents in
 -the item strings themselves, since that is redundant.
 -
  @node Extended Menu Items
  @subsubsection Extended Menu Items
  @kindex menu-item
@@@ -2104,6 -2127,14 +2110,6 @@@ string.  Thus, the string need not be 
  @var{item-property-list}, has the form of a property list which contains
  other information.
  
 -  When an equivalent keyboard key binding is cached, the extended menu
 -item binding looks like this:
 -
 -@example
 -(menu-item @var{item-name} @var{real-binding} (@var{key-binding-data})
 -    . @var{item-property-list})
 -@end example
 -
    Here is a table of the properties that are supported:
  
  @table @code
@@@ -2796,3 -2827,7 +2802,3 @@@ menu of Shell mode, after the item @cod
    [work] '("Work" . work-command) 'break)
  @end example
  @end defun
 -
 -@ignore
 -   arch-tag: cfb87287-9364-4e46-9e93-6c2f7f6ae794
 -@end ignore
index 5b5f3365978488506b47ac46ac958f7a74b43fd5,18343b4dc856a8194a3563553161acec415c5110..0cdcaa84d5838229319be30578fd9b342fa06e67
@@@ -1,6 -1,8 +1,6 @@@
  @c -*-texinfo-*-
  @c This is part of the GNU Emacs Lisp Reference Manual.
 -@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
 -@c   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 -@c   Free Software Foundation, Inc.
 +@c Copyright (C) 1990-1995, 1998-2011  Free Software Foundation, Inc.
  @c See the file elisp.texi for copying conditions.
  @setfilename ../../info/variables
  @node Variables, Functions, Control Structures, Top
@@@ -1407,6 -1409,8 +1407,8 @@@ subsequent major mode.  @xref{Hooks}
  @cindex permanent local variable
  A buffer-local variable is @dfn{permanent} if the variable name (a
  symbol) has a @code{permanent-local} property that is non-@code{nil}.
+ Such variables are unaffected by @code{kill-all-local-variables}, and
+ their local bindings are therefore not cleared by changing major modes.
  Permanent locals are appropriate for data pertaining to where the file
  came from or how to save it, rather than with how to edit the contents.
  
@@@ -1927,3 -1931,7 +1929,3 @@@ Attempting to assign them any other val
  (setq window-min-height 5.0)
  @error{} Wrong type argument: integerp, 5.0
  @end example
 -
 -@ignore
 -   arch-tag: 5ff62c44-2b51-47bb-99d4-fea5aeec5d3e
 -@end ignore
diff --combined doc/misc/ChangeLog
index cbe4fbbeb1ba381b12bb44a0a363c7d44546dd78,8d1c5dc46ab756743c8a182cbcc63047383de711..164fdc4ed6583a86e69623159658e49b710e69e2
@@@ -1,25 -1,54 +1,75 @@@
 -2011-02-18  Eli Zaretskii  <eliz@gnu.org>
++2011-02-19  Eli Zaretskii  <eliz@gnu.org>
+       * ada-mode.texi: Sync @dircategory with ../../info/dir.
+       * auth.texi: Sync @dircategory with ../../info/dir.
+       * autotype.texi: Sync @dircategory with ../../info/dir.
+       * calc.texi: Sync @dircategory with ../../info/dir.
+       * cc-mode.texi: Sync @dircategory with ../../info/dir.
+       * cl.texi: Sync @dircategory with ../../info/dir.
+       * dbus.texi: Sync @dircategory with ../../info/dir.
+       * dired-x.texi: Sync @dircategory with ../../info/dir.
+       * ebrowse.texi: Sync @dircategory with ../../info/dir.
+       * ede.texi: Sync @dircategory with ../../info/dir.
+       * ediff.texi: Sync @dircategory with ../../info/dir.
+       * edt.texi: Sync @dircategory with ../../info/dir.
+       * eieio.texi: Sync @dircategory with ../../info/dir.
+       * emacs-mime.texi: Sync @dircategory with ../../info/dir.
+       * epa.texi: Sync @dircategory with ../../info/dir.
+       * erc.texi: Sync @dircategory with ../../info/dir.
+       * eshell.texi: Sync @dircategory with ../../info/dir.
+       * eudc.texi: Sync @dircategory with ../../info/dir.
+       * flymake.texi: Sync @dircategory with ../../info/dir.
+       * forms.texi: Sync @dircategory with ../../info/dir.
+       * gnus.texi: Sync @dircategory with ../../info/dir.
+       * idlwave.texi: Sync @dircategory with ../../info/dir.
+       * mairix-el.texi: Sync @dircategory with ../../info/dir.
+       * message.texi: Sync @dircategory with ../../info/dir.
+       * mh-e.texi: Sync @dircategory with ../../info/dir.
+       * newsticker.texi: Sync @dircategory with ../../info/dir.
+       * nxml-mode.texi: Sync @dircategory with ../../info/dir.
+       * org.texi: Sync @dircategory with ../../info/dir.
+       * pcl-cvs.texi: Sync @dircategory with ../../info/dir.
+       * pgg.texi: Sync @dircategory with ../../info/dir.
+       * rcirc.texi: Sync @dircategory with ../../info/dir.
+       * reftex.texi: Sync @dircategory with ../../info/dir.
+       * remember.texi: Sync @dircategory with ../../info/dir.
+       * sasl.texi: Sync @dircategory with ../../info/dir.
+       * sc.texi: Sync @dircategory with ../../info/dir.
+       * semantic.texi: Sync @dircategory with ../../info/dir.
+       * ses.texi: Sync @dircategory with ../../info/dir.
+       * sieve.texi: Sync @dircategory with ../../info/dir.
+       * smtpmail.texi: Sync @dircategory with ../../info/dir.
+       * speedbar.texi: Sync @dircategory with ../../info/dir.
+       * trampver.texi [emacs]: Set emacsname to "Emacs".
+       * tramp.texi: Sync @dircategory with ../../info/dir.
+       * url.texi: Sync @dircategory with ../../info/dir.
+       * vip.texi: Sync @dircategory with ../../info/dir.
+       * viper.texi: Sync @dircategory with ../../info/dir.
+       * widget.texi: Sync @dircategory with ../../info/dir.
+       * woman.texi: Sync @dircategory with ../../info/dir.
 -2011-02-14  Glenn Morris  <rgm@gnu.org>
 +2011-02-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * dired-x.texi (Technical Details): No longer redefines dired-add-entry,
 +      dired-initial-position, dired-clean-up-after-deletion, or
 +      dired-read-shell-command.
 +
 +2011-02-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * dired-x.texi (Optional Installation File At Point): Simplify.
 +
 +2011-02-17  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (Help for users): Use :port instead of :protocol for all
 +      auth-source docs.
 +      (GnuPG and EasyPG Assistant Configuration): Mention the default now is
 +      to have two files in `auth-sources'.
 +
 +2011-02-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * dired-x.texi: Use emacsver.texi to get Emacs version.
 +      * Makefile.in ($(infodir)/dired-x, dired-x.dvi, dired-x.pdf):
 +      Depend on emacsver.texi.
  
        * dired-x.texi: Drop meaningless version number.
        (Introduction): Remove old info.
        Remove incorrect info about loaddefs.el.
        (Bugs): Just refer to M-x report-emacs-bug.
  
 +      * dired-x.texi (Multiple Dired Directories): Update for rename of
 +      default-directory-alist.
 +      (Miscellaneous Commands): No longer mention very old VM version 4.
 +
 +2011-02-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Merge from gnulib.
 +      * texinfo.tex: Update to version 2011-02-14.11.
 +
 +2011-02-14  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (Help for users):
 +      Login collection is "Login" and not "login".
 +
 +2011-02-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (History): Remove IMAP support.
 +      (External methods, Frequently Asked Questions): Remove `imap' and
 +      `imaps' methods.
 +      (Password handling): Remove IMAP entries for ~/.authinfo.gpg.
 +
 +      * trampver.texi: Remove default value of `emacsimap'.
 +
 +2011-02-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * ada-mode.texi, dired-x.texi, ebrowse.texi, ediff.texi, eudc.texi:
 +      * idlwave.texi, reftex.texi, sc.texi, speedbar.texi: Add @top.
 +
  2011-02-12  Glenn Morris  <rgm@gnu.org>
  
        * sc.texi (Getting Connected): Remove old index entries.
  
 -2011-02-12  Ulrich Mueller <ulm@gentoo.org>
 +2011-02-12  Ulrich Mueller  <ulm@gentoo.org>
  
        * url.texi: Remove duplicate @dircategory (Bug#7942).
  
 -2011-02-03  Michael Albinus  <michael.albinus@gmx.de>
 +2011-02-11  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (Overview, Help for users, Help for developers):
 +      Update docs.
 +      (Help for users): Talk about spaces.
 +
 +2011-02-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * texinfo.tex: Update to version 2011-02-07.16.
 +
 +2011-02-07  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Bus names): Adapt descriptions for
 +      dbus-list-activatable-names and dbus-list-known-names.
 +
 +2011-02-07  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Logarithmic Units): New section.
 +
 +2011-02-05  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-overrides.texi: Renamed from overrides.texi and all the relevant
 +      manuals use it now.
 +
 +      * Makefile.in (nowebhack): Fixed to use -D flag instead of overrides.
 +
 +2011-02-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * overrides.texi: Remove.
 +
 +      * sieve.texi, sasl.texi, pgg.texi, message.texi, gnus.texi:
 +      * emacs-mime.texi, auth.texi, Makefile.in: Revert last changes.
 +
 +2011-02-05  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Mention problems with
        WinSSHD.
  
 -2011-01-03  Eduard Wiebe  <usenet@pusto.de>
 +      * trampver.texi: Update release number.
 +
 +2011-02-05  Era Eriksson  <era+tramp@iki.fi>  (tiny change)
 +
 +      * tramp.texi:
 +      Replace "delimet" with "delimit" globally.
 +      Replace "explicite" with "explicit" globally.
 +      Replace "instead of" with "instead" where there was nothing after "of".
 +      Audit use of comma before interrogative pronoun, "that", or "which".
 +      Minor word order, spelling, wording changes.
 +
 +2011-02-04  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * overrides.texi: New file to set or clear WEBHACKDEVEL.
 +
 +      * sieve.texi: Use WEBHACKDEVEL.
 +
 +      * sasl.texi: Use WEBHACKDEVEL.
 +
 +      * pgg.texi: Use WEBHACKDEVEL.
 +
 +      * message.texi: Use WEBHACKDEVEL.
 +
 +      * gnus.texi: Use WEBHACKDEVEL.
 +
 +      * emacs-mime.texi: Use WEBHACKDEVEL.
 +
 +      * auth.texi: Use WEBHACKDEVEL.
 +
 +      * Makefile.in (webhack, nowebhack): Hacks to produce for-the-web
 +      manuals.
 +
 +2011-02-04  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi: Add DEVEL header (suggested by Andreas Schwab).
 +
 +2011-02-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * texinfo.tex: Update to version 2011-02-01.10 from gnulib,
 +      which in turn is copied from ftp://tug.org/tex/.
 +
 +2011-02-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * faq.texi (Contacting the FSF): Mainly just refer to the web-site.
 +      (Binding combinations of modifiers and function keys):
 +      Let's assume people reading this are not using Emacs 18.
 +
 +2011-02-03  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Date): Remove mention of gnus-stop-date-timer,
 +      since it's run automatically.
 +
 +2011-02-01  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing Articles): Fix typo.
 +
 +2011-01-31  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing Articles): Document the new way of customizing
 +      the date headers(s).
 +
 +2011-01-30  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Client-Side IMAP Splitting): Add a complete nnimap fancy
 +      splitting example.
 +
 +2011-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
 +      (MAKEINFO_OPTS): New variable.
 +      (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
 +      ($(infodir)/info, $(infodir)/ccmode, $(infodir)/ada-mode)
 +      ($(infodir)/pcl-cvs, $(infodir)/eshell, $(infodir)/cl)
 +      ($(infodir)/dbus, $(infodir)/dired-x, $(infodir)/ediff)
 +      ($(infodir)/flymake, $(infodir)/forms, $(infodir)/gnus)
 +      ($(infodir)/message, $(infodir)/emacs-mime, $(infodir)/sieve)
 +      ($(infodir)/pgg, $(infodir)/mh-e, $(infodir)/reftex)
 +      ($(infodir)/remember, $(infodir)/sasl, $(infodir)/sc)
 +      ($(infodir)/vip, $(infodir)/viper, $(infodir)/widget)
 +      ($(infodir)/efaq, $(infodir)/autotype, $(infodir)/calc)
 +      ($(infodir)/idlwave, $(infodir)/eudc, $(infodir)/ebrowse)
 +      ($(infodir)/woman, $(infodir)/speedbar, $(infodir)/tramp)
 +      ($(infodir)/ses, $(infodir)/smtpmail, $(infodir)/org)
 +      ($(infodir)/url, $(infodir)/newsticker, $(infodir)/nxml-mode)
 +      ($(infodir)/rcirc, $(infodir)/erc, $(infodir)/ert)
 +      ($(infodir)/epa, $(infodir)/mairix-el, $(infodir)/auth)
 +      ($(infodir)/eieio, $(infodir)/ede, $(infodir)/semantic)
 +      ($(infodir)/edt): Use $(MAKEINFO_OPTS).
 +
 +2011-01-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Date): Document gnus-article-update-lapsed-header.
 +
 +2011-01-24  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * message.texi (IDNA): Explain what it is.
 +
 +2011-01-24  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (The Empty Backend): Document nnnil (bug #7653).
 +
 +2011-01-23  Werner Lemberg  <wl@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Now controlled by `configure'.
 +      (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 +      (ENVADD): Updated.
 +
 +2011-01-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * ert.texi: Relicense under GFDL 1.3+, and standardize license notice.
 +
 +2011-01-14  Eduard Wiebe  <usenet@pusto.de>
  
        * nxml-mode.texi (Introduction): Fix file name typos.
  
 -2010-12-02  Glenn Morris  <rgm@gnu.org>
 +2011-01-13  Christian Ohler  <ohler@gnu.org>
 +
 +      * ert.texi: New file.
 +
 +      * Makefile.in:
 +      * makefile.w32-in: Add ert.texi.
 +
 +2011-01-10  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * dbus.texi (Receiving Method Calls): New function
 +      dbus-register-service.  Rearrange node.
 +
 +2011-01-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * texinfo.tex: Update to version 2010-12-23.17 from gnulib,
 +      which in turn is copied from ftp://tug.org/tex/.
 +
 +2011-01-04  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * dbus.texi (Receiving Method Calls): Describe new optional
 +      parameter dont-register-service of dbus-register-{method,property}.
 +
 +2010-12-17  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Encrypting/decrypting *.gpg files): Mention
 +      epa-file-select-keys.
 +
 +2010-12-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Archived Messages): Remove outdated text.
 +
 +2010-12-16  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus.texi (Foreign Groups): Added clarification of foreign groups.
 +
 +2010-12-15  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus.texi (The hyrex Engine): Say that this engine is obsolete.
 +
 +2010-12-14  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus.texi (The swish++ Engine): Add customizable parameters
 +      descriptions.
 +      (The swish-e Engine): Ditto.
 +
 +2010-12-14  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Add "ksu" method.
 +      (Remote processes): Add example with remote `default-directory'.
 +
 +2010-12-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * faq.texi (Expanding aliases when sending mail):
 +      Now build-mail-aliases is interactive.
 +
 +2010-12-13  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus.texi: First pass at adding (rough) nnir documentation.
 +
 +2010-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Filtering New Groups):
 +      Mention gnus-auto-subscribed-categories.
 +      (The First Time): Remove, since default-subscribed-newsgroups has been
 +      removed.
 +
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
  
        * cl.texi (For Clauses): Small fixes for frames and windows.
  
 -2010-11-23  Glenn Morris  <rgm@gnu.org>
 +2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Using capture): Document using prefix arguments for
 +      finalizing capture.
 +      (Agenda commands): Document prefix argument for the bulk scatter
 +      command.
 +      (Beamer class export): Document that also overlay arguments can be
 +      passed to the column environment.
 +      (Template elements): Document the new entry type.
 +
 +2010-12-11  Puneeth Chaganti  <punchagan@gmail.com>
 +
 +      * org.texi (Include files): Document :minlevel.
 +
 +2010-12-11  Julien Danjou  <julien@danjou.info>
 +
 +      * org.texi (Categories): Document category icons.
 +
 +2010-12-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (noweb): Fix typo.
 +
 +2010-12-06  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * gnus.texi (Server Commands): Point to the rest of the server
 +      commands.
 +
 +2010-12-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Paging the Article): Note the reverse meanings of `C-u C-u
 +      g'.
 +
 +2010-12-02  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Archived Messages): Remove gnus-outgoing-message-group.
 +
 +2010-11-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): Note the new defaults.
 +      (Direct Functions): Note the STARTTLS upgrade.
 +
 +2010-11-27  Glenn Morris  <rgm@gnu.org>
            James Clark  <none@example.com>
  
        * nxml-mode.texi (Introduction): New section.
  
 -2010-11-10  Glenn Morris  <rgm@gnu.org>
 +2010-11-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Server Commands): Document gnus-server-show-server.
 +
 +2010-11-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.2.0.
 +
 +      * trampver.texi: Update release number.
 +
 +2010-11-19  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (TeX and LaTeX Language Modes, Predefined Units):
 +      Mention that the TeX specific units won't use the `tex' prefix
 +      in TeX mode.
 +
 +2010-11-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (Misc Article): Document gnus-inhibit-images.
 +
 +2010-11-17  Glenn Morris  <rgm@gnu.org>
  
        * edt.texi: Remove information about Emacs 19.
  
 -2010-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +2010-11-17  Michael Albinus  <michael.albinus@gmx.de>
  
        * trampver.texi: Update release number.
  
 -2010-11-03  Jay Belanger  <jay.p.belanger@gmail.com>
 +2010-11-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (Article Washing): Fix typo.
 +
 +2010-11-11  Noorul Islam  <noorul@noorul.com>
 +
 +      * org.texi: Fix typo.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Using capture): Explain that refiling is
 +      sensitive to cursor position.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Images and tables): Add cross reference to link section.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi: Document the <c> cookie.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi: multi-line header arguments :PROPERTIES: :ID:
 +      b77c8857-6c76-4ea9-8a61-ddc2648d96c4 :END:.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (CSS support): Document :HTML_CONTAINER_CLASS: property.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Project alist): Mention that this is a property list.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Setting up the staging area): Document that
 +      file names remain visible when encrypting the MobileOrg files.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Setting up the staging area): Document which
 +      versions are needed for encryption.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (noweb): Update :noweb documentation to
 +      reflect the new "tangle" argument.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (Batch execution): Improve tangling script in
 +      documentation.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Handling links):
 +      (In-buffer settings): Document inlining images on startup.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Setting up the staging area): Document use of
 +      crypt password.
 +
 +2010-11-11  David Maus  <dmaus@ictsoc.de>
 +
 +      * org.texi (Template expansion): Add date related link type escapes.
 +
 +2010-11-11  David Maus  <dmaus@ictsoc.de>
 +
 +      * org.texi (Template expansion): Add mew in table for link type
 +      escapes.
 +
 +2010-11-11  David Maus  <dmaus@ictsoc.de>
 +
 +      * org.texi (Template expansion): Fix typo in link type escapes.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (Structure of code blocks): Another documentation tweak.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (Structure of code blocks): Documentation tweak.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (Structure of code blocks):
 +      Update documentation to mention inline code block syntax.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (comments): Improve wording.
 +
 +2010-11-11  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * org.texi (comments): Document the new :comments header arguments.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Installation): Remove the special
 +      installation instructions for XEmacs.
 +
 +2010-11-11  Jambunathan K  <kjambunathan@gmail.com>  (tiny change)
 +
 +      * org.texi (Easy Templates): New section.  Documents quick
 +      insertion of empty structural elements.
 +
 +2010-11-11  Noorul Islam  <noorul@noorul.com>
 +
 +      * org.texi: Fix doc.
 +
 +2010-11-11  Jambunathan K  <kjambunathan@gmail.com>  (tiny change)
 +
 +      * org.texi (The date/time prompt): Document specification
 +      of time ranges.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Internal links): Document the changes in
 +      internal links.
 +
 +2010-11-11  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (Agenda commands): Document the limitation for
 +      the filter preset - it can only be used for an entire agenda
 +      view, not in an individual block in a block agenda.
 +
 +2010-11-11  Eric S Fraga  <e.fraga@ucl.ac.uk>
 +
 +      * org.texi (iCalendar export): Document alarm creation.
 +
 +2010-11-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Type Conversion): Introduce `:unix-fd' type mapping.
 +
 +2010-11-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Washing): Document gnus-article-treat-non-ascii.
 +
 +2010-11-09  Jay Belanger  <jay.p.belanger@gmail.com>
  
        * calc.texi: Use emacsver.texi to determine Emacs version.
  
 -2010-10-30  Glenn Morris  <rgm@gnu.org>
 +2010-11-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): Remove nnir mention,
 +      since that works by default.
 +
 +2010-11-03  Kan-Ru Chen  <kanru@kanru.info>  (tiny change)
 +
 +      * gnus.texi (Customizing the IMAP Connection): Document
 +      `nnimap-expunge' and remove `nnimap-expunge-inbox' from example.
 +
 +2010-11-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Remote shell setup): New item "Interactive shell
 +      prompt".  Reported by Christian Millour <cm@abtela.com>.
 +      (Remote shell setup, Remote processes): Use @code{} for
 +      environment variables.
 +
 +2010-11-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * ediff.texi (Quick Help Commands, Miscellaneous):
 +      * gnus.texi (Agent Variables, Configuring nnmairix): Spelling fix.
 +
 +2010-10-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Paging the Article): Document C-u g/C-u C-u g.
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * mh-e.texi (Preface, From Bill Wohler): Change 23 to past tense.
  
 -2010-10-29  Glenn Morris  <rgm@gnu.org>
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
  
        * cc-mode.texi: Remove reference to defunct viewcvs URL.
  
 -2010-10-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-10-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Client-Side IMAP Splitting): Mention
 +      nnimap-unsplittable-articles.
 +
 +2010-10-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Finding the News): Remove references to obsoletes
 +      variables `gnus-nntp-server' and `gnus-secondary-servers'.
 +
 +2010-10-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Add -I$(emacsdir).
 +      (ENVADD): Remove extra -I$(emacsdir), included in $(MAKEINFO).
 +      ($(infodir)/efaq): Remove -I$(emacsdir), included in $(MAKEINFO).
 +      ($(infodir)/calc, calc.dvi): Depend on $(emacsdir)/emacsver.texi.
 +
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (MAKEINFO, ENVADD): Add $emacsdir to include path.
 +      (($(infodir)/calc, calc.dvi, calc.pdf): Depend on emacsver.texi.
 +      ($(infodir)/efaq): Remove -I option now in $MAKEINFO.
 +
 +2010-10-25  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Mail-mode integration): Add alternative key bindings
 +      for epa-mail commands; escape comma.
 +      Don't use the word "PGP", since it is a non-free program.
 +
 +2010-10-24  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi: Use emacsver.texi to determine Emacs version.
 +
 +2010-10-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * gnus.texi (Group Parameters, Buttons): Fix typos.
  
 +2010-10-22  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * gnus.texi (Subscription Commands): Mention that you can also
 +      subscribe to new groups via the Server buffer, which is probably more
 +      convenient when subscribing to many groups.
 +
 +2010-10-21  Julien Danjou  <julien@danjou.info>
 +
 +      * message.texi (Message Headers): Allow message-default-headers to be a
 +      function.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-news.texi: Mention new archive defaults.
 +
 +2010-10-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (RSS): Remove nnrss-wash-html-in-text-plain-parts.
 +
 +2010-10-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document the function value of
 +      gnus-blocked-images.
 +      (Article Washing): shr and gnus-w3m, not the direct function names.
 +
 +2010-10-20  Julien Danjou  <julien@danjou.info>
 +
 +      * emacs-mime.texi (Flowed text): Add a note about mml-enable-flowed
 +      variable.
 +
 +2010-10-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): The port strings are
 +      strings.
 +      (Document Groups): Mention git.
 +
 +2010-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-coding.texi (Gnus Maintainance Guide): Update to mention Emacs
 +      bzr/Gnus git sync.
 +
 +2010-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix last
 +      change.
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix up the
 +      @item syntax for in-Emacs makeinfo.
 +
 +2010-10-13  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix syntax and
 +      trim sentence.
 +
 +2010-10-12  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Caching Passphrases):
 +      * auth.texi (GnuPG and EasyPG Assistant Configuration): Clarify
 +      some configurations require to set up gpg-agent.
 +
 +2010-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Spam Package Introduction): Mention `$'.
 +
 +2010-10-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (emacsdir): New variable.
 +      ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi.
 +      (ENVADD, $(infodir)/efaq): Add -I$(emacsdir).
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (mostlyclean): Delete *.toc.
 +
 +      * Makefile.in: Use $< in rules.
 +
 +      * Makefile.in (maintainer-clean): Remove harmless, long-standing error.
 +
 +      * Makefile.in ($(infodir)): Delete rule.
 +      (mkinfodir): New.  Use it in all the info rules, rather than depending
 +      on infodir.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus.texi (Article Washing): Fix previous change.
 +
 +      * Makefile.in (emacsdir): New variable.
 +      ($(infodir)/efaq): Pass -I $(emacsdir) to makeinfo.
 +      Depend on emacsver.texi.
 +
 +      * faq.texi (VER): Replace with EMACSVER from emacsver.texi.
 +
 +      * Makefile.in (.PHONY): Declare info, dvi, pdf and the clean rules.
 +
 +2010-10-08  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi: Add mm-shr.
 +
 +2010-10-08  Ludovic Courtès  <ludo@gnu.org>
 +
 +      * gnus.texi (Finding the Parent, The Gnus Registry)
 +      (Registry Article Refer Method): Update docs for nnregistry.el.
 +
 +2010-10-08  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * auth.texi (Help for users)
 +      (GnuPG and EasyPG Assistant Configuration): Update docs.
 +
  2010-10-08  Glenn Morris  <rgm@gnu.org>
  
        * cl.texi (Organization, Installation, Old CL Compatibility):
        Deprecate cl-compat for new code.
 -
 -2010-10-07  Glenn Morris  <rgm@gnu.org>
 +      (Usage, Installation): Remove outdated information.
  
        * eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
  
 +2010-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
 +
 +2010-10-06  Julien Danjou  <julien@danjou.info>
 +
 +      * sieve.texi (Manage Sieve API): Document sieve-manage-authenticate.
 +
 +      * message.texi (PGP Compatibility): Remove reference to gpg-2comp,
 +      broken link.
 +
 +      * gnus-faq.texi (FAQ 8-3): Remove references to my.gnus.org.
 +
 +      * gnus.texi (Comparing Mail Back Ends): Remove broken link and allusion
 +      to ReiserFS.
 +
 +      * gnus-faq.texi (FAQ 5-5): Fix Flyspell URL.
 +      (FAQ 7-1): Fix getmail URL.
 +
 +2010-10-06  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Caching Passphrases): New section.
 +
  2010-10-06  Glenn Morris  <rgm@gnu.org>
  
 -      * cl.texi (Usage, Installation): Remove outdated information.
 +      * Makefile.in (SHELL): Set it.
 +      (info): Move the mkdir dependency to the individual info files.
 +      (mostlyclean): Tidy up.
 +      (clean): Only delete the specific dvi and pdf files.
 +      (maintainer-clean): Be more restrictive in what we delete.
 +      ($(infodir)): Add parallel build workaround.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Misc Article): Document gnus-widen-article-window.
 +
 +2010-10-03  Julien Danjou  <julien@danjou.info>
 +
 +      * emacs-mime.texi (Display Customization): Update
 +      mm-inline-large-images documentation and add documentation for
 +      mm-inline-large-images-proportion.
 +
 +2010-10-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Frequently Asked Questions): Mention
 +      remote-file-name-inhibit-cache.
 +
 +2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Splitting Mail): Fix @xref syntax.
 +      (Splitting Mail): Really fix the @ref syntax.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Splitting Mail): Mention the new fancy splitting
 +      function.
 +      (Article Hiding): Add google banner example.  Suggested by Benjamin
 +      Xu.
 +
 +2010-09-30  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus.texi (Spam Package Configuration Examples, SpamOracle): Remove
 +      nnimap-split-rule from examples.
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Mail Source Specifiers): Remove webmail.el mentions.
 +      (NNTP): Document nntp-server-list-active-group.  Suggested by Barry
 +      Fishman.
 +      (Client-Side IMAP Splitting): Add nnimap-split-fancy.
 +
 +2010-09-30  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Gravatars): Fix documentation about
 +      gnu-gravatar-properties.
 +
 +2010-09-29  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.texi (Bug Reports): New section.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (top_srcdir): Remove unused variable.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Using IMAP): Remove the @acronyms from the headings.
 +      (Client-Side IMAP Splitting): Document 'default.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Customizing the IMAP Connection): Document
 +      nnimap-fetch-partial-articles.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-news.texi: Mention nnimap-inbox.
 +
 +      * gnus.texi (Picons): Document gnus-picon-inhibit-top-level-domains.
 +
 +2010-09-26  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Oort Gnus): Remove mention of ssl.el.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Security): Remove gpg.el mention.
 +
 +2010-09-26  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus.texi (Browse Foreign Server): New variable
 +      gnus-browse-subscribe-newsgroup-method.
 +
 +      * gnus-news.texi: Mention it.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (NoCeM): Removed.
 +      (Startup Variables): No jingle.
 +
 +2010-09-25  Ulrich Mueller  <ulm@gentoo.org>
 +
 +      * woman.texi (Interface Options): xz compression is now supported.
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Commands): Document gnus-fetch-partial-articles.
 +      (Unavailable Servers): Document gnus-server-copy-server.
 +      (Using IMAP): Document the new nnimap.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi (Customizing Articles): Remove gnus-treat-translate.
 +
 +2010-09-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * url.texi (Disk Caching): Tweak previous change.
 +
 +2010-09-24  Julien Danjou  <julien@danjou.info>
 +
 +      * url.texi (Disk Caching): Mention url-cache-expire-time,
 +      url-cache-expired, and url-fetch-from-cache.
 +
 +2010-09-24  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.texi: Add Gravatars.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Startup Variables): Mention gnus-use-backend-marks.
 +
 +2010-09-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Expunging mailboxes): Update name of the expunging
 +      command.
 +
 +2010-09-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * emacs-mime.texi (rfc2047): Update description for
 +      rfc2047-encode-parameter.
 +
 +2010-09-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove "ssh1_old", "ssh2_old" and
 +      "fish" methods.
 +      (External methods): Remove "scp1_old" and "scp2_old" methods.
 +
 +2010-09-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi: Remove Japanese manual.  Fix typo.
 +
 +      * trampver.texi: Update release number.  Remove japanesemanual.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * org.texi: Restore clobbered changes (copyright years, untabify).
 +
 +2010-09-04  Julien Danjou  <julien@danjou.info>  (tiny change)
 +
 +      * gnus.texi (Adaptive Scoring): Fix typo.
 +
 +2010-09-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Article Display): Document gnus-html-show-images.
 +
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cl.texi (Basic Setf): Remove x-get-cut-buffer and x-get-cutbuffer.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document gnus-max-image-proportion.
 +
 +2010-08-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (HTML): Document gnus-blocked-images.
 +
 +      * message.texi (Wide Reply): Document message-prune-recipient-rules.
 +
 +2010-08-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Summary Mail Commands): Note that only the addresses from
 +      the first message are used for wide replies.
 +      (Changing Servers): Remove documentation on gnus-change-server and
 +      friends, since it's been removed.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Drafts): Mention B DEL.
 +
 +2010-08-29  Tim Landscheidt  <tim@tim-landscheidt.de>  (tiny change)
 +
 +      * gnus.texi (Delayed Articles): Mention that the Date header is the
 +      original one, even if you delay.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.texi (Asynchronous Fetching): Document
 +      gnus-async-post-fetch-function.
 +      (HTML): Made into its own section.
  
  2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
  
  
        * trampver.texi: Update release number.
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +2010-08-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Alternative Buses): New chapter.
 +
 +2010-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * cl.texi (Mapping over Sequences): Rename mapc => cl-mapc.
 +
 +2010-08-09  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Customizing Calc): Rearrange description of new
 +      variables to match the presentation of other variables.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
  
        * org.texi (Footnotes, Tables in HTML export): Fix typos.
  
 -2010-07-23  Chong Yidong  <cyd@stupidchicken.com>
 +2010-08-08  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Making Selections, Selecting Subformulas)
 +      (Customizing Calc): Mention how to use faces to emphasize selected
 +      sub-formulas.
 +
 +2010-08-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (External packages): File attributes cache flushing
 +      for asynchronous processes.
 +
 +2010-08-01  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance the manual for the latest Java Mode.
 +
 +      * cc-mode.texi (Syntactic Symbols): New symbols annotation-top-cont and
 +      annotation-var-cont.
 +      (Java Symbols): Page renamed from Anonymous Class Symbol.  Document the
 +      two new symbols.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Traces and Profiles): Describe verbose level 9.
 +
 +2010-07-27  Chong Yidong  <cyd@stupidchicken.com>
  
        * nxml-mode.texi (Limitations): Remove obsolete discussion (Bug#6708).
  
 +2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * org.texi: Fix typo in previous change (2010-07-19T09:47:27Z!carsten.dominik@gmail.com).
 +
 +2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi: Add macros to get plain quotes in PDF output.
 +      List additional contributors.
 +      (Capture): New section, replaces the section about remember.
 +      (Working With Source Code): New chapter, focused on documenting Org
 +      Babel.
 +      (Code evaluation security): New section.
 +      (MobileOrg): Document DropBox support.
 +      (TaskJuggler export): Document taskjuggler and Gantt chart support.
 +      (Special symbols): Show how to display UTF8 characters for entities.
 +      (Global TODO list): Clarify the use of the "M" key and the differences
 +      to the "m" key.
 +      (RSS Feeds): Mention Atom feeds as well.
 +      (Setting tags): Remove paragraph about
 +      `org-complete-tags-always-offer-all-agenda-tags'.
 +
 +2010-07-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove remark about doubled "-t"
 +      argument.
 +      (Frequently Asked Questions): Recommend "sshx" and "scpx" for
 +      echoing shells.
 +
 +2010-07-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods): Remove "kludgy" phrase.
 +      (Filename Syntax): Describe port numbers.
 +
 +2010-07-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Top): Introduce Index.  Emphasize "nil" whereever
 +      forgotten.
 +      (Type Conversion): Precise conversion of natural numbers.
 +      (Errors and Events): Add "debugging" to concept index.  Add variable
 +      `dbus-debug'.
 +
 +2010-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbus.texi (Receiving Method Calls): Add optional argument
 +      EMITS-SIGNAL to `dbus-register-property'.
 +
  2010-06-27  Alex Schroeder  <alex@gnu.org>
  
        * nxml-mode.texi (Commands for locating a schema): Fix typo.
        * idlwave.texi (Load-Path Shadows):
        * org.texi (Handling links): Fix typos.
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +2010-06-07  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * Version 23.2 released.
 +      * gnus.texi (Interactive): Explain effect of gnus-expert-user better.
 +
 +2010-05-26  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * eshell.texi (Built-ins): Describe, how to disable a built-in command
 +      by an alias.  (Bug#6226)
  
 -2010-05-03  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +2010-05-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Manipulating Vectors): Mention that vectors can
 +      be used to determine bins for `calc-histogram'.
 +
 +2010-05-13  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi: Remove "\turnoffactive" commands throughout.
 +
 +2010-05-08  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
        * url.texi (HTTP language/coding, Customization):
        * message.texi (Header Commands, Responses):
        * cl.texi (Argument Lists): Fix typos.
  
 -2010-04-18  Chong Yidong  <cyd@stupidchicken.com>
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * ede.texi (EDE Mode): Refer to init file rather than `.emacs'.  Note
 -      that Development menu is always available.
 +      * ede.texi (EDE Mode): Refer to init file rather than `.emacs'.
 +      Note that Development menu is always available.
        (Creating a project): Fix terminology.
        (Add/Remove files): Fix typo.
  
 -2010-04-17  Teodor Zlatanov  <tzz@lifelogs.com>
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-01  Daniel E. Doherty  <ddoherty03@gmail.com>  (tiny change)
 +
 +      * calc.texi (Tutorial): Use "^{\prime}" to indicate primes.
 +
 +2010-05-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * tramp.texi (Inline methods, Default Method):
 +      Mention `tramp-inline-compress-start-size'.
 +
 +2010-04-18  Teodor Zlatanov  <tzz@lifelogs.com>
  
        * gnus.texi (Gnus Versions, Oort Gnus): Mention the Git repo instead of
        the CVS repo.  Put the Git repo in the news section.
  
 -      * gnus-coding.texi (Gnus Maintainance Guide): Fixed title typo.
 +      * gnus-coding.texi (Gnus Maintainance Guide): Fix title typo.
        Removed some mentions of CVS.  Mention the new Git repo.
  
 -2010-04-15  Andreas Seltenreich  <seltenreich@gmx.de>
 +2010-04-18  Andreas Seltenreich  <seltenreich@gmx.de>
  
        * gnus.texi (Score File Format): Fix typo.  Reported by Štěpán Němec.
        (Mail Group Commands): Add index entry.
  
 -2010-04-15  Glenn Morris  <rgm@gnu.org>
 +2010-04-18  Glenn Morris  <rgm@gnu.org>
  
        * info.texi (Search Index): Mention Emacs's Info-virtual-index.
  
 -2010-03-14  Michael Albinus  <michael.albinus@gmx.de>
 +2010-04-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc.texi (Radix modes): Mention that the option prefix will
 +      turn on twos-complement mode.
 +      (Inverse and Hyperbolic Flags): Mention the Option flag.
 +
 +2010-04-15  Carsten Dominik  <carsten.dominik@gmail.com>
 +
 +      * org.texi (LaTeX and PDF export): Add a footnote about xetex.
 +      (LaTeX/PDF export commands): Rename and Move section.
 +      (Sectioning structure): Update.
 +      (References): New use case for field coordinates.
 +      (The export dispatcher): Rename from ASCII export.
 +      (Setting up the staging area): Document the availability of
 +      encryption for MobileOrg.
 +      (Images and tables): Document how to reference labels.
 +      (Index entries): New section.
 +      (Generating an index): New section.
 +      (Column width and alignment): Document that <N> now
 +      means a fixed width, not a maximum width.
 +      (Publishing options): Document the :email option.
 +      (Beamer class export): Fix bug in the BEAMER example.
 +      (Refiling notes): Document refile logging.
 +      (In-buffer settings): Document refile logging keywords.
 +      (Drawers): Document `C-c C-z' command.
 +      (Agenda commands): Mention the alternative key `C-c C-z'.
 +      (Special properties): Document the BLOCKED property.
 +      (The spreadsheet): Mention the formula editor.
 +      (References): Document field coordinates.
 +      (Publishing action): Correct the documentation for the
 +      publishing function.
 +      (The date/time prompt): Document that we accept dates
 +      like month/day/year.
 +      (Cooperation): Document the changes in table.el support.
 +      (Faces for TODO keywords, Faces for TODO keywords)
 +      (Priorities): Document the easy colors.
 +      (Visibility cycling): Document the new double prefix
 +      arg for `org-reveal'.
 +      (Cooperation): Remember.el is part of Emacs.
 +      (Clean view): Mention that `wrap-prefix' is also set by
 +      org-indent-mode.
 +      (Agenda commands): Add information about prefix args to
 +      scheduling and deadline commands.
 +      (Search view): Point to the docstring of
 +      `org-search-view' for more details.
 +      (Agenda commands): Document that `>' prompts for a date.
 +      (Setting tags): Document variable
 +      org-complete-tags-always-offer-all-agenda-tags.
 +      (Column attributes): Cross-reference special properties.
 +
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Synchronize with Tramp repository.
 +
 +      * tramp.texi (Auto-save and Backup): Remove reference to Emacs 21.
 +      (Frequently Asked Questions): Adapt supported (X)Emacs versions.  Adapt
 +      supported MS Windows versions.  Remove obsolete URL.  Use the $()
 +      syntax, texi2dvi reports errors with the backquotes.
  
        * trampver.texi: Update release number.
  
 +2010-04-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus.texi (Finding the News): Add pointers to the Server buffer
 +      because it's essential.
 +
 +2010-03-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus.texi (MIME Commands): Update description of
 +      gnus-article-browse-html-article.
 +
 +2010-03-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth.texi (Secret Service API): Add TODO node.
 +      (Help for users): Explain the new source options for `auth-sources'.
 +
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * trampver.texi: Update release number.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
  2010-03-03  Chong Yidong  <cyd@stupidchicken.com>
  
        * faq.texi (Escape sequences in shell output): Note that ansi-color is
  2010-01-17  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Add GNU Emacs 23 and
 -      SXEmacs 22 to the supported systems.  New item for hung ssh sessions.
 +      SXEmacs 22 to the supported systems.  New item for hung ssh sessions.
  
  2010-01-17  Glenn Morris  <rgm@gnu.org>
  
        (Agenda commands): Document new bulk commands.
        (Plain lists): Document new behavior of
        `org-cycle-include-plain-lists'.
 -       Hyphenation only in TeX.
 +      Hyphenation only in TeX.
        (Clocking work time): Document the key to update effort
        estimates.
        (Clocking work time): Document the clock time display.
  2008-06-15  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus.texi (Mail Source Customization): Correct values of
 -       `mail-source-delete-incoming'.  Reported by Tassilo Horn.
 +      `mail-source-delete-incoming'.  Reported by Tassilo Horn.
        (Oort Gnus): Fix version comment for mml-dnd-protocol-alist.
  
  2008-06-14  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-news.texi, gnus-coding.texi, sasl.texi: New files.
  
 -2007-10-28  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (tiny change)
 -
 -      * gnus-faq.texi ([5.12]): Remove reference to discontinued service.
 -
  2007-10-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus.texi (Sorting the Summary Buffer): Remove
  
        * 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.
  
        * org.texi: Small typo fixes.
  
 +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-29  Michael Albinus  <michael.albinus@gmx.de>
  
        * tramp.texi (Frequently Asked Questions): Disable zsh zle.
  
        * 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.
  
        * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
        (Agenda): Document commands `org-cycle-agenda-files' and
 -      `org-agenda-file-to-front'
 +      `org-agenda-file-to-front'.
        (Built-in table editor): Document `org-table-sort-lines'.
        (HTML formatting): Export of hand-formatted lists.
  
  
  2000-12-14  Dave Love  <fx@gnu.org>
  
 -      * Makefile.in (mostlyclean): Remove gnustmp.*
 +      * Makefile.in (mostlyclean): Remove gnustmp.*.
        (gnus.dvi): Change rule to remove @latex stuff.
  
  2000-10-19  Eric M. Ludlam  <zappo@ultranet.com>
  
  ;; Local Variables:
  ;; coding: utf-8
 -;; 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, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +  Copyright (C) 1993-1999, 2001-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  
    You should have received a copy of the GNU General Public License
    along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 -
 -;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803
diff --combined doc/misc/ada-mode.texi
index 4be88b403613cfa2ae6898b7e3e4236c969abc47,9f4fd44f467a77b86b8c0ca5df10d218c892fc06..66cdb2001117773f05e28a16e39aac26dc3f46c7
@@@ -3,7 -3,8 +3,7 @@@
  @settitle Ada Mode
  
  @copying
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -19,7 -20,7 +19,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs editing modes
  @direntry
  * Ada mode: (ada-mode).         Emacs mode for editing and compiling Ada code.
  @end direntry
@@@ -39,7 -40,6 +39,7 @@@
  @contents
  
  @node Top, Overview, (dir), (dir)
 +@top Ada Mode
  
  @ifnottex
  @insertcopying
@@@ -1524,3 -1524,7 +1524,3 @@@ autofill the current comment
  @printindex fn
  
  @bye
 -
 -@ignore
 -   arch-tag: 68cf0d8a-55cc-4190-a28d-4984fa56ed1e
 -@end ignore
diff --combined doc/misc/auth.texi
index 67f5b52b69466449cd853ef9e2ca141d4f4f2299,5c555e81a780dec13e952b0a3c7262a5fb5c92e9..27c6691dfa86ffc83477ea98b8c812fa495d3a51
@@@ -1,16 -1,13 +1,16 @@@
  \input texinfo                  @c -*-texinfo-*-
 +
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/auth
  @settitle Emacs auth-source Library @value{VERSION}
  
 -@set VERSION 0.2
 +@set VERSION 0.3
  
  @copying
  This file describes the Emacs auth-source library.
  
 -Copyright @copyright{} 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -32,18 -29,13 +32,18 @@@ license to the document, as described i
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * Auth-source: (auth).          The Emacs auth-source library.
  @end direntry
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Emacs auth-source Library (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Emacs auth-source Library
 +@end ifclear
  @author by Ted Zlatanov
  @page
  @vskip 0pt plus 1filll
@@@ -65,9 -57,7 +65,9 @@@ It is a way for multiple applications t
  @menu
  * Overview::                    Overview of the auth-source library.
  * Help for users::              
 +* Secret Service API::          
  * Help for developers::         
 +* GnuPG and EasyPG Assistant Configuration::  
  * Index::                       
  * Function Index::              
  * Variable Index::              
  @chapter Overview
  
  The auth-source library is simply a way for Emacs and Gnus, among
 -others, to find the answer to the old burning question ``I have a
 -server name and a port, what are my user name and password?''
 +others, to answer the old burning question ``What are my user name and
 +password?''
 +
 +(This is different from the old question about burning ``Where is the
 +fire extinguisher, please?''.)
  
 -The auth-source library actually supports more than just the user name
 -(known as the login) or the password, but only those two are in use
 -today in Emacs or Gnus.  Similarly, the auth-source library can in
 -theory support multiple storage formats, but currently it only
 -understands the classic ``netrc'' format, examples of which you can
 -see later in this document.
 +The auth-source library supports more than just the user name or the
 +password (known as the secret).
 +
 +Similarly, the auth-source library supports multiple storage backend,
 +currently either the classic ``netrc'' backend, examples of which you
 +can see later in this document, or the Secret Service API.  This is
 +done with EIEIO-based backends and you can write your own if you want.
  
  @node Help for users
  @chapter Help for users
  machine @var{mymachine} login @var{myloginname} password @var{mypassword} port @var{myport}
  @end example
  
 -The machine is the server (either a DNS name or an IP address).
 +The @code{machine} is the server (either a DNS name or an IP address).
 +It's known as @var{:host} in @code{auth-source-search} queries.  You
 +can also use @code{host}.
 +
 +The @code{port} is the connection port or protocol.  It's known as
 +@var{:port} in @code{auth-source-search} queries.
 +
 +The @code{user} is the user name.  It's known as @var{:user} in
 +@code{auth-source-search} queries.  You can also use @code{login} and
 +@code{account}.
  
 -The port is optional.  If it's missing, auth-source will assume any
 -port is OK.  Actually the port is a protocol name or a port number so
 -you can have separate entries for port @var{143} and for protocol
 -@var{imap} if you fancy that.  Anyway, you can just omit the port if
 -you don't need it.
 +Spaces are always OK as far as auth-source is concerned (but other
 +programs may not like them).  Just put the data in quotes, escaping
 +quotes as you'd expect with @code{\}.
  
 -The login and password are simply your login credentials to the server.
 +All these are optional.  You could just say (but we don't recommend
 +it, we're just showing that it's possible)
 +
 +@example
 +password @var{mypassword}
 +@end example
 +
 +to use the same password everywhere.  Again, @emph{DO NOT DO THIS} or
 +you will be pwned as the kids say.
  
  ``Netrc'' files are usually called @code{.authinfo} or @code{.netrc};
  nowadays @code{.authinfo} seems to be more popular and the auth-source
  library encourages this confusion by making it the default, as you'll
  see later.
  
 -If you have problems with the port, set @code{auth-source-debug} to
 -@code{t} and see what port the library is checking in the
 -@code{*Messages*} buffer.  Ditto for any other problems, your first
 -step is always to see what's being checked.  The second step, of
 +If you have problems with the search, set @code{auth-source-debug} to
 +@code{t} and see what host, port, and user the library is checking in
 +the @code{*Messages*} buffer.  Ditto for any other problems, your
 +first step is always to see what's being checked.  The second step, of
  course, is to write a blog entry about it and wait for the answer in
  the comments.
  
@@@ -149,45 -120,40 +149,45 @@@ auth-source library is not loaded for s
  @defvar auth-sources
  
  The @code{auth-sources} variable tells the auth-source library where
 -your netrc files live for a particular host and protocol.  While you
 -can get fancy, the default and simplest configuration is:
 +your netrc files or Secret Service API collection items live for a
 +particular host and protocol.  While you can get fancy, the default
 +and simplest configuration is:
  
  @lisp
 -(setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
 +;;; old default: required :host and :port, not needed anymore
 +(setq auth-sources '((:source "~/.authinfo.gpg" :host t :port t)))
 +;;; mostly equivalent (see below about fallbacks) but shorter:
 +(setq auth-sources '((:source "~/.authinfo.gpg")))
 +;;; even shorter and the @emph{default}:
 +(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo"))
 +;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API})
 +(setq auth-sources '("secrets:Login"))
  @end lisp
  
 -This says ``for any host and any protocol, use just that one file.''
 -Sweet simplicity.  In fact, this is already the default, so unless you
 -want to move your netrc file, it will just work if you have that
 -file.  You may not, though, so make sure it exists.
 -
  By adding multiple entries to @code{auth-sources} with a particular
  host or protocol, you can have specific netrc files for that host or
  protocol.  Usually this is unnecessary but may make sense if you have
  shared netrc files or some other unusual setup (90% of Emacs users
  have unusual setups and the remaining 10% are @emph{really} unusual).
  
 +Here's a mixed example using two sources:
 +
 +@lisp
 +(setq auth-sources '((:source (:secrets default) :host "myserver" :user "joe")
 +                     "~/.authinfo.gpg"))
 +@end lisp
 +
  @end defvar
  
  If you don't customize @code{auth-sources}, you'll have to live with
  the defaults: any host and any port are looked up in the netrc
 -file @code{~/.authinfo.gpg}.  This is an encrypted file if and only if
 -you set up EPA, which is strongly recommended.
 +file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file
 +(@pxref{GnuPG and EasyPG Assistant Configuration}).  
  
 -@lisp
 -(require 'epa-file)
 -(epa-file-enable)
 -;;; VERY important if you want symmetric encryption
 -;;; irrelevant if you don't
 -(setq epa-file-cache-passphrase-for-symmetric-encryption t)
 -@end lisp
 +If that fails, the unencrypted netrc file @code{~/.authinfo} will
 +be used.
  
 -The simplest working netrc line example is one without a port.
 +The typical netrc line example is without a port.
  
  @example
  machine YOURMACHINE login YOU password YOURPASSWORD
@@@ -224,92 -190,44 +224,92 @@@ don't use a port entry, you match any T
  earlier.  Since Tramp has about 88 connection methods, this may be
  necessary if you have an unusual (see earlier comment on those) setup.
  
 +@node Secret Service API
 +@chapter Secret Service API
 +
 +TODO: how does it work generally, how does secrets.el work, some examples.
 +
  @node Help for developers
  @chapter Help for developers
  
 -The auth-source library only has one function for external use.
 +The auth-source library only has a few functions for external use.
  
 -@defun auth-source-user-or-password mode host port
 +@defun auth-source-search SPEC
  
 -Retrieve appropriate authentication tokens, determined by @var{mode},
 -for host @var{host} and @var{port}.  If @code{auth-source-debug} is t,
 -debugging messages will be printed.  Set @code{auth-source-debug} to a
 -function to use that function for logging.  The parameters passed will
 -be the same that the @code{message} function takes, that is, a string
 -formatting spec and optional parameters.
 +TODO: how to include docstring?
  
 -If @var{mode} is a list of strings, the function will return a list of
 -strings or @code{nil} objects (thus you can avoid parsing the netrc
 -file more than once).  If it's a string, the function will return a
 -string or a @code{nil} object.  Currently only the modes ``login'' and
 -``password'' are recognized but more may be added in the future.
 +@end defun
  
 -@var{host} is a string containing the host name.
 +@defun auth-source-delete SPEC
  
 -@var{port} contains the protocol name (e.g. ``imap'') or
 -a port number.  It must be a string, corresponding to the port in the
 -user's netrc files.
 +TODO: how to include docstring?
  
 -@example
 -;; IMAP example
 -(setq auth (auth-source-user-or-password
 -            '("login" "password")
 -            "anyhostnamehere"
 -            "imap"))
 -(nth 0 auth) ; the login name
 -(nth 1 auth) ; the password
 -@end example
 +@end defun
 +
 +@defun auth-source-forget SPEC
 +
 +TODO: how to include docstring?
 +
 +@end defun
 +
 +@defun auth-source-forget+ SPEC
 +
 +TODO: how to include docstring?
  
  @end defun
  
 +@node GnuPG and EasyPG Assistant Configuration
 +@appendix GnuPG and EasyPG Assistant Configuration
 +
 +If you don't customize @code{auth-sources}, the auth-source library
 +reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file.  Then
 +it will check @code{~/.authinfo} but it's not recommended to use such
 +an unencrypted file.
 +
 +In Emacs 23 or later there is an option @code{auto-encryption-mode} to
 +automatically decrypt @code{*.gpg} files.  It is enabled by default.
 +If you are using earlier versions of Emacs, you will need:
 +
 +@lisp
 +(require 'epa-file)
 +(epa-file-enable)
 +@end lisp
 +
 +If you want your GnuPG passwords to be cached, set up @code{gpg-agent}
 +or EasyPG Assitant
 +(@pxref{Caching Passphrases, , Caching Passphrases, epa}).
 +
 +To quick start, here are some questions:
 +
 +@enumerate
 +@item
 +Do you use GnuPG version 2 instead of GnuPG version 1?
 +@item
 +Do you use symmetric encryption rather than public key encryption?
 +@item
 +Do you want to use gpg-agent?
 +@end enumerate
 +
 +Here are configurations depending on your answers:
 +
 +@multitable {111} {222} {333} {configuration configuration configuration}
 +@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
 +@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
 +@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
 +@item Yes @tab No @tab Yes @tab Set up gpg-agent.
 +@item Yes @tab No @tab No @tab You can't, without gpg-agent.
 +@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
 +@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
 +@item No @tab No @tab Yes @tab Set up gpg-agent.
 +@item No @tab No @tab No @tab You can't, without gpg-agent.
 +@end multitable
 +
 +To set up gpg-agent, follow the instruction in GnuPG manual
 +(@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}).
 +
 +To set up elisp passphrase cache, set
 +@code{epa-file-cache-passphrase-for-symmetric-encryption}.
 +
  @node Index
  @chapter Index
  @printindex cp
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: 7b835fd3-473f-40fc-9776-1c4e49d26c94
 -@end ignore
diff --combined doc/misc/autotype.texi
index bdf9ae7ab17ced1fffcb322d9860b592199df53c,7f9dd0daa02f96b8302a6a90037958c61fb19950..2e66c78a3cbc5402b8def01ca9b3592306efc15b
@@@ -10,7 -10,8 +10,7 @@@
  @c  @cindex autotypist
  
  @copying
 -Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004, 2005,
 -2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1994-1995, 1999, 2001-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -26,7 -27,7 +26,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Autotype: (autotype).         Convenient features for text that you
                                    enter frequently in Emacs.
@@@ -663,3 -664,7 +663,3 @@@ of the expansion possibilities
  @printindex vr
  
  @bye
 -
 -@ignore
 -   arch-tag: 54001b27-5ef8-4a9d-a199-905d650fafba
 -@end ignore
diff --combined doc/misc/calc.texi
index e98ea807f637a9282eb12cfb1b643b0850860623,0a595d90b806cf45bedd61a8980f0791093bbedf..b9d4f8c4a2343d2103858d1c122c862ea6767ba8
@@@ -7,8 -7,6 +7,8 @@@
  @setchapternewpage odd
  @comment %**end of header (This is for running Texinfo on a region.)
  
 +@include emacsver.texi
 +
  @c The following macros are used for conditional output for single lines.
  @c @texline foo
  @c    `foo' will appear only in TeX output
@@@ -78,6 -76,7 +78,6 @@@
  @newcount@calcpageno
  @newtoks@calcoldeverypar @calcoldeverypar=@everypar
  @everypar={@calceverypar@the@calcoldeverypar}
 -@ifx@turnoffactive@undefinedzzz@def@turnoffactive{}@fi
  @ifx@ninett@undefinedzzz@font@ninett=cmtt9@fi
  @catcode`@\=0 \catcode`\@=11
  \r@ggedbottomtrue
  This file documents Calc, the GNU Emacs calculator.
  @end ifinfo
  @ifnotinfo
 -This file documents Calc, the GNU Emacs calculator, included with GNU Emacs 23.3.
 +This file documents Calc, the GNU Emacs calculator, included with 
 +GNU Emacs @value{EMACSVER}.
  @end ifnotinfo
  
 -Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
 -2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1990-1991, 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -111,7 -110,7 +111,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Calc: (calc).                 Advanced desk calculator and mathematical tool.
  @end direntry
@@@ -1805,6 -1804,7 +1805,6 @@@ or, in large mathematical notation
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ 2 + { 3 \times 4 \times 5 \over 6 \times 7^8 } - 9 $$
  \afterdisplay
@@@ -3358,6 -3358,7 +3358,6 @@@ Suppose we had the following set of equ
  @end group
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplayh
  $$ \openup1\jot \tabskip=0pt plus1fil
  \halign to\displaywidth{\tabskip=0pt
@@@ -3384,6 -3385,7 +3384,6 @@@ This can be cast into the matrix equati
  @end group
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \pmatrix{ 1 & 2 & 3 \cr 4 & 5 & 6 \cr 7 & 6 & 0 }
     \times
@@@ -3455,6 -3457,7 +3455,6 @@@ in terms of @expr{a} and @expr{b}
  @end group
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \eqalign{ x &+ a y = 6 \cr
               x &+ b y = 10}
@@@ -3480,6 -3483,7 +3480,6 @@@ on the left by the transpose of @expr{A
  @samp{trn(A)*A*X = trn(A)*B}.
  @end ifnottex
  @tex
 -\turnoffactive
  $A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}.
  @end tex
  Now 
@@@ -3502,6 -3506,7 +3502,6 @@@ system
  @end group
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplayh
  $$ \openup1\jot \tabskip=0pt plus1fil
  \halign to\displaywidth{\tabskip=0pt
@@@ -3773,6 -3778,7 +3773,6 @@@ m = (N sum(x y) - sum(x) sum(y)) / (N s
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ m = {N \sum x y - \sum x \sum y  \over
          N \sum x^2 - \left( \sum x \right)^2} $$
@@@ -3814,6 -3820,7 +3814,6 @@@ respectively.  (We could have used @kbd
  @samp{sum(x y)}.)
  @end ifnottex
  @tex
 -\turnoffactive
  These are $\sum x$, $\sum x^2$, $\sum y$, and $\sum x y$,
  respectively.  (We could have used \kbd{*} to compute $\sum x^2$ and
  $\sum x y$.)
@@@ -3867,6 -3874,7 +3867,6 @@@ b = (sum(y) - m sum(x)) / 
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ b = {\sum y - m \sum x \over N} $$
  \afterdisplay
@@@ -5215,6 -5223,7 +5215,6 @@@ down to the formula
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \displaylines{
        \qquad {h \over 3} (f(a) + 4 f(a+h) + 2 f(a+2h) + 4 f(a+3h) + \cdots
@@@ -5236,6 -5245,7 +5236,6 @@@ h * (f(a) + f(a+h) + f(a+2h) + f(a+3h) 
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ h (f(a) + f(a+h) + f(a+2h) + f(a+3h) + \cdots
             + f(a+(n-2)h) + f(a+(n-1)h)) $$
@@@ -5676,6 -5686,7 +5676,6 @@@ cos(x) = 1 - x^2 / 2! + x^4 / 4! - x^6 
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \cos x = 1 - {x^2 \over 2!} + {x^4 \over 4!} - {x^6 \over 6!} + \cdots $$
  \afterdisplay
@@@ -5693,6 -5704,7 +5693,6 @@@ cos(x) = 1 - x^2 / 2! + O(x^3
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \cos x = 1 - {x^2 \over 2!} + O(x^3) $$
  \afterdisplay
@@@ -6222,7 -6234,7 +6222,7 @@@ new_x = x - f(x)/f'(x
  @end ifnottex
  @tex
  \beforedisplay
 -$$ x_{\rm new} = x - {f(x) \over f'(x)} $$
 +$$ x_{\rm new} = x - {f(x) \over f^{\prime}(x)} $$
  \afterdisplay
  @end tex
  
@@@ -6324,6 -6336,7 +6324,6 @@@ s(n+1,m) = s(n,m-1) - n s(n,m)   for n 
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \eqalign{ s(n,n)   &= 1 \qquad \hbox{for } n \ge 0,  \cr
               s(n,0)   &= 0 \qquad \hbox{for } n > 0, \cr
@@@ -6862,6 -6875,7 +6862,6 @@@ get the row sum.  Similarly, use @kbd{[
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \eqalign{ x &+ a y = 6 \cr
               x &+ b y = 10}
@@@ -6925,6 -6939,7 +6925,6 @@@ which we can solve using Calc's @samp{/
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplayh
  $$ \openup1\jot \tabskip=0pt plus1fil
  \halign to\displaywidth{\tabskip=0pt
@@@ -7059,6 -7074,7 +7059,6 @@@ the first job is to form the matrix tha
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ m \times x + b \times 1 = y $$
  \afterdisplay
@@@ -7849,6 -7865,7 +7849,6 @@@ So the result when we take the modulo a
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ 3 (3 a + b - 511 m) + c - 511 n $$
  \afterdisplay
@@@ -7864,6 -7881,7 +7864,6 @@@ the distributive law yield
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ 9 a + 3 b + c - 511\times3 m - 511 n $$
  \afterdisplay
@@@ -7881,8 -7899,9 +7881,8 @@@ term.  So we can take it out to get an 
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
 -$$ 9 a + 3 b + c - 511 n' $$
 +$$ 9 a + 3 b + c - 511 n^{\prime} $$
  \afterdisplay
  @end tex
  
@@@ -12148,7 -12167,7 +12148,7 @@@ You are prompted for a file name.  All 
  their default values, then settings from the file you named are loaded
  if this file exists, and this file becomes the one that Calc will
  use in the future for commands like @kbd{m m}.  The default settings
 -file name is @file{~/.calc.el}.  You can see the current file name by
 +file name is @file{~/.emacs.d/calc.el}.  You can see the current file name by
  giving a blank response to the @kbd{m F} prompt.  See also the
  discussion of the @code{calc-settings-file} variable; @pxref{Customizing Calc}.
  
@@@ -12270,21 -12289,15 +12270,21 @@@ may be executed with @kbd{x} or @kbd{M-
  toggle the Inverse and/or Hyperbolic flags and then execute the
  corresponding base command (@code{calc-sin} in this case).
  
 -The Inverse and Hyperbolic flags apply only to the next Calculator
 -command, after which they are automatically cleared.  (They are also
 -cleared if the next keystroke is not a Calc command.)  Digits you
 -type after @kbd{I} or @kbd{H} (or @kbd{K}) are treated as prefix
 -arguments for the next command, not as numeric entries.  The same
 -is true of @kbd{C-u}, but not of the minus sign (@kbd{K -} means to
 -subtract and keep arguments).
 -
 -The third Calc prefix flag, @kbd{K} (keep-arguments), is discussed
 +@kindex O
 +@pindex calc-option
 +The @kbd{O} key (@code{calc-option}) sets another flag, the
 +@dfn{Option Flag}, which also can alter the subsequent Calc command in
 +various ways. 
 +
 +The Inverse, Hyperbolic and Option flags apply only to the next
 +Calculator command, after which they are automatically cleared.  (They
 +are also cleared if the next keystroke is not a Calc command.)  Digits
 +you type after @kbd{I}, @kbd{H} or @kbd{O} (or @kbd{K}) are treated as
 +prefix arguments for the next command, not as numeric entries.  The
 +same is true of @kbd{C-u}, but not of the minus sign (@kbd{K -} means
 +to subtract and keep arguments).
 +
 +Another Calc prefix flag, @kbd{K} (keep-arguments), is discussed
  elsewhere.  @xref{Keep Arguments}.
  
  @node Calculation Modes, Simplification Modes, Inverse and Hyperbolic, Mode Settings
@@@ -13162,13 -13175,12 +13162,13 @@@ in the current radix.  (Larger integer
  entirety.) 
  
  @cindex Two's complements
 -With the binary, octal and hexadecimal display modes, Calc can
 -display @expr{w}-bit integers using two's complement notation.  This
 -option is selected with the key sequences @kbd{C-u d 2}, @kbd{C-u d 8}
 -and @kbd{C-u d 6}, respectively, and a negative word size might be
 -appropriate (@pxref{Binary Functions}). In two's complement 
 -notation, the integers in the (nearly) symmetric interval from
 +Calc can display @expr{w}-bit integers using two's complement
 +notation, although this is most useful with the binary, octal and
 +hexadecimal display modes.  This option is selected by using the
 +@kbd{O} option prefix before setting the display radix, and a negative word
 +size might be appropriate (@pxref{Binary Functions}). In two's
 +complement notation, the integers in the (nearly) symmetric interval
 +from
  @texline @math{-2^{w-1}}
  @infoline @expr{-2^(w-1)}
  to
  @texline @math{\sin(2 + x)}.
  @infoline @expr{sin(2 + x)}.
  
 +The @TeX{} specific unit names (@pxref{Predefined Units}) will not use
 +the @samp{tex} prefix;  the unit name for a @TeX{} point will be
 +@samp{pt} instead of @samp{texpt}, for example.
 +
  Function and variable names not treated specially by @TeX{} and La@TeX{}
  are simply written out as-is, which will cause them to come out in
  italic letters in the printed document.  If you invoke @kbd{d T} or
@@@ -14393,6 -14401,7 +14393,6 @@@ $$ \sin\left( a^2 \over b_i \right) $
  @end group
  @end example
  @tex
 -\turnoffactive
  $$ [3 + 4i, {3 \over 4}, 3 \pm 4, [ 3 \ldots \infty)] $$
  @end tex
  @sp 1
@@@ -14418,6 -14427,7 +14418,6 @@@ $$ [|a|, \left| a \over b \right|
  @end group
  @end example
  @tex
 -\turnoffactive
  $$ [\sin{a}, \sin{2 a}, \sin(2 + a), \sin\left( {a \over b} \right)] $$
  @end tex
  @sp 2
@@@ -14450,6 -14460,7 +14450,6 @@@ First with @samp{\def\evalto@{@}}, the
  @end group
  @end example
  @tex
 -\turnoffactive
  $$ 2 + 3 \to 5 $$
  $$ 5 $$
  @end tex
@@@ -14464,6 -14475,7 +14464,6 @@@ First with standard @code{\to}, then wi
  @end group
  @end example
  @tex
 -\turnoffactive
  $$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$
  {\let\to\Rightarrow
  $$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$}
@@@ -14480,6 -14492,7 +14480,6 @@@ Matrices normally, then changing @code{
  @end group
  @end example
  @tex
 -\turnoffactive
  $$ \matrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
  $$ \pmatrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
  @end tex
@@@ -15993,7 -16006,7 +15993,7 @@@ No line breaking (@kbd{d b})
  Selections show deep structure (@kbd{j b}; @pxref{Making Selections}).
  
  @item Save
 -Record modes in @file{~/.calc.el} (@kbd{m R}; @pxref{General Mode Commands}).
 +Record modes in @file{~/.emacs.d/calc.el} (@kbd{m R}; @pxref{General Mode Commands}).
  
  @item Local
  Record modes in Embedded buffer (@kbd{m R}).
@@@ -17915,6 -17928,7 +17915,6 @@@ ddb(cost, salv, life, per) = --------
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  $$ \code{fv}(r, n, p) = p { (1 + r)^n - 1 \over r } $$
  $$ \code{fvb}(r, n, p) = p { ((1 + r)^n - 1) (1 + r) \over r } $$
  $$ \code{fvl}(r, n, p) = p (1 + r)^n $$
@@@ -18570,6 -18584,7 +18570,6 @@@ letter gamma).  You can obtain these us
  and @kbd{H I f G} [@code{gammaG}] commands.
  @end ifnottex
  @tex
 -\turnoffactive
  The functions corresponding to the integrals that define $P(a,x)$
  and $Q(a,x)$ but without the normalizing $1/\Gamma(a)$
  factor are called $\gamma(a,x)$ and $\Gamma(a,x)$, respectively.
@@@ -20036,20 -20051,6 +20036,20 @@@ range are ignored.  (You can tell if el
  that the counts in the result vector don't add up to the length of the
  input vector.)
  
 +If no prefix is given, then you will be prompted for a vector which
 +will be used to determine the bins. (If a positive integer is given at
 +this prompt, it will be still treated as if it were given as a
 +prefix.)  Each bin will consist of the interval of numbers closest to
 +the corresponding number of this new vector; if the vector 
 +@expr{[a, b, c, ...]} is entered at the prompt, the bins will be 
 +@expr{(-inf, (a+b)/2]}, @expr{((a+b)/2, (b+c)/2]}, etc.  The result of 
 +this command will be a vector counting how many elements of the
 +original vector are in each bin.
 +
 +The result will then be a vector with the same length as this new vector;
 +each element of the new vector will be replaced by the number of
 +elements of the original vector which are closest to it.
 +
  @kindex H v H
  @kindex H V H
  With the Hyperbolic flag, @kbd{H V H} pulls two vectors from the stack.
@@@ -20551,6 -20552,7 +20551,6 @@@ this is the weighted mean of the @expr{
  @texline @math{1 /\sigma^2}.
  @infoline @expr{1 / s^2}.
  @tex
 -\turnoffactive
  $$ \mu = { \displaystyle \sum { x_i \over \sigma_i^2 } \over
             \displaystyle \sum { 1 \over \sigma_i^2 } } $$
  @end tex
@@@ -20584,6 -20586,7 +20584,6 @@@ root of the reciprocal of the sum of th
  of the input errors.  (I.e., the variance is the reciprocal of the
  sum of the reciprocals of the variances.)
  @tex
 -\turnoffactive
  $$ \sigma_\mu^2 = {1 \over \displaystyle \sum {1 \over \sigma_i^2}} $$
  @end tex
  If the inputs are plain
@@@ -20593,6 -20596,7 +20593,6 @@@ out to be equivalent to calculating th
  then assuming each value's error is equal to this standard
  deviation.)
  @tex
 -\turnoffactive
  $$ \sigma_\mu^2 = {\sigma^2 \over N} $$
  @end tex
  
@@@ -20625,6 -20629,7 +20625,6 @@@ command computes the harmonic mean of t
  defined as the reciprocal of the arithmetic mean of the reciprocals
  of the values.
  @tex
 -\turnoffactive
  $$ { N \over \displaystyle \sum {1 \over x_i} } $$
  @end tex
  
@@@ -20638,6 -20643,7 +20638,6 @@@ is the @var{n}th root of the product o
  equal to the @code{exp} of the arithmetic mean of the logarithms
  of the data values.
  @tex
 -\turnoffactive
  $$ \exp \left ( \sum { \ln x_i } \right ) =
     \left ( \prod { x_i } \right)^{1 / N} $$
  @end tex
@@@ -20649,6 -20655,7 +20649,6 @@@ mean'' of two numbers taken from the st
  replacing the two numbers with their arithmetic mean and geometric
  mean, then repeating until the two values converge.
  @tex
 -\turnoffactive
  $$ a_{i+1} = { a_i + b_i \over 2 } , \qquad b_{i+1} = \sqrt{a_i b_i} $$
  @end tex
  
@@@ -20671,6 -20678,7 +20671,6 @@@ deviation, whose value is the square ro
  the differences between the values and the mean of the @expr{N} values,
  divided by @expr{N-1}.
  @tex
 -\turnoffactive
  $$ \sigma^2 = {1 \over N - 1} \sum (x_i - \mu)^2 $$
  @end tex
  
@@@ -20697,6 -20705,7 +20697,6 @@@ is used when the input represents a sam
  data values, so that the mean computed from the input is itself
  only an estimate of the true mean.
  @tex
 -\turnoffactive
  $$ \sigma^2 = {1 \over N} \sum (x_i - \mu)^2 $$
  @end tex
  
@@@ -20761,6 -20770,7 +20761,6 @@@ are composed of error forms, the error 
  is taken as the square root of the sum of the squares of the two
  input errors.
  @tex
 -\turnoffactive
  $$ \sigma_{x\!y}^2 = {1 \over N-1} \sum (x_i - \mu_x) (y_i - \mu_y) $$
  $$ \sigma_{x\!y}^2 =
      {\displaystyle {1 \over N-1}
@@@ -20788,6 -20798,7 +20788,6 @@@ This is defined by the covariance of th
  product of their standard deviations.  (There is no difference
  between sample or population statistics here.)
  @tex
 -\turnoffactive
  $$ r_{x\!y} = { \sigma_{x\!y}^2 \over \sigma_x^2 \sigma_y^2 } $$
  @end tex
  
  
  @noindent
  Every character not part of the sub-formula @samp{b} has been changed
 -to a dot.  The @samp{*} next to the line number is to remind you that
 +to a dot. (If the customizable variable
 +@code{calc-highlight-selections-with-faces} is non-nil, then the characters
 +not part of the sub-formula are de-emphasized by using a less
 +noticeable face instead of using dots. @pxref{Displaying Selections}.)
 +The @samp{*} next to the line number is to remind you that
  the formula has a portion of it selected.  (In this case, it's very
  obvious, but it might not always be.  If Embedded mode is enabled,
  the word @samp{Sel} also appears in the mode line because the stack
@@@ -21736,9 -21743,6 +21736,9 @@@ of the hierarchy simply by pointing to 
  @noindent
  @kindex j d
  @pindex calc-show-selections
 +@vindex calc-highlight-selections-with-faces
 +@vindex calc-selected-face
 +@vindex calc-nonselected-face
  The @kbd{j d} (@code{calc-show-selections}) command controls how
  selected sub-formulas are displayed.  One of the alternatives is
  illustrated in the above examples; if we press @kbd{j d} we switch
@@@ -21753,13 -21757,6 +21753,13 @@@ by @samp{#} signs
          . . . .                   2 x + 1
  @end group
  @end smallexample
 +If the customizable variable
 +@code{calc-highlight-selections-with-faces} is non-nil, then the
 +non-selected portion of the formula will be de-emphasized by using a
 +less noticeable face (@code{calc-nonselected-face}) instead of dots
 +and the selected sub-formula will be highlighted by using a more
 +noticeable face (@code{calc-selected-face}) instead of @samp{#}
 +signs. (@pxref{Customizing Calc}.)
  
  @node Operating on Selections, Rearranging with Selections, Displaying Selections, Selecting Subformulas
  @subsection Operating on Selections
@@@ -24357,6 -24354,8 +24357,6 @@@ For example, suppose the data matri
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
 -\turnoffactive
  \beforedisplay
  $$ \pmatrix{ 1 & 2 & 3 & 4  & 5  \cr
               5 & 7 & 9 & 11 & 13 }
@@@ -24416,6 -24415,7 +24416,6 @@@ chi^2 = sum((y_i - (a + b x_i))^2, i, 1
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \chi^2 = \sum_{i=1}^N (y_i - (a + b x_i))^2 $$
  \afterdisplay
@@@ -24606,6 -24606,7 +24606,6 @@@ chi^2 = sum(((y_i - (a + b x_i)) / sigm
  @end example
  @end ifnottex
  @tex
 -\turnoffactive
  \beforedisplay
  $$ \chi^2 = \sum_{i=1}^N \left(y_i - (a + b x_i) \over \sigma_i\right)^2 $$
  \afterdisplay
@@@ -25380,6 -25381,7 +25380,6 @@@ any later ones are answered by reading 
  the stack.  Thus, @kbd{' k^2 @key{RET} ' k @key{RET} 1 @key{RET} 5 @key{RET} a + @key{RET}}
  produces the result 55.
  @tex
 -\turnoffactive
  $$ \sum_{k=1}^5 k^2 = 55 $$
  @end tex
  
@@@ -27675,7 -27677,6 +27675,7 @@@ begin with the @kbd{u} prefix key
  * The Units Table::
  * Predefined Units::
  * User-Defined Units::
 +* Logarithmic Units::
  @end menu
  
  @node Basic Operations on Units, The Units Table, Units, Units
@@@ -27994,14 -27995,6 +27994,14 @@@ than the point used by @TeX{}), @code{t
  @code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point, 
  all dimensions representable in @TeX{} are multiples of this value).
  
 +When Calc is using the @TeX{} or La@TeX{} language mode (@pxref{TeX
 +and LaTeX Language Modes}), the @TeX{} specific unit names will not
 +use the @samp{tex} prefix; the unit name for a @TeX{} point will be
 +@samp{pt} instead of @samp{texpt}, for example.  To avoid conflicts,
 +the unit names for pint and parsec will simply be @samp{pint} and
 +@samp{parsec} instead of @samp{pt} and @samp{pc}.
 +
 +
  The unit @code{e} stands for the elementary (electron) unit of charge;
  because algebra command could mistake this for the special constant
  @expr{e}, Calc provides the alternate unit name @code{ech} which is
@@@ -28037,7 -28030,7 +28037,7 @@@ really is unitless.
  
  @c Describe angular units, luminosity vs. steradians problem.
  
 -@node User-Defined Units,  , Predefined Units, Units
 +@node User-Defined Units, Logarithmic Units, Predefined Units, Units
  @section User-Defined Units
  
  @noindent
@@@ -28115,254 -28108,12 +28115,254 @@@ possible to create user-defined tempera
  @cindex Calc init file, user-defined units
  The @kbd{u p} (@code{calc-permanent-units}) command stores the user-defined
  units in your Calc init file (the file given by the variable
 -@code{calc-settings-file}, typically @file{~/.calc.el}), so that the
 +@code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}), so that the
  units will still be available in subsequent Emacs sessions.  If there
  was already a set of user-defined units in your Calc init file, it
  is replaced by the new set.  (@xref{General Mode Commands}, for a way to
  tell Calc to use a different file for the Calc init file.)
  
 +@node Logarithmic Units,  , User-Defined Units, Units
 +@section Logarithmic Units
 +
 +The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic
 +units which are typically manipulated differently than standard units.
 +Calc provides commands to work with these logarithmic units.
 +
 +Decibels and nepers are used to measure power quantities as well as 
 +field quantities (quantities whose squares are proportional to power).
 +The decibel and neper values of a quantity are relative to
 +a reference quantity; for example, the decibel value of a sound
 +pressure level of 
 +@infoline @math{60 uPa}
 +@texline @math{60 \mu{\rm Pa}}
 +relative to 
 +@infoline @math{20 uPa}
 +@texline @math{20 \mu{\rm Pa}}
 +(the threshhold of human hearing) is 
 +@infoline @math{20 log10(60 uPa/ 20 uPa) dB = 20 log10(3) dB},
 +@texline  @math{20 \log_{10}(60 \mu{\rm Pa}/20 \mu{\rm Pa}) {\rm dB} = 20 \log_{10}(3) {\rm dB}},
 +which is about 
 +@infoline @math{9.54 dB}.
 +@texline @math{9.54 {\rm dB}}.
 +Note that in taking the ratio, the original units cancel and so these
 +logarithmic units are dimensionless. 
 +
 +@vindex calc-logunits-power-reference
 +@vindex calc-logunits-field-reference
 +The Calc commands for the logarithmic units assume that power quantities
 +are being used unless the @kbd{H} prefix is used, in which case they assume that 
 +field quantities are being used.  For power quantities, Calc uses 
 +@infoline @math{1 mW} 
 +@texline @math{1 {\rm mW}}
 +as the default reference quantity; this default can be changed by changing 
 +the value of the customizable variable
 +@code{calc-logunits-power-reference} (@pxref{Customizing Calc}).
 +For field quantities, Calc uses 
 +@infoline @math{20 uPa} 
 +@texline @math{20 \mu{\rm Pa}}
 +as the default reference quantity; this is the value used in acoustics
 +which is where decibels are commonly encountered.  This default can be
 +changed by changing the value of the customizable variable
 +@code{calc-logunits-field-reference} (@pxref{Customizing Calc}).  A
 +non-default reference quantity will be read from the stack if the
 +capital @kbd{O} prefix is used.
 +
 +The decibel level of a power 
 +@infoline @math{P1},
 +@texline @math{P_1},
 +relative to a reference power 
 +@infoline @math{P0},
 +@texline @math{P_0},
 +is defined to be
 +@infoline @math{10 log10(P1/P0) dB}.
 +@texline @math{10 \log_{10}(P_{1}/P_{0}) {\rm dB}}.
 +(The factor of 10 is because a decibel, as its name implies, is
 +one-tenth of a bel. The bel, named after Alexander Graham Bell, was
 +considered to be too large of a unit and was effectively replaced by
 +the decibel.)  If @math{F} is a field quantity with power
 +@math{P=k F^2}, then a reference quantity of 
 +@infoline @math{F0}
 +@texline @math{F_0}
 +would correspond to a power of 
 +@infoline @math{P0=k F0^2}.
 +@texline @math{P_{0}=kF_{0}^2}.
 +If
 +@infoline @math{P1=k F1^2},
 +@texline @math{P_{1}=kF_{1}^2},
 +then
 +
 +@ifnottex
 +@example 
 +10 log10(P1/P0) = 10 log10(F1^2/F0^2) = 20 log10(F1/F0).
 +@end example
 +@end ifnottex
 +@tex
 +$$ 10 \log_{10}(P_1/P_0) = 10 \log_{10}(F_1^2/F_0^2) = 20
 +\log_{10}(F_1/F_0)$$
 +@end tex
 +
 +@noindent
 +In order to get the same decibel level regardless of whether a field
 +quantity or the corresponding power quantity is used,  the decibel
 +level of a field quantity 
 +@infoline @math{F1},
 +@texline @math{F_1}, 
 +relative to a reference 
 +@infoline @math{F0},
 +@texline @math{F_0}, 
 +is defined as
 +@infoline @math{20 log10(F1/F0) dB}.
 +@texline @math{20 \log_{10}(F_{1}/F_{0}) {\rm dB}}.
 +
 +Nepers (named after John Napier, who is credited with inventing the
 +logarithm) are similar to bels except they use natural logarithms instead
 +of common logarithms.  The neper level of a power 
 +@infoline @math{P1},
 +@texline @math{P_1},
 +relative to a reference power 
 +@infoline @math{P0},
 +@texline @math{P_0},
 +is
 +@infoline @math{(1/2) ln(P1/P0) Np}.
 +@texline @math{(1/2) \ln(P_1/P_0) {\rm Np}}.
 +The neper level of a field 
 +@infoline @math{F1},
 +@texline @math{F_1},
 +relative to a reference field
 +@infoline @math{F0},
 +@texline @math{F_0},
 +is
 +@infoline @math{ln(F1/F0) Np}.
 +@texline @math{\ln(F_1/F_0) {\rm Np}}.
 +
 +@kindex l q
 +@pindex calc-logunits-quantity
 +@tindex powerquant
 +@tindex fieldquant
 +The @kbd{l q} (@code{calc-logunits-quantity}) [@code{powerquant}]
 +command computes the power quantity corresponding to a given number of
 +logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the
 +reference level will be read from the top of the stack. (In an
 +algebraic formula, @code{powerquant} can be given an optional second
 +argument which will be used for the reference level.) For example, 
 +@code{20 dB @key{RET} l q} will return @code{100 mW}; 
 +@code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}.   
 +The @kbd{H l q} [@code{fieldquant}] command behaves like @kbd{l q} but
 +computes field quantities instead of power quantities.
 +
 +@kindex l d
 +@pindex calc-logunits-dblevel
 +@tindex dbpowerlevel
 +@tindex dbfieldlevel
 +@kindex l n
 +@pindex calc-logunits-nplevel
 +@tindex nppowerlevel
 +@tindex npfieldlevel
 +The @kbd{l d} (@code{calc-logunits-dblevel}) [@code{dbpowerlevel}]
 +command will compute the decibel level of a power quantity using the
 +default reference level; @kbd{H l d} [@code{dbfieldlevel}] will
 +compute the decibel level of a field quantity.  The commands @kbd{l n} 
 +(@code{calc-logunits-nplevel}) [@code{nppowerlevel}] and @kbd{H l n} 
 +[@code{npfieldlevel}] will similarly compute neper levels.  With the
 +capital @kbd{O} prefix these commands will read a reference level
 +from the stack; in an algebraic formula the reference level can be
 +given as an optional second argument.
 +
 +@kindex l +
 +@pindex calc-logunits-add
 +@tindex lupoweradd
 +@tindex lufieldadd
 +@kindex l -
 +@pindex calc-logunits-sub
 +@tindex lupowersub
 +@tindex lufieldsub
 +@kindex l *
 +@pindex calc-logunits-mul
 +@tindex lupowermul
 +@tindex lufieldmul
 +@kindex l /
 +@pindex calc-logunits-div
 +@tindex lupowerdiv
 +@tindex lufielddiv
 +The sum of two power or field quantities doesn't correspond to the sum
 +of the corresponding decibel or neper levels.  If the powers
 +corresponding to decibel levels 
 +@infoline @math{D1} 
 +@texline @math{D_1} 
 +and 
 +@infoline @math{D2} 
 +@texline @math{D_2} 
 +are added, the corresponding decibel level ``sum'' will be 
 +
 +@ifnottex
 +@example
 +  10 log10(10^(D1/10) + 10^(D2/10)) dB.
 +@end example
 +@end ifnottex
 +@tex
 +$$ 10 \log_{10}(10^{D_1/10} + 10^{D_2/10}) {\rm dB}.$$
 +@end tex
 +
 +@noindent
 +When field quantities are combined, it often means the 
 +corresponding powers are added and so the above formula might be used.  
 +In acoustics, for example, the decibel sound pressure level is defined
 +using the field formula but the sound pressure levels are combined
 +as the sound power levels, and so the above formula should be used.  If 
 +two field quantities themselves are added, the new decibel level will be 
 +
 +
 +@ifnottex
 +@example
 +  20 log10(10^(D1/20) + 10^(D2/20)) dB.
 +@end example
 +@end ifnottex
 +@tex
 +$$ 20 \log_{10}(10^{D_1/20} + 10^{D_2/20}) {\rm dB}.$$
 +@end tex
 +
 +@noindent
 +If the power corresponding to @math{D} dB is multiplied by a number @math{N},
 +then the corresponding decibel level will be
 +
 +@ifnottex
 +@example
 +  D + 10 log10(N) dB,
 +@end example
 +@end ifnottex
 +@tex
 +$$ D + 10 \log_{10}(N) {\rm dB},$$
 +@end tex
 +
 +@noindent
 +if a field quantity is multiplied by @math{N} the corresponding decibel level
 +will be 
 +
 +@ifnottex
 +@example
 +  D + 20 log10(N) dB.
 +@end example
 +@end ifnottex
 +@tex
 +$$ D + 20 \log_{10}(N) {\rm dB}.$$
 +@end tex
 +
 +@noindent
 +There are similar formulas for combining nepers.  
 +The @kbd{l +} (@code{calc-logunits-add}) [@code{lupoweradd}] command
 +will ``add'' two logarithmic unit power levels this way; with the
 +@kbd{H} prefix, @kbd{H l +} [@code{lufieldadd}] will add logarithmic
 +unit field levels.  Similarly, logarithmic units can be
 +``subtracted'' with @kbd{l -} (@code{calc-logunits-sub}) 
 +[@code{lupowersub}] or @kbd{H l -} [@code{lufieldsub}]. 
 +The @kbd{l *} (@code{calc-logunits-mul}) [@code{lupowermul}] 
 +and @kbd{H l *} [@code{lufieldmul}] commands will ``multiply''
 +a logarithmic unit by a number; the @kbd{l /}
 +(@code{calc-logunits-divide})  [@code{lupowerdiv}] and  
 +@kbd{H l /} [@code{lufielddiv}] commands will ``divide'' a
 +logarithmic unit by a number. Note that the reference quantities don't
 +play a role in this arithmetic. 
 +
  @node Store and Recall, Graphics, Units, Top
  @chapter Storing and Recalling
  
@@@ -28758,7 -28509,7 +28758,7 @@@ names rather than prompting for the var
  @cindex Calc init file, variables
  The @kbd{s p} (@code{calc-permanent-variable}) command saves a
  variable's value permanently in your Calc init file (the file given by
 -the variable @code{calc-settings-file}, typically @file{~/.calc.el}), so
 +the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}), so
  that its value will still be available in future Emacs sessions.  You
  can re-execute @w{@kbd{s p}} later on to update the saved value, but the
  only way to remove a saved variable is to edit your calc init file
@@@ -31111,7 -30862,7 +31111,7 @@@ Two more mode-recording modes selectabl
  which are also available outside of Embedded mode.  
  (@pxref{General Mode Commands}.) They are @code{Save},  in which mode
  settings are recorded permanently in your Calc init file (the file given
 -by the variable @code{calc-settings-file}, typically @file{~/.calc.el})
 +by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el})
  rather than by annotating the current document, and no-recording
  mode (where there is no symbol like @code{Save} or @code{Local} in
  the mode line), in which mode-changing commands do not leave any
@@@ -31371,7 -31122,7 +31371,7 @@@ The @kbd{Z P} (@code{calc-user-define-p
  binding permanent so that it will remain in effect even in future Emacs
  sessions.  (It does this by adding a suitable bit of Lisp code into
  your Calc init file; that is, the file given by the variable
 -@code{calc-settings-file}, typically @file{~/.calc.el}.)  For example,
 +@code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}.)  For example,
  @kbd{Z P s} would register our @code{sincos} command permanently.  If
  you later wish to unregister this command you must edit your Calc init
  file by hand.  (@xref{General Mode Commands}, for a way to tell Calc to
@@@ -32104,7 -31855,7 +32104,7 @@@ step of @code{myfact} could have been w
  
  A good place to put your @code{defmath} commands is your Calc init file
  (the file given by @code{calc-settings-file}, typically
 -@file{~/.calc.el}), which will not be loaded until Calc starts.
 +@file{~/.emacs.d/calc.el}), which will not be loaded until Calc starts.
  If a file named @file{.emacs} exists in your home directory, Emacs reads
  and executes the Lisp forms in this file as it starts up.  While it may
  seem reasonable to put your favorite @code{defmath} commands there,
@@@ -35182,7 -34933,7 +35182,7 @@@ character of the prefix can simply be t
  
  Calc is controlled by many variables, most of which can be reset
  from within Calc.  Some variables are less involved with actual
 -calculation, and can be set outside of Calc using Emacs's
 +calculation and can be set outside of Calc using Emacs's
  customization facilities.  These variables are listed below.
  Typing @kbd{M-x customize-variable RET @var{variable-name} RET}
  will bring up a buffer in which the variable's value can be redefined.
@@@ -35205,9 -34956,7 +35205,9 @@@ If @code{calc-settings-file} is not you
  @code{nil}, then Calc will automatically load your settings file (if it
  exists) the first time Calc is invoked.
  
 -The default value for this variable is @code{"~/.calc.el"}.
 +The default value for this variable is @code{"~/.emacs.d/calc.el"}
 +unless the file @file{~/.calc.el} exists, in which case the default
 +value will be @code{"~/.calc.el"}.
  @end defvar
  
  @defvar calc-gnuplot-name
@@@ -35468,36 -35217,6 +35468,36 @@@ should also be added to @code{calc-embe
  and @code{calc-embedded-open-close-plain-alist}.
  @end defvar
  
 +@defvar  calc-logunits-power-reference
 +@defvarx calc-logunits-field-reference
 +See @ref{Logarithmic Units}.@*
 +The variables @code{calc-logunits-power-reference} and
 +@code{calc-logunits-field-reference} are unit expressions (written as
 +strings) which Calc will use as reference quantities for logarithmic
 +units.
 +
 +The default value of @code{calc-logunits-power-reference} is @code{"mW"}
 +and the default value of @code{calc-logunits-field-reference} is
 +@code{"20 uPa"}.  
 +@end defvar
 +
 +@defvar calc-highlight-selections-with-faces
 +@defvarx calc-selected-face
 +@defvarx calc-nonselected-face
 +See @ref{Displaying Selections}.@*
 +The variable @code{calc-highlight-selections-with-faces} 
 +determines how selected sub-formulas are distinguished.
 +If @code{calc-highlight-selections-with-faces} is nil, then 
 +a selected sub-formula is distinguished either by changing every
 +character not part of the sub-formula with a dot or by changing every
 +character in the sub-formula with a @samp{#} sign.  
 +If @code{calc-highlight-selections-with-faces} is t,
 +then a selected sub-formula is distinguished either by displaying the
 +non-selected portion of the formula with @code{calc-nonselected-face} 
 +or by displaying the selected sub-formula with
 +@code{calc-nonselected-face}.
 +@end defvar
 +
  @defvar calc-multiplication-has-precedence
  The variable @code{calc-multiplication-has-precedence} determines
  whether multiplication has precedence over division in algebraic
@@@ -35740,7 -35459,6 +35740,7 @@@ keystrokes are not listed in this summa
  @r{       @:      M     @:             @:        @:calc-more-recursion-depth@:}
  @r{       @:    I M     @:             @:        @:calc-less-recursion-depth@:}
  @r{      a@:      N     @:             @:     5  @:evalvn@:(a)}
 +@r{       @:      O     @:command      @:    32  @:@:Option}
  @r{       @:      P     @:             @:        @:@:pi}
  @r{       @:    I P     @:             @:        @:@:gamma}
  @r{       @:    H P     @:             @:        @:@:e}
  @r{    v x@:      k T   @:             @:        @:utpt@:(x,v)}
  @r{    v x@:    I k T   @:             @:        @:ltpt@:(x,v)}
  
 +@c
 +@r{    a b@:      l +   @:             @:     2  @:lupoweradd@:(a,b)}
 +@r{    a b@:    H l +   @:             @:     2  @:lufieldadd@:(a,b)}
 +@r{    a b@:      l -   @:             @:     2  @:lupowersub@:(a,b)}
 +@r{    a b@:    H l -   @:             @:     2  @:lufieldsub@:(a,b)}
 +@r{    a b@:      l *   @:             @:     2  @:lupowermul@:(a,b)}
 +@r{    a b@:    H l *   @:             @:     2  @:lufieldmul@:(a,b)}
 +@r{    a b@:      l /   @:             @:     2  @:lupowerdiv@:(a,b)}
 +@r{    a b@:    H l /   @:             @:     2  @:lufielddiv@:(a,b)}
 +@r{      a@:      l d   @:             @:     1  @:dbpowerlevel@:(a)}
 +@r{    a b@:    O l d   @:             @:     2  @:dbpowerlevel@:(a,b)}
 +@r{      a@:    H l d   @:             @:     1  @:dbfieldlevel@:(a)}
 +@r{    a b@:  O H l d   @:             @:     2  @:dbfieldlevel@:(a,b)}
 +@r{      a@:      l n   @:             @:     1  @:nppowerlevel@:(a)}
 +@r{    a b@:    O l n   @:             @:     2  @:nppowerlevel@:(a,b)}
 +@r{      a@:    H l n   @:             @:     1  @:npfieldlevel@:(a)}
 +@r{    a b@:  O H l n   @:             @:     2  @:npfieldlevel@:(a,b)}
 +@r{      a@:      l q   @:             @:     1  @:powerquant@:(a)}
 +@r{    a b@:    O l q   @:             @:     2  @:powerquant@:(a,b)}
 +@r{      a@:    H l q   @:             @:     1  @:fieldquant@:(a)}
 +@r{    a b@:  O H l q   @:             @:     2  @:fieldquant@:(a,b)}
 +
  @c
  @r{       @:      m a   @:             @: 12,13  @:calc-algebraic-mode@:}
  @r{       @:      m d   @:             @:        @:calc-degrees-mode@:}
@@@ -36873,3 -36569,8 +36873,3 @@@ the corresponding full Lisp name is der
  @printindex fn
  
  @bye
 -
 -
 -@ignore
 -   arch-tag: 77a71809-fa4d-40be-b2cc-da3e8fb137c0
 -@end ignore
diff --combined doc/misc/cc-mode.texi
index d4a870346ce2f3067b8bbf4c484573a98d50ad32,4b56e07226483350878656ae67d147a248359e9e..9ae9abd5e1abda387d2a7b02341fb7908acfb045
@@@ -159,7 -159,9 +159,7 @@@ CC Mod
  @copying
  This manual is for CC Mode in Emacs.
  
 -Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
 -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 -Free Software Foundation, Inc.
 +Copyright @copyright{} 1995-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -177,7 -179,7 +177,7 @@@ developing GNU and promoting software f
  
  @comment Info directory entry for use by install-info. The indentation
  @comment here is by request from the FSF folks.
- @dircategory Emacs
+ @dircategory Emacs editing modes
  @direntry
  * CC Mode: (ccmode).            Emacs mode for editing C, C++, Objective-C,
                                  Java, Pike, AWK, and CORBA IDL code.
@@@ -310,19 -312,19 +310,19 @@@ Indentation Engine Basic
  
  Syntactic Symbols
  
 -* Function Symbols::
 -* Class Symbols::
 -* Conditional Construct Symbols::
 -* Switch Statement Symbols::
 -* Brace List Symbols::
 -* External Scope Symbols::
 -* Paren List Symbols::
 -* Literal Symbols::
 -* Multiline Macro Symbols::
 -* Objective-C Method Symbols::
 -* Anonymous Class Symbol::
 -* Statement Block Symbols::
 -* K&R Symbols::
 +* Function Symbols::            
 +* Class Symbols::               
 +* Conditional Construct Symbols::  
 +* Switch Statement Symbols::    
 +* Brace List Symbols::          
 +* External Scope Symbols::      
 +* Paren List Symbols::          
 +* Literal Symbols::             
 +* Multiline Macro Symbols::     
 +* Objective-C Method Symbols::  
 +* Java Symbols::
 +* Statement Block Symbols::     
 +* K&R Symbols::                 
  
  Customizing Indentation
  
@@@ -3969,9 -3971,6 +3969,9 @@@ The first line in a ``topmost'' definit
  Topmost definition continuation lines.  This is only used in the parts
  that aren't covered by other symbols such as @code{func-decl-cont} and
  @code{knr-argdecl}.  @ref{Function Symbols}.
 +@item annotation-top-cont
 +Topmost definition continuation lines where all previous items are
 +annotations.  @ref{Java Symbols}.
  @item member-init-intro
  First line in a member initialization list.  @ref{Class Symbols}.
  @item member-init-cont
@@@ -4000,9 -3999,6 +4000,9 @@@ with an open brace.  @ref{Brace List Sy
  A statement.  @ref{Function Symbols}.
  @item statement-cont
  A continuation of a statement.  @ref{Function Symbols}.
 +@item annotation-var-cont
 +A continuation of a statement where all previous items are
 +annotations.  @ref{Java Symbols}.
  @item statement-block-intro
  The first line in a new statement block.  @ref{Conditional Construct
  Symbols}.
@@@ -4116,23 -4112,23 +4116,23 @@@ Symbols}
  @item inexpr-class
  A class definition inside an expression.  This is used for anonymous
  classes in Java.  It's also used for anonymous array initializers in
 -Java.  @ref{Anonymous Class Symbol}.
 +Java.  @ref{Java Symbols}.
  @end table
  
  @menu
 -* Function Symbols::
 -* Class Symbols::
 -* Conditional Construct Symbols::
 -* Switch Statement Symbols::
 -* Brace List Symbols::
 -* External Scope Symbols::
 -* Paren List Symbols::
 -* Literal Symbols::
 -* Multiline Macro Symbols::
 -* Objective-C Method Symbols::
 -* Anonymous Class Symbol::
 -* Statement Block Symbols::
 -* K&R Symbols::
 +* Function Symbols::            
 +* Class Symbols::               
 +* Conditional Construct Symbols::  
 +* Switch Statement Symbols::    
 +* Brace List Symbols::          
 +* External Scope Symbols::      
 +* Paren List Symbols::          
 +* Literal Symbols::             
 +* Multiline Macro Symbols::     
 +* Objective-C Method Symbols::  
 +* Java Symbols::
 +* Statement Block Symbols::     
 +* K&R Symbols::                 
  @end menu
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -4237,7 -4233,7 +4237,7 @@@ Hitting @kbd{C-c C-s} on line 5 shows t
  
  @noindent
  The primary syntactic symbol for this line is @code{access-label} as
 -this a label keyword that specifies access protection in C++.  However,
 +this is a label keyword that specifies access protection in C++.  However,
  because this line is also a top-level construct inside a class
  definition, the analysis actually shows two syntactic symbols.  The
  other syntactic symbol assigned to this line is @code{inclass}.
@@@ -4744,7 -4740,7 +4744,7 @@@ macros.}
  @xref{Custom Macros}, for more info about the treatment of macros.
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Objective-C Method Symbols, Anonymous Class Symbol, Multiline Macro Symbols, Syntactic Symbols
 +@node    Objective-C Method Symbols, Java Symbols, Multiline Macro Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
  @subsection Objective-C Method Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -4771,45 -4767,34 +4771,45 @@@ assigned @code{objc-method-args-cont} s
  assigned @code{objc-method-call-cont} syntax.
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Anonymous Class Symbol, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
 +@node    Java Symbols, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
 -@subsection Anonymous Class Symbol (Java)
 +@subsection Java Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  Java has a concept of anonymous classes which can look something like
  this:
  
  @example
 - 1: public void watch(Observable o) @{
 - 2:     o.addObserver(new Observer() @{
 - 3:             public void update(Observable o, Object arg) @{
 - 4:                 history.addElement(arg);
 - 5:             @}
 - 6:         @});
 - 7: @}
 + 1:  @@Test
 + 2:  public void watch(Observable o) @{
 + 3:      @@NonNull
 + 4:      Observer obs = new Observer() @{
 + 5:          public void update(Observable o, Object arg) @{
 + 6:              history.addElement(arg);
 + 7:          @}
 + 8:      @};
 + 9:      o.addObserver(obs);
 + 10: @}
  @end example
  
  @ssindex inexpr-class
  The brace following the @code{new} operator opens the anonymous class.
 -Lines 3 and 6 are assigned the @code{inexpr-class} syntax, besides the
 +Lines 5 and 8 are assigned the @code{inexpr-class} syntax, besides the
  @code{inclass} symbol used in normal classes.  Thus, the class will be
  indented just like a normal class, with the added indentation given to
  @code{inexpr-class}.  An @code{inexpr-class} syntactic element doesn't
  have an anchor position.
  
 +@ssindex annotation-top-cont
 +@ssindex annotation-var-cont
 +Line 2 is assigned the @code{annotation-top-cont} syntax, due to it being a
 +continuation of a topmost introduction with an annotation symbol preceding
 +the current line.  Similarly, line 4 is assigned the @code{annotation-var-cont}
 +syntax due to it being a continuation of a variable declaration where preceding
 +the declaration is an annotation.
 +
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 -@node    Statement Block Symbols, K&R Symbols, Anonymous Class Symbol, Syntactic Symbols
 +@node    Statement Block Symbols, K&R Symbols, Java Symbols, Syntactic Symbols
  @comment node-name, next, previous, up
  @subsection Statement Block Symbols
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@ -7012,3 -6997,4 +7012,3 @@@ Since most @ccmode{} variables are prep
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  @bye
 -
diff --combined doc/misc/cl.texi
index 13fe9b570e25cb6bccac24a436b1fc1e468d5caf,6bdc494a1a59fc5aaf125d5047d5da2be64094c9..afe7c94f4472ddc2f956a17d81366fc940bc0eb6
@@@ -5,7 -5,8 +5,7 @@@
  @copying
  This file documents the GNU Emacs Common Lisp emulation package.
  
 -Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1993, 2001-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -21,7 -22,7 +21,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * CL: (cl).                     Partial Common Lisp support for Emacs Lisp.
  @end direntry
@@@ -1016,10 -1017,10 +1016,10 @@@ frame-visible-p                   windo
  frame-width                       window-point
  get-register                      window-start
  getenv                            window-width
 -global-key-binding                x-get-cut-buffer
 -keymap-parent                     x-get-cutbuffer
 -local-key-binding                 x-get-secondary-selection
 -mark                              x-get-selection
 +global-key-binding                x-get-secondary-selection
 +keymap-parent                     x-get-selection
 +local-key-binding                 
 +mark                              
  mark-marker
  @end smallexample
  
@@@ -3739,10 -3740,10 +3739,10 @@@ that it passes in the list pointers the
  @code{car}s of the advancing pointers.
  @end defun
  
 -@defun mapc function seq &rest more-seqs
 +@defun cl-mapc function seq &rest more-seqs
  This function is like @code{mapcar*}, except that the values returned
  by @var{function} are ignored and thrown away rather than being
 -collected into a list.  The return value of @code{mapc} is @var{seq},
 +collected into a list.  The return value of @code{cl-mapc} is @var{seq},
  the first sequence.  This function is more general than the Emacs
  primitive @code{mapc}.
  @end defun
diff --combined doc/misc/dbus.texi
index 64d577f4387e94fee76ba71918bba662311b5900,b58fbcb22aeae480e0bbd2d2ea542b6af80c84ec..ad202f963aa1ceac366fc56354251ce19c9f7501
@@@ -5,11 -5,8 +5,11 @@@
  @c @setchapternewpage odd
  @c %**end of header
  
 +@syncodeindex vr cp
 +@syncodeindex fn cp
 +
  @copying
 -Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -25,7 -22,7 +25,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * D-Bus: (dbus).                Using D-Bus in Emacs.
  @end direntry
@@@ -53,10 -50,7 +53,10 @@@ another.  An overview of D-Bus can be f
  * Asynchronous Methods::        Calling methods non-blocking.
  * Receiving Method Calls::      Offering own methods.
  * Signals::                     Sending and receiving signals.
 +* Alternative Buses::           Alternative buses.
  * Errors and Events::           Errors and events.
 +* Index::                       Index including concepts, functions, variables.
 +
  * GNU Free Documentation License:: The license for this documentation.
  @end menu
  
@@@ -132,24 -126,14 +132,24 @@@ There are several basic functions whic
  registered names.  Internally they use the basic interface
  @samp{org.freedesktop.DBus}, which is supported by all objects of a bus.
  
 -@defun dbus-list-activatable-names
 -This function returns the D-Bus service names, which can be activated.
 -An activatable service is described in a service registration file.
 -Under GNU/Linux, such files are located at
 -@file{/usr/share/dbus-1/services/}.
 +@defun dbus-list-activatable-names &optional bus
 +This function returns the D-Bus service names, which can be activated
 +for @var{bus}.  It must be either the symbol @code{:system} (the
 +default) or the symbol @code{:session}.  An activatable service is
 +described in a service registration file.  Under GNU/Linux, such files
 +are located at @file{/usr/share/dbus-1/system-services/} (for the
 +@code{:system} bus) or @file{/usr/share/dbus-1/services/}.  An
 +activatable service is not necessarily registered at @var{bus} at already.
  
  The result is a list of strings, which is @code{nil} when there are no
 -activatable service names at all.
 +activatable service names at all.  Example:
 +
 +@lisp
 +;; Check, whether the document viewer can be accessed via D-Bus.
 +(member "org.gnome.evince.Daemon"
 +        (dbus-list-activatable-names :session))
 +@end lisp
 +
  @end defun
  
  @defun dbus-list-names bus
@@@ -164,7 -148,7 +164,7 @@@ strings like @samp{org.freedesktop.DBus
  @end defun
  
  @defun dbus-list-known-names bus
 -Retrieves all services which correspond to a known name in @var{bus}.
 +Retrieves all registered services which correspond to a known name in @var{bus}.
  A service has a known name if it doesn't start with @samp{:}.  The
  result is a list of strings, which is @code{nil} when there are no
  known names at all.
@@@ -434,8 -418,7 +434,8 @@@ Example
  @result{} "/org/freedesktop/SystemToolsBackends/UsersConfig"
  @end lisp
  
 -If @var{object} has no @var{attribute}, the function returns nil.
 +If @var{object} has no @var{attribute}, the function returns
 +@code{nil}.
  @end defun
  
  
@@@ -686,7 -669,7 +686,7 @@@ A @var{property} value can be retrieve
  @defun dbus-get-property bus service path interface property
  This function returns the value of @var{property} of @var{interface}.
  It will be checked at @var{bus}, @var{service}, @var{path}.  The
 -result can be any valid D-Bus value, or nil if there is no
 +result can be any valid D-Bus value, or @code{nil} if there is no
  @var{property}.  Example:
  
  @lisp
@@@ -880,12 -863,12 +880,12 @@@ Lisp function call.  The following mapp
  applied, when the corresponding D-Bus message is created:
  
  @example
 -@multitable {@code{t} and @code{nil}} {@expansion{}} {DBUS_TYPE_BOOLEAN}
 +@multitable {negative integer} {@expansion{}} {DBUS_TYPE_BOOLEAN}
  @item Lisp type               @tab              @tab D-Bus type
  @item
  @item @code{t} and @code{nil} @tab @expansion{} @tab DBUS_TYPE_BOOLEAN
 -@item number                  @tab @expansion{} @tab DBUS_TYPE_UINT32
 -@item integer                 @tab @expansion{} @tab DBUS_TYPE_INT32
 +@item natural number          @tab @expansion{} @tab DBUS_TYPE_UINT32
 +@item negative integer        @tab @expansion{} @tab DBUS_TYPE_INT32
  @item float                   @tab @expansion{} @tab DBUS_TYPE_DOUBLE
  @item string                  @tab @expansion{} @tab DBUS_TYPE_STRING
  @item list                    @tab @expansion{} @tab DBUS_TYPE_ARRAY
@@@ -900,26 -883,25 +900,26 @@@ symbol can be preceeded to the correspo
  types are represented by the type symbols @code{:byte},
  @code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32},
  @code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double},
 -@code{:string}, @code{:object-path} and @code{:signature}.
 +@code{:string}, @code{:object-path}, @code{:signature} and
 +@code{:unix-fd}.
  
  @noindent
  Example:
  
  @lisp
 -(dbus-call-method @dots{} @var{NUMBER} @var{STRING})
 +(dbus-call-method @dots{} @var{NAT-NUMBER} @var{STRING})
  @end lisp
  
  is equivalent to
  
  @lisp
 -(dbus-call-method @dots{} :uint32 @var{NUMBER} :string @var{STRING})
 +(dbus-call-method @dots{} :uint32 @var{NAT-NUMBER} :string @var{STRING})
  @end lisp
  
  but different to
  
  @lisp
 -(dbus-call-method @dots{} :int32 @var{NUMBER} :signature @var{STRING})
 +(dbus-call-method @dots{} :int32 @var{NAT-NUMBER} :signature @var{STRING})
  @end lisp
  
  The value for a byte D-Bus type can be any integer in the range 0
@@@ -1012,18 -994,17 +1012,18 @@@ Output parameters of D-Bus methods and 
  objects.
  
  @example
 -@multitable {DBUS_TYPE_OBJECT_PATH} {@expansion{}} {@code{t} or @code{nil}}
 +@multitable {DBUS_TYPE_OBJECT_PATH} {@expansion{}} {natural number or float}
  @item D-Bus type            @tab              @tab Lisp type
  @item
  @item DBUS_TYPE_BOOLEAN     @tab @expansion{} @tab @code{t} or @code{nil}
 -@item DBUS_TYPE_BYTE        @tab @expansion{} @tab number
 -@item DBUS_TYPE_UINT16      @tab @expansion{} @tab number
 -@item DBUS_TYPE_INT16       @tab @expansion{} @tab number
 -@item DBUS_TYPE_UINT32      @tab @expansion{} @tab number or float
 -@item DBUS_TYPE_INT32       @tab @expansion{} @tab number or float
 -@item DBUS_TYPE_UINT64      @tab @expansion{} @tab number or float
 -@item DBUS_TYPE_INT64       @tab @expansion{} @tab number or float
 +@item DBUS_TYPE_BYTE        @tab @expansion{} @tab natural number
 +@item DBUS_TYPE_UINT16      @tab @expansion{} @tab natural number
 +@item DBUS_TYPE_INT16       @tab @expansion{} @tab integer
 +@item DBUS_TYPE_UINT32      @tab @expansion{} @tab natural number or float
 +@item DBUS_TYPE_UNIX_FD     @tab @expansion{} @tab natural number or float
 +@item DBUS_TYPE_INT32       @tab @expansion{} @tab integer or float
 +@item DBUS_TYPE_UINT64      @tab @expansion{} @tab natural number or float
 +@item DBUS_TYPE_INT64       @tab @expansion{} @tab integer or float
  @item DBUS_TYPE_DOUBLE      @tab @expansion{} @tab float
  @item DBUS_TYPE_STRING      @tab @expansion{} @tab string
  @item DBUS_TYPE_OBJECT_PATH @tab @expansion{} @tab string
  @end example
  
  A float object in case of @code{DBUS_TYPE_UINT32},
 -@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64} and
 -@code{DBUS_TYPE_INT6432} is returned, when the C value exceeds the
 -Emacs number size range.
 +@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64},
 +@code{DBUS_TYPE_INT64} and @code{DBUS_TYPE_UNIX_FD} is returned, when
 +the C value exceeds the Emacs number size range.
  
  The resulting list of the last 4 D-Bus compound types contains as
  elements the elements of the D-Bus container, mapped according to the
@@@ -1049,7 -1030,7 +1049,7 @@@ The signal @code{PropertyModified}, dis
  (@var{BOOL} stands here for either @code{nil} or @code{t}):
  
  @lisp
 -(@var{NUMBER} ((@var{STRING} @var{BOOL} @var{BOOL}) (@var{STRING} @var{BOOL} @var{BOOL}) @dots{}))
 +(@var{INTEGER} ((@var{STRING} @var{BOOL} @var{BOOL}) (@var{STRING} @var{BOOL} @var{BOOL}) @dots{}))
  @end lisp
  
  @defun dbus-byte-array-to-string byte-array
@@@ -1253,73 -1234,9 +1253,73 @@@ message has been arrived, and @var{hand
  @cindex method calls, returning
  @cindex returning method calls
  
 -Emacs can also offer own methods, which can be called by other
 -applications.  These methods could be an implementation of an
 -interface of a well known service, like @samp{org.freedesktop.TextEditor}.
 +In order to register methods on the D-Bus, Emacs has to request a well
 +known name on the D-Bus under which it will be available for other
 +clients.  Names on the D-Bus can be registered and unregistered using
 +the following functions:
 +
 +@defun dbus-register-service bus service &rest flags
 +Register the known name @var{service} on D-Bus @var{bus}.
 +
 +@var{bus} is either the symbol @code{:system} or the symbol
 +@code{:session}.
 +
 +@var{service} is the service name to be registered on the D-Bus.  It
 +must be a known name.
 +
 +@var{flags} is a subset of the following keywords:
 +
 +@itemize
 +@item @code{:allow-replacement}: Allow another service to become the primary
 +owner if requested.
 +
 +@item @code{:replace-existing}: Request to replace the current primary owner.
 +
 +@item @code{:do-not-queue}: If we can not become the primary owner do not
 +place us in the queue.
 +@end itemize
 +
 +One of the following keywords is returned:
 +
 +@itemize
 +
 +@item @code{:primary-owner}: We have become the primary owner of the name
 +@var{service}.
 +
 +@item @code{:in-queue}: We could not become the primary owner and
 +have been placed in the queue.
 +
 +@item @code{:exists}: We already are in the queue.
 +
 +@item @code{:already-owner}: We already are the primary
 +owner.
 +@end itemize
 +@end defun
 +
 +@defun dbus-unregister-service bus service
 +Unregister all objects from D-Bus @var{bus}, registered by Emacs for
 +@var{service}.
 +
 +@var{bus} is either the symbol @code{:system} or the symbol
 +@code{:session}.
 +
 +@var{service} is the D-Bus service name of the D-Bus.  It must be a
 +known name.  Emacs releases its association to @var{service} from
 +D-Bus.
 +
 +One of the following keywords is returned:
 +
 +@itemize
 +@item @code{:released}: We successfully released the name @var{service}.
 +@item @code{:non-existent}: The name @var{service} does not exist on the bus.
 +@item @code{:not-owner}: We are not an owner of the name @var{service}.
 +@end itemize
 +@end defun
 +
 +When a name has been chosen, Emacs can offer own methods, which can be
 +called by other applications.  These methods could be an
 +implementation of an interface of a well known service, like
 +@samp{org.freedesktop.TextEditor}.
  
  It could be also an implementation of an own interface.  In this case,
  the service name must be @samp{org.gnu.Emacs}.  The object path shall
@@@ -1338,7 -1255,7 +1338,7 @@@ paths, used by offered methods or signa
  string.
  @end deffn
  
 -@defun dbus-register-method bus service path interface method handler
 +@defun dbus-register-method bus service path interface method handler dont-register-service
  With this function, an application registers @var{method} on the D-Bus
  @var{bus}.
  
  @code{:session}.
  
  @var{service} is the D-Bus service name of the D-Bus object
 -@var{method} is registered for.  It must be a known name.
 +@var{method} is registered for.  It must be a known name (See
 +discussion of @var{dont-register-service} below).
  
 -@var{path} is the D-Bus object path @var{service} is
 -registered.
 +@var{path} is the D-Bus object path @var{service} is registered (See
 +discussion of @var{dont-register-service} below).
  
  @var{interface} is the interface offered by @var{service}.  It must
  provide @var{method}.
@@@ -1369,13 -1285,6 +1369,13 @@@ returning a list containing the object
  In case @var{handler} shall return a reply message with an empty
  argument list, @var{handler} must return the symbol @code{:ignore}.
  
 +When @var{dont-register-service} is non-@code{nil}, the known name
 +@var{service} is not registered.  This means that other D-Bus clients
 +have no way of noticing the newly registered method.  When interfaces
 +are constructed incrementally by adding single methods or properties
 +at a time, @var{dont-register-service} can be used to prevent other
 +clients from discovering the still incomplete interface.
 +
  The default D-Bus timeout when waiting for a message reply is 25
  seconds.  This value could be even smaller, depending on the calling
  client.  Therefore, @var{handler} shall not last longer than
@@@ -1450,7 -1359,7 +1450,7 @@@ The test runs the
  @end example
  @end defun
  
 -@defun dbus-register-property bus service path interface property access value
 +@defun dbus-register-property bus service path interface property access value &optional emits-signal dont-register-service
  With this function, an application declares a @var{property} on the D-Bus
  @var{bus}.
  
  @var{service} is the D-Bus service name of the D-Bus.  It must be a
  known name.
  
 -@var{path} is the D-Bus object path @var{service} is
 -registered.
 +@var{path} is the D-Bus object path @var{service} is registered (See
 +discussion of @var{dont-register-service} below).
  
  @var{interface} is the name of the interface used at @var{path},
  @var{property} is the name of the property of @var{interface}.
@@@ -1478,19 -1387,7 +1478,19 @@@ only way to change their values.  Prope
  
  The interface @samp{org.freedesktop.DBus.Properties} is added to
  @var{path}, including a default handler for the @samp{Get},
 -@samp{GetAll} and @samp{Set} methods of this interface.  Example:
 +@samp{GetAll} and @samp{Set} methods of this interface.  When
 +@var{emits-signal} is non-@code{nil}, the signal
 +@samp{PropertiesChanged} is sent when the property is changed by
 +@code{dbus-set-property}.
 +
 +When @var{dont-register-service} is non-@code{nil}, the known name
 +@var{service} is not registered.  This means that other D-Bus clients
 +have no way of noticing the newly registered method.  When interfaces
 +are constructed incrementally by adding single methods or properties
 +at a time, @var{dont-register-service} can be used to prevent other
 +clients from discovering the still incomplete interface.
 +
 +@noindent Example:
  
  @lisp
  (dbus-register-property
  
  (dbus-register-property
    :session "org.freedesktop.TextEditor" "/org/freedesktop/TextEditor"
 -  "org.freedesktop.TextEditor" "version" :readwrite emacs-version)
 +  "org.freedesktop.TextEditor" "version" :readwrite emacs-version t)
  
  @result{} ((:session "org.freedesktop.TextEditor" "version")
      ("org.freedesktop.TextEditor" "/org/freedesktop/TextEditor"))
@@@ -1564,6 -1461,18 +1564,6 @@@ registered for the respective service, 
  to the service from D-Bus.
  @end defun
  
 -@defun dbus-unregister-service bus service
 -Unregister all objects from D-Bus @var{bus}, registered by Emacs for
 -@var{service}.
 -
 -@var{bus} is either the symbol @code{:system} or the symbol
 -@code{:session}.
 -
 -@var{service} is the D-Bus service name of the D-Bus.  It must be a
 -known name.  Emacs releases its association to @var{service} from
 -D-Bus.
 -@end defun
 -
  
  @node Signals
  @chapter Sending and receiving signals.
@@@ -1659,68 -1568,11 +1659,68 @@@ which objects the GNU/Linux @code{hal} 
  @end defun
  
  
 +@node Alternative Buses
 +@chapter Alternative buses.
 +@cindex bus names
 +@cindex UNIX domain socket
 +
 +Until now, we have spoken about the system and the session buses,
 +which are the default buses to be connected to.  However, it is
 +possible to connect to any bus, from which the address is known.  This
 +is a UNIX domain socket.  Everywhere, where a @var{bus} is mentioned
 +as argument of a function (the symbol @code{:system} or the symbol
 +@code{:session}), this address can be used instead.  The connection to
 +this bus must be initialized first.
 +
 +@defun dbus-init-bus bus
 +Establish the connection to D-Bus @var{bus}.
 +
 +@var{bus} can be either the symbol @code{:system} or the symbol
 +@code{:session}, or it can be a string denoting the address of the
 +corresponding bus.  For the system and session busses, this function
 +is called when loading @file{dbus.el}, there is no need to call it
 +again.
 +
 +Example: You open another session bus in a terminal window on your host:
 +
 +@example
 +# eval `dbus-launch --auto-syntax`
 +# echo $DBUS_SESSION_BUS_ADDRESS
 +
 +@print{} unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e
 +@end example
 +
 +In Emacs, you can access to this bus via its address:
 +
 +@lisp
 +(setq my-bus
 +      "unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e")
 +
 +@result{} "unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e"
 +
 +(dbus-init-bus my-bus)
 +
 +@result{} nil
 +
 +(dbus-get-unique-name my-bus)
 +
 +@result{} ":1.0"
 +@end lisp
 +@end defun
 +
 +
  @node Errors and Events
  @chapter Errors and events.
 +@cindex debugging
  @cindex errors
  @cindex events
  
 +The internal actions can be traced by running in a debug mode.
 +
 +@defvar dbus-debug
 +If this variable is non-@code{nil}, D-Bus specific debug messages are raised.
 +@end defvar
 +
  Input parameters of @code{dbus-call-method},
  @code{dbus-call-method-non-blocking},
  @code{dbus-call-method-asynchronously}, and
@@@ -1735,7 -1587,8 +1735,7 @@@ appended to the @code{dbus-error}
  @defspec dbus-ignore-errors forms@dots{}
  This executes @var{forms} exactly like a @code{progn}, except that
  @code{dbus-error} errors are ignored during the @var{forms}.  These
 -errors can be made visible when variable @code{dbus-debug} is set to
 -@code{t}.
 +errors can be made visible when @code{dbus-debug} is set to @code{t}.
  @end defspec
  
  Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc
@@@ -1783,12 -1636,12 +1783,12 @@@ The result is either the symbol @code{:
  
  @defun dbus-event-message-type event
  Returns the message type of the corresponding D-Bus message.  The
 -result is a number.
 +result is a natural number.
  @end defun
  
  @defun dbus-event-serial-number event
  Returns the serial number of the corresponding D-Bus message.
 -The result is a number.
 +The result is a natural number.
  @end defun
  
  @defun dbus-event-service-name event
@@@ -1838,14 -1691,12 +1838,14 @@@ D-Bus applications running.  Therefore
  whether a given D-Bus error is related to them.
  
  
 +@node Index
 +@unnumbered Index
 +
 +@printindex cp
 +
 +
  @node GNU Free Documentation License
  @appendix GNU Free Documentation License
  @include doclicense.texi
  
  @bye
 -
 -@ignore
 -   arch-tag: 2eeec19d-0caf-44e0-a193-329d7f9951d8
 -@end ignore
diff --combined doc/misc/dired-x.texi
index 4a542d9841b87b9b6ea55d3a64e199001adf7052,fada13faf15eeb5456b6c613b8f7789745ac3cb8..c4e474f0943b1ddb4df1e7495f2c4d9877476e04
@@@ -10,8 -10,6 +10,8 @@@
  @setfilename ../../info/dired-x
  @settitle Dired Extra User's Manual
  
 +@include emacsver.texi
 +
  @iftex
  @finalout
  @end iftex
@@@ -19,8 -17,8 +19,8 @@@
  @comment %**end of header (This is for running Texinfo on a region.)
  
  @copying
 -Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
 -2005, 2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1994-1995, 1999, 2001-2011
 +Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -36,7 -34,7 +36,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Dired-X: (dired-x).           Dired Extra Features.
  @end direntry
@@@ -70,7 -68,6 +70,7 @@@
  @ifnottex
  
  @node Top
 +@top Dired Extra
  
  @noindent
  This documents the ``extra'' features for GNU Emacs's Dired Mode that are
@@@ -82,7 -79,7 +82,7 @@@ provided by the file @file{dired-x.el}
  Based on @file{dired.texi} by Sebastian Kremer <sk@@thp.uni-koeln.de>
  
  @item
 -For @file{dired-x.el} as distributed with GNU Emacs 23.
 +For @file{dired-x.el} as distributed with GNU Emacs @value{EMACSVER}.
  
  @end itemize
  
@@@ -177,16 -174,27 +177,16 @@@ Point})
  @cindex Redefined functions
  @cindex @file{dired-aux.el}
  
 -When loaded this code @emph{redefines} the following functions of GNU Emacs
 -from @file{dired.el}
 -
 -@itemize @bullet
 -@item
 -@code{dired-clean-up-after-deletion}
 -@item
 -@code{dired-find-buffer-nocreate}
 -@item
 -@code{dired-initial-position}
 -@end itemize
 -
 -@noindent
 -and the following functions from @file{dired-aux.el}
 -
 -@itemize @bullet
 -@item
 -@code{dired-add-entry}
 -@item
 -@code{dired-read-shell-command}
 -@end itemize
 +When loaded this code @emph{redefines} the standard @file{dired.el}
 +function @code{dired-find-buffer-nocreate}.  In addition, once
 +@file{dired-x.el} is loaded, the following Dired functions offer
 +additional features.  @code{dired-add-entry} obeys Dired Omit mode
 +(@pxref{Omitting Files in Dired}), if it is active.
 +@code{dired-initial-position} obeys @code{dired-find-subdir}
 +(@pxref{Miscellaneous Commands}).  @code{dired-clean-up-after-deletion}
 +respects the value of @code{dired-clean-up-buffers-too}.
 +@code{dired-read-shell-command} uses @code{dired-guess-shell-command}
 +(@pxref{Shell Command Guessing}) to offer a smarter default command.
  
  @node Installation, Omitting Files in Dired, Introduction, Top
  @chapter Installation
@@@ -253,9 -261,22 +253,9 @@@ for these functions.  In your @file{.em
  @cindex Binding @code{dired-x-find-file}
  If you choose to have @file{dired-x.el} bind @code{dired-x-find-file} over
  @code{find-file} (@pxref{Find File At Point}), then you will need to set
 -@code{dired-x-hands-off-my-keys} and make a call to the function
 -@code{dired-x-bind-find-file} in the @code{dired-load-hook}:
 -
 -@example
 -(add-hook 'dired-load-hook
 -          (lambda ()
 -            (load "dired-x")
 -            ;; Bind dired-x-find-file.
 -            (setq dired-x-hands-off-my-keys nil)
 -            ;; Make sure our binding preference is invoked.
 -            (dired-x-bind-find-file)
 -            ))
 -@end example
 -
 -Alternatively, you can set the variable @emph{before} @file{dired-x.el} is
 -loaded
 +@code{dired-x-hands-off-my-keys}.  To do this, either set it
 +@emph{before} @file{dired-x.el} is loaded, or use @kbd{M-x customize-variable},
 +or call @code{dired-x-bind-find-file} after changing the value.
  
  @example
  (add-hook 'dired-load-hook
@@@ -895,8 -916,8 +895,8 @@@ A general mechanism is provided for spe
  directory in special major modes:
  
  @table @code
 -@item default-directory-alist
 -@vindex default-directory-alist
 +@item dired-default-directory-alist
 +@vindex dired-default-directory-alist
  Default: @code{((dired-mode . (dired-current-directory)))}
  
  Alist of major modes and their notion of @code{default-directory}, as a
@@@ -907,7 -928,7 +907,7 @@@ in favor of @code{default-directory}
  @findex dired-default-directory
  Use this function like you would use the variable
  @code{default-directory}, except that @code{dired-default-directory}
 -also consults the variable @code{default-directory-alist}.
 +also consults the variable @code{dired-default-directory-alist}.
  @end table
  
  @node Find File At Point, Miscellaneous Commands, Multiple Dired Directories, Top
@@@ -1055,12 -1076,13 +1055,12 @@@ file (assumed to be a UNIX mail folder)
  
  @vindex dired-vm-read-only-folders
  If you give this command a prefix argument, it will visit the folder
 -read-only.  This only works in VM 5, not VM 4.
 +read-only.
  
  If the variable @code{dired-vm-read-only-folders} is @code{t},
 -@code{dired-vm} will
 -visit all folders read-only.  If it is neither @code{nil} nor @code{t}, e.g.,
 -the symbol @code{if-file-read-only}, only files not writable by you are
 -visited read-only.  This is the recommended value if you run VM 5.
 +@code{dired-vm} will visit all folders read-only.  If it is neither
 +@code{nil} nor @code{t}, e.g., the symbol @code{if-file-read-only}, only
 +files not writable by you are visited read-only.
  
  @vindex dired-bind-vm
  If the variable @code{dired-bind-vm} is @code{t}, @code{dired-vm} will be bound
@@@ -1151,3 -1173,7 +1151,3 @@@ enhancement, then please use @kbd{M-x r
  @printindex vr
  
  @bye
 -
 -@ignore
 -   arch-tag: 201727aa-9318-4c74-a0d7-4f51c550c4de
 -@end ignore
diff --combined doc/misc/ebrowse.texi
index 81a1ab0d29d6b04c1b0c40aeb0ba158737d96db2,58b04dc7b8332fc47ce24664cc31b536aeb8045b..19ee9705484463f54452b0ce384fd7eb8c015990
@@@ -10,7 -10,8 +10,7 @@@
  @copying
  This file documents Ebrowse, a C++ class browser for GNU Emacs.
  
 -Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 2000-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -26,7 -27,7 +26,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Ebrowse: (ebrowse).           A C++ class browser for Emacs.
  @end direntry
@@@ -46,7 -47,6 +46,7 @@@
  
  @ifnottex
  @node Top, Overview, (dir), (dir)
 +@top Ebrowse
  
  You can browse C++ class hierarchies from within Emacs by using
  Ebrowse.
@@@ -1451,3 -1451,7 +1451,3 @@@ in on with the command @kbd{C-c C-m m}
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 52fe78ac-a1c4-48e7-815e-0a31acfad4bf
 -@end ignore
diff --combined doc/misc/ede.texi
index 86228a24d0622dc0ff644c4c4fc825ce65818964,57dc01d9fef7895534a18519ff947c8a1c28b866..bc097a87150aa1dfda9be756ca4d2632d0126955
@@@ -5,7 -5,8 +5,7 @@@
  @copying
  This file describes EDE, the Emacs Development Environment.
  
 -Copyright @copyright{} 1998, 1999, 2000, 2001, 2004, 2005, 2008, 2009,
 -2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1998-2001, 2004-2005, 2008-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -21,9 -22,9 +21,9 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
- * ede: (ede).                   Project management for Emacs.
+ * EDE: (ede).                   The Emacs Development Environment.
  @end direntry
  
  @titlepage
@@@ -3790,3 -3791,7 +3790,3 @@@ For example, C code uses .o on unix, an
  @end table
  
  @bye
 -
 -@ignore
 -   arch-tag: c9bfdc6e-e6e9-4e87-97f7-d8348342fbf4
 -@end ignore
diff --combined doc/misc/ediff.texi
index 743a3460f9bd0adc6e5f427cf88c5869331a1b92,8774fae50678e9dfba3b35d282f16b0a9ba041bc..3ba0796e636e1b5b40c6e5e672c1a4582ed4b7bf
@@@ -25,7 -25,8 +25,7 @@@
  This file documents Ediff, a comprehensive visual interface to Unix diff
  and patch utilities.
  
 -Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
 -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -41,7 -42,7 +41,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Ediff: (ediff).       A visual interface for comparing and merging programs.
  @end direntry
@@@ -63,7 -64,6 +63,7 @@@
  @contents
  
  @node Top, Introduction, (dir), (dir)
 +@top Ediff
  
  @insertcopying
  
@@@ -759,7 -759,7 +759,7 @@@ Displays a list of currently active Edi
  You can then restart any of these sessions by either clicking on a session
  record or by putting the cursor over it and then typing the return key.
  
 -(Some poor souls leave so many active Ediff sessions around that they loose
 +(Some poor souls leave so many active Ediff sessions around that they lose
  track of them completely...  The `R' command is designed to save these
  people from the recently discovered Ediff Proficiency Syndrome.)
  
@@@ -2315,7 -2315,7 +2315,7 @@@ other behavior
  
  However, Ediff temporarily resets this variable to @code{t} if it is
  invoked via one of the "buffer" jobs, such as @code{ediff-buffers}.
 -This is because it is all too easy to loose day's work otherwise.
 +This is because it is all too easy to lose a day's work otherwise.
  Besides, in a "buffer" job, the variant buffers have already been loaded
  prior to starting Ediff, so Ediff just preserves status quo here.
  
@@@ -2541,3 -2541,7 +2541,3 @@@ Eli Zaretskii (eliz at is.elta.co.il
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 165ecb88-d03c-44b1-a921-b93f50b05b46
 -@end ignore
diff --combined doc/misc/edt.texi
index e3117d656992da2316a131e0d380ebd52586dd44,d5a2848135200dbaf8e15b27c29d24ac22e57589..377bb6ee8c57e7d54628b83f937ef1da21427a85
@@@ -5,7 -5,8 +5,7 @@@
  @copying
  This file documents the EDT emulation package for Emacs.
  
 -Copyright @copyright{} 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002,
 -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 1986, 1992, 1994-1995, 1999-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -22,7 -23,7 +22,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * EDT: (edt).                   An Emacs emulation of the EDT editor.
  @end direntry
diff --combined doc/misc/eieio.texi
index 1a22a15afbae86661962e29b4eb43c4fddcb7753,f36efff3a0769eb2dff60a3b17f773f224440fe5..8ee40288fe0b7561cf04ddd53ab5cfd253a9a08e
@@@ -11,7 -11,7 +11,7 @@@
  @copying
  This manual documents EIEIO, an object framework for Emacs Lisp.
  
 -Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -27,9 -27,9 +27,9 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
- * eieio: (eieio).               Objects for Emacs.
+ * EIEIO: (eieio).               An objects system for Emacs Lisp.
  @end direntry
  
  @titlepage
@@@ -1906,3 -1906,7 +1906,3 @@@ Allow method overloading of method-lik
  
  @contents
  @bye
 -
 -@ignore
 -   arch-tag: 7225b7c7-2462-4563-99e7-836a20172178
 -@end ignore
diff --combined doc/misc/emacs-mime.texi
index ef6db1c360630d0f9fbcc1145f329aa3101793ab,6121f1afd75520c1d2bb300583ce6806eaca4eda..a9d80d868b68ea570377158da606674eff6eb896
@@@ -1,7 -1,5 +1,7 @@@
  \input texinfo
  
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/emacs-mime
  @settitle Emacs MIME Manual
  @synindex fn cp
@@@ -11,7 -9,8 +11,7 @@@
  @copying
  This file documents the Emacs MIME interface functionality.
  
 -Copyright @copyright{} 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
 -2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1998-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -30,7 -29,7 +30,7 @@@ developing GNU and promoting software f
  @c Node ``Interface Functions'' uses Latin-1 characters
  @documentencoding ISO-8859-1
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * Emacs MIME: (emacs-mime).     Emacs MIME de/composition library.
  @end direntry
  @setchapternewpage odd
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Emacs MIME Manual (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Emacs MIME Manual
 +@end ifclear
  
  @author by Lars Magne Ingebrigtsen
  @page
@@@ -380,18 -374,12 +380,18 @@@ message as follows
  @vindex mm-inline-large-images
  When displaying inline images that are larger than the window, Emacs
  does not enable scrolling, which means that you cannot see the whole
 -image.  To prevent this, the library tries to determine the image size
 +image. To prevent this, the library tries to determine the image size
  before displaying it inline, and if it doesn't fit the window, the
  library will display it externally (e.g. with @samp{ImageMagick} or
 -@samp{xv}).  Setting this variable to @code{t} disables this check and
 +@samp{xv}). Setting this variable to @code{t} disables this check and
  makes the library display all inline images as inline, regardless of
 -their size.
 +their size. If you set this variable to @code{resize}, the image will
 +be displayed resized to fit in the window, if Emacs has the ability to
 +resize images.
 +
 +@item mm-inline-large-images-proportion
 +@vindex mm-inline-images-max-proportion
 +The proportion used when resizing large images.
  
  @item mm-inline-override-types
  @vindex mm-inline-override-types
@@@ -406,7 -394,7 +406,7 @@@ variable will cause @samp{text/html} pa
  @item mm-text-html-renderer
  @vindex mm-text-html-renderer
  This selects the function used to render @acronym{HTML}.  The predefined
 -renderers are selected by the symbols @code{w3},
 +renderers are selected by the symbols @code{gnus-article-html}, @code{w3},
  @code{w3m}@footnote{See @uref{http://emacs-w3m.namazu.org/} for more
  information about emacs-w3m}, @code{links}, @code{lynx},
  @code{w3m-standalone} or @code{html2text}.  If @code{nil} use an
@@@ -1046,10 -1034,6 +1046,10 @@@ flowed text, the default is to wrap aft
  newline characters are not present in the buffer, no flow encoding
  occurs.
  
 +You can customize the value of the @code{mml-enable-flowed} variable
 +to enable or disable the flowed encoding usage when newline
 +characteres are present in the buffer.
 +
  On decoding flowed text, lines with soft newline characters are filled
  together and wrapped after the column decided by
  @code{fill-flowed-display-column}.  The default is to wrap after
@@@ -1485,9 -1469,21 +1485,9 @@@ Decode a string and return the results
  
  @item rfc2047-encode-parameter
  @findex rfc2047-encode-parameter
 -Encode a parameter in the RFC2047-like style.  This is a replacement for
 -the @code{rfc2231-encode-string} function.  @xref{rfc2231}.
 -
 -When attaching files as @acronym{MIME} parts, we should use the RFC2231
 -encoding to specify the file names containing non-@acronym{ASCII}
 -characters.  However, many mail softwares don't support it in practice
 -and recipients won't be able to extract files with correct names.
 -Instead, the RFC2047-like encoding is acceptable generally.  This
 -function provides the very RFC2047-like encoding, resigning to such a
 -regrettable trend.  To use it, put the following line in your
 -@file{~/.gnus.el} file:
 -
 -@lisp
 -(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
 -@end lisp
 +Encode a parameter in the RFC2047-like style.  This is a substitution
 +for the @code{rfc2231-encode-string} function, that is the standard but
 +many mailers don't support it.  @xref{rfc2231}.
  
  @end table
  
@@@ -1893,3 -1889,7 +1893,3 @@@ Documentation of the text/plain format 
  @c mode: texinfo
  @c coding: iso-8859-1
  @c End:
 -
 -@ignore
 -   arch-tag: c7ef2fd0-a91c-4e10-aa52-c1a2b11b1a8d
 -@end ignore
diff --combined doc/misc/epa.texi
index ae194356c3f6a6154aa80e6d4c302163ea854ae7,e6402fb83f5f8566da51d9c3da7943353f765270..b4137a7dac6e21c5f223f077795454e4f83f2238
@@@ -9,7 -9,7 +9,7 @@@
  @copying
  This file describes EasyPG Assistant @value{VERSION}.
  
 -Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -31,7 -31,7 +31,7 @@@ license to the document, as described i
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * EasyPG Assistant: (epa).      An Emacs user interface to GNU Privacy Guard.
  @end direntry
@@@ -65,9 -65,7 +65,9 @@@ called EasyPG Library
  @menu
  * Overview::                    
  * Quick start::                 
 -* Commands::               
 +* Commands::                    
 +* Caching Passphrases::         
 +* Bug Reports::                 
  @end menu
  
  @node  Overview
@@@ -306,14 -304,14 +306,14 @@@ Encrypt marked files
  @section Mail-mode integration
  
  EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help
 -user compose inline PGP messages.  Inline PGP is a traditional style
 -of sending signed/encrypted emails by embedding raw OpenPGP blobs
 -inside a message body, not using modern MIME format.
 +user compose inline OpenPGP messages.  Inline OpenPGP is a traditional
 +style of sending signed/encrypted emails by embedding raw OpenPGP
 +blobs inside a message body, not using modern MIME format.
  
 -NOTE: Inline PGP is not recommended and you should consider to use
 +NOTE: Inline OpenPGP is not recommended and you should consider to use
  PGP/MIME.  See
  @uref{http://josefsson.org/inline-openpgp-considered-harmful.html,
 -Inline PGP in E-mail is bad, Mm'kay?}.
 +Inline OpenPGP in E-mail is bad@comma{} Mm'kay?}.
  
  @noindent
  Once @code{epa-mail-mode} is enabled, the following keys are assigned.
@@@ -321,26 -319,22 +321,26 @@@ You can do it by @kbd{C-u 1 M-x epa-mai
  interface.  Try @kbd{M-x customize-variable epa-global-mail-mode}.
  
  @table @kbd
 -@item C-c C-e d
 +@item C-c C-e C-d and C-c C-e d
 +@kindex @kbd{C-c C-e C-d}
  @kindex @kbd{C-c C-e d}
  @findex epa-mail-decrypt
  Decrypt OpenPGP armors in the current buffer.
  
 -@item C-c C-e v
 +@item C-c C-e C-v and C-c C-e v
 +@kindex @kbd{C-c C-e C-v}
  @kindex @kbd{C-c C-e v}
  @findex epa-mail-verify
  Verify OpenPGP cleartext signed messages in the current buffer.
  
 -@item C-c C-e s
 +@item C-c C-e C-s and C-c C-e s
 +@kindex @kbd{C-c C-e C-s}
  @kindex @kbd{C-c C-e s}
  @findex epa-mail-sign
  Compose a signed message from the current buffer.
  
 -@item C-c C-e e
 +@item C-c C-e C-e and C-c C-e e
 +@kindex @kbd{C-c C-e C-e}
  @kindex @kbd{C-c C-e e}
  @findex epa-mail-encrypt
  Compose an encrypted message from the current buffer.
@@@ -353,21 -347,16 +353,21 @@@ key in the recipient list, use @samp{en
  
  @node Encrypting/decrypting *.gpg files
  @section Encrypting/decrypting *.gpg files
 -By default, every file whose extension is @samp{.gpg} will be treated
 -as encrypted.  That is, when you attempt to open such a file which
 -already exists, the decrypted text is inserted in the buffer rather
 -than encrypted one.  On the other hand, when you attempt to save the
 -buffer to a file whose extension is @samp{.gpg}, encrypted data is
 -written.
 +By default, every file whose name ends with @samp{.gpg} will be
 +treated as encrypted.  That is, when you open such a file, the
 +decrypted text is inserted in the buffer rather than encrypted one.
 +Similarly, when you save the buffer to a @samp{foo.gpg} file,
 +encrypted data is written.
  
 -If you want to temporarily disable this behavior, use @kbd{M-x
 -epa-file-disable}, and then to enable this behavior use @kbd{M-x
 -epa-file-enable}.
 +The file name pattern for encrypted files can be controlled by
 +@var{epa-file-name-regexp}.
 +
 +@defvar epa-file-name-regexp
 +Regexp which matches filenames treated as encrypted.
 +@end defvar
 +
 +You can disable this behavior with @kbd{M-x epa-file-disable}, and
 +then get it back with @kbd{M-x epa-file-enable}.
  
  @deffn Command epa-file-disable
  Disable automatic encryption/decryption of *.gpg files.
@@@ -378,48 -367,23 +378,48 @@@ Enable automatic encryption/decryption 
  @end deffn
  
  @noindent
 -@code{epa-file} will let you select recipients.  If you want to
 -suppress this question, it might be a good idea to put the following
 -line on the first line of the text being encrypted.
 +By default, @code{epa-file} will try to use symmetric encryption, aka
 +password-based encryption.  If you want to use public key encryption
 +instead, do @kbd{M-x epa-file-select-keys}, which will pops up the key
 +selection dialog.
 +
 +@deffn Command epa-file-select-keys
 +Select recipient keys to encrypt the currently visiting file with
 +public key encryption.
 +@end deffn
 +
 +You can also change the default behavior with the variable
 +@var{epa-file-select-keys}.
 +
 +@defvar epa-file-select-keys
 +Control whether or not to pop up the key selection dialog.
 +@end defvar
 +
 +For frequently visited files, it might be a good idea to tell Emacs
 +which encryption method should be used through @xref{File Variables, ,
 +, emacs, the Emacs Manual}.  Use the @code{epa-file-encrypt-to} local
 +variable for this.
  @vindex epa-file-encrypt-to
  
 +For example, if you want an Elisp file should be encrypted with a
 +public key associated with an email address @samp{ueno@@unixuser.org},
 +add the following line to the beginning of the file.
 +
  @cartouche
  @lisp
  ;; -*- epa-file-encrypt-to: ("ueno@@unixuser.org") -*-
  @end lisp
  @end cartouche
  
 -The file name extension of encrypted files can be controlled by
 -@var{epa-file-name-regexp}.
 +Instead, if you want the file always (regardless of the value of the
 +@code{epa-file-select-keys} variable) encrypted with symmetric
 +encryption, change the line as follows.
  
 -@defvar epa-file-name-regexp
 -Regexp which matches filenames treated as encrypted.
 -@end defvar
 +@cartouche
 +@lisp
 +;; -*- epa-file-encrypt-to: nil -*-
 +@end lisp
 +@end cartouche
  
  Other variables which control the automatic encryption/decryption
  behavior are below.
@@@ -434,65 -398,10 +434,65 @@@ If non-@code{nil}, disable auto-saving 
  The default value is @code{t}.
  @end defvar
  
 +@node Caching Passphrases
 +@chapter Caching Passphrases
 +
 +Typing passphrases is an irritating task if you frequently open and
 +close the same file.  GnuPG and EasyPG Assistant provide mechanisms to
 +remember your passphrases.  However, the configuration is a bit
 +confusing since it depends on your GnuPG installation (GnuPG version 1 or
 +GnuPG version 2), encryption method (symmetric or public key), and whether or
 +not you want to use gpg-agent.  Here are some questions:
 +
 +@enumerate
 +@item Do you use GnuPG version 2 instead of GnuPG version 1?
 +@item Do you use symmetric encryption rather than public key encryption?
 +@item Do you want to use gpg-agent?
 +@end enumerate
 +
 +Here are configurations depending on your answers:
 +
 +@multitable {111} {222} {333} {configuration configuration configuration}
 +@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
 +@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
 +@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
 +@item Yes @tab No @tab Yes @tab Set up gpg-agent.
 +@item Yes @tab No @tab No @tab You can't, without gpg-agent.
 +@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
 +@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
 +@item No @tab No @tab Yes @tab Set up gpg-agent.
 +@item No @tab No @tab No @tab You can't, without gpg-agent.
 +@end multitable
 +
 +To set up gpg-agent, follow the instruction in GnuPG manual.
 +@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}.
 +
 +To set up elisp passphrase cache, set
 +@code{epa-file-cache-passphrase-for-symmetric-encryption}.
 +@xref{Encrypting/decrypting *.gpg files}.
 +
 +@node Bug Reports
 +@chapter Bug Reports
 +
 +Bugs and problems with EasyPG Assistant are actively worked on by the
 +Emacs development team.  Feature requests and suggestions are also
 +more than welcome.  Use @kbd{M-x report-emacs-bug}, @pxref{Bugs, ,
 +Bugs, emacs, Reporting Bugs}.
 +
 +When submitting a bug report, please try to describe in excruciating
 +detail the steps required to reproduce the problem.  Also try to
 +collect necessary information to fix the bug, such as:
 +
 +@itemize @bullet
 +@item the GnuPG version.  Send the output of @samp{gpg --version}.
 +@item the GnuPG configuration.  Send the contents of @file{~/.gnupg/gpg.conf}.
 +@end itemize
 +
 +Before reporting the bug, you should set @code{epg-debug} in the
 +@file{~/.emacs} file and repeat the bug.  Then, include the contents
 +of the @samp{ *epg-debug*} buffer.  Note that the first letter of the
 +buffer name is a whitespace.
 +
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: 7404e246-7d4c-4db4-9332-c1293a455a4f
 -@end ignore
diff --combined doc/misc/erc.texi
index 1ce6e949da56c28af54591d385ba6f3ecf5f8887,8056845e4d3f7e9c5eee74d95276cac9e290ca7b..463a14f08d2ef14adc6004737eb46b4afff53870
@@@ -8,7 -8,7 +8,7 @@@
  @copying
  This manual is for ERC version 5.3.
  
 -Copyright @copyright{} 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2005-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -28,7 -28,7 +28,7 @@@ and modified without restriction
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * ERC: (erc).                   Powerful and extensible IRC client for Emacs.
  @end direntry
@@@ -1061,3 -1061,7 +1061,3 @@@ We switched to using git for our versio
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: cf9cfaff-fc12-4297-ad15-ec2493002b1e
 -@end ignore
diff --combined doc/misc/eshell.texi
index 51031e219ff913211a8e60a7bdf29606032abff1,25ba50d616ef7458a39d3c33ae69b92913548ec8..0ae6a0e7faeccc9e1463f99e8883d759e2cdd225
@@@ -8,7 -8,8 +8,7 @@@
  @copying
  This manual is for Eshell, the Emacs shell.
  
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -24,7 -25,7 +24,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Eshell: (eshell).             A command shell implemented in Emacs Lisp.
  @end direntry
@@@ -368,17 -369,6 +368,17 @@@ eshell/ls is a compiled Lisp function i
  /bin/ls
  @end example
  
 +If you want to discard a given built-in command, you could declare an
 +alias, @ref{Aliases}.  Eample:
 +
 +@example
 +~ $ which sudo
 +eshell/sudo is a compiled Lisp function in `em-unix.el'
 +~ $ alias sudo '*sudo $*'
 +~ $ which sudo
 +sudo is an alias, defined as "*sudo $*"
 +@end example
 +
  Some of the built-in commands have a special behaviour in Eshell:
  
  @table @code
@@@ -1014,3 -1004,7 +1014,3 @@@ Since it keeps the cursor up where the 
  
  @printindex ky
  @bye
 -
 -@ignore
 -   arch-tag: 776409ba-cb15-42b9-b2b6-d2bdc7ebad01
 -@end ignore
diff --combined doc/misc/eudc.texi
index e21abcdb137773ae769971e4dff4f6ae6aef9602,cf40bcce73de8891f4285c5fcbbce271701b2d61..a68eda50025bbd8f688ea7b7534389a37ff822e0
@@@ -12,7 -12,8 +12,7 @@@ EUDC is the Emacs Unified Directory Cli
  directory servers using various protocols such as LDAP or the CCSO white
  pages directory system (PH/QI)
  
 -Copyright @copyright{} 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1998, 2000-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -28,7 -29,7 +28,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * EUDC: (eudc).                 Emacs client for directory servers (LDAP, PH).
  @end direntry
@@@ -50,7 -51,6 +50,7 @@@
  
  @ifnottex
  @node     Top, Overview, (dir), (dir)
 +@top Emacs Unified Directory Client
  @comment  node-name,  next,         previous, up
  
  @insertcopying
diff --combined doc/misc/flymake.texi
index 7f0cd77de599eb18c401e767c8b4d08490b9252a,75a660f040ef3a093149e593dd0b5902ce5202f5..74cf3d630da7667108673147e9117b57fdaef025
@@@ -11,7 -11,7 +11,7 @@@
  This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}),
  which is a universal on-the-fly syntax checker for GNU Emacs.
  
 -Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2004-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -28,7 -28,7 +28,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Flymake: (flymake).           A universal on-the-fly syntax checker.
  @end direntry
@@@ -749,3 -749,7 +749,3 @@@ It just kills all the active syntax che
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 9f0db077-5598-49ab-90b9-8df9248a63ec
 -@end ignore
diff --combined doc/misc/forms.texi
index f58e8d8f969ea4c043c33c0070870ecc82608806,1ac00e6ace4624fef1291ad3cb4a7221774c7b48..17c1d7feaf07b445bbb36726bedca1567734082f
@@@ -18,7 -18,8 +18,7 @@@
  @copying
  This file documents Forms mode, a form-editing major mode for GNU Emacs.
  
 -Copyright @copyright{} 1989, 1997, 2001, 2002, 2003, 2004,
 -2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1989, 1997, 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -34,7 -35,7 +34,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Forms: (forms).               Emacs package for editing data bases
                                    by filling in forms.
@@@ -975,3 -976,7 +975,3 @@@ Software Foundation.  Thanks, Richard
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 2ac9810b-aa49-4ea6-8030-d7f1ecd467ed
 -@end ignore
diff --combined doc/misc/gnus.texi
index 16273d21c460f677ac044ea901ab363e74233bc3,6cd603d9d0ad8c66d160ef811ff4b5c57de58ce6..5aa66deb946407070e6af86791194cb34d4fe104
@@@ -1,7 -1,5 +1,7 @@@
  \input texinfo
  
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/gnus
  @settitle Gnus Manual
  @syncodeindex fn cp
@@@ -11,7 -9,8 +11,7 @@@
  @documentencoding ISO-8859-1
  
  @copying
 -Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
 -2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -321,7 -320,7 +321,7 @@@ developing GNU and promoting software f
  @end iflatex
  @end iftex
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Gnus: (gnus).                 The newsreader Gnus.
  @end direntry
  
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Gnus Manual (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Gnus Manual
 +@end ifclear
  
  @author by Lars Magne Ingebrigtsen
  @page
@@@ -413,7 -407,6 +413,7 @@@ This manual corresponds to Gnus v5.1
  * Composing Messages::       Information on sending mail and news.
  * Select Methods::           Gnus reads all messages from various select methods.
  * Scoring::                  Assigning values to articles.
 +* Searching::                Mail and News search engines.
  * Various::                  General purpose settings.
  * The End::                  Farewell and goodbye.
  * Appendices::               Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
@@@ -435,6 -428,7 +435,6 @@@ Other related manual
  Starting Gnus
  
  * Finding the News::            Choosing a method for getting news.
 -* The First Time::              What does Gnus do the first time you start it?
  * The Server is Down::          How can I read my mail then?
  * Slave Gnusae::                You can have more than one Gnus active at a time.
  * Fetching a Group::            Starting Gnus just to read a group.
@@@ -595,7 -589,7 +595,7 @@@ Article Treatmen
  * Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
  * Article Button Levels::       Controlling appearance of buttons.
  * Article Date::                Grumble, UT!
 -* Article Display::             Display various stuff---X-Face, Picons, Smileys
 +* Article Display::             Display various stuff---X-Face, Picons, Smileys, Gravatars
  * Article Signature::           What is a signature?
  * Article Miscellanea::         Various other stuff.
  
@@@ -635,10 -629,10 +635,10 @@@ Select Method
  
  * Server Buffer::               Making and editing virtual servers.
  * Getting News::                Reading USENET news with Gnus.
 +* Using IMAP::                  Reading mail from @acronym{IMAP}.
  * Getting Mail::                Reading your personal mail with Gnus.
  * Browsing the Web::            Getting messages from a plethora of Web sources.
 -* IMAP::                        Using Gnus as a @acronym{IMAP} client.
 -* Other Sources::               Reading directories, files, SOUP packets.
 +* Other Sources::               Reading directories, files.
  * Combined Groups::             Combining groups into one group.
  * Email Based Diary::           Using mails to manage diary events in Gnus.
  * Gnus Unplugged::              Reading news and mail offline.
@@@ -701,24 -695,43 +701,24 @@@ Browsing the We
  
  * Archiving Mail::
  * Web Searches::                Creating groups from articles that match a string.
 -* Slashdot::                    Reading the Slashdot comments.
 -* Ultimate::                    The Ultimate Bulletin Board systems.
 -* Web Archive::                 Reading mailing list archived on web.
  * RSS::                         Reading RDF site summary.
  * Customizing W3::              Doing stuff to Emacs/W3 from Gnus.
  
 -@acronym{IMAP}
 -
 -* Splitting in IMAP::           Splitting mail with nnimap.
 -* Expiring in IMAP::            Expiring mail with nnimap.
 -* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
 -* Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
 -* A note on namespaces::        How to (not) use @acronym{IMAP} namespace in Gnus.
 -* Debugging IMAP::              What to do when things don't work.
 -
  Other Sources
  
  * Directory Groups::            You can read a directory as if it was a newsgroup.
  * Anything Groups::             Dired?  Who needs dired?
  * Document Groups::             Single files can be the basis of a group.
 -* SOUP::                        Reading @sc{soup} packets ``offline''.
  * Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
 +* The Empty Backend::           The backend that never has any news.
  
  Document Groups
  
  * Document Server Internals::   How to add your own document types.
  
 -SOUP
 -
 -* SOUP Commands::               Commands for creating and sending @sc{soup} packets
 -* SOUP Groups::                 A back end for reading @sc{soup} packets.
 -* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 -
  Combined Groups
  
  * Virtual Groups::              Combining articles from many groups.
 -* Kibozed Groups::              Looking through parts of the newsfeed for articles.
  
  Email Based Diary
  
@@@ -793,21 -806,6 +793,21 @@@ Advanced Scorin
  * Advanced Scoring Examples::   What they look like.
  * Advanced Scoring Tips::       Getting the most out of it.
  
 +Searching
 +
 +* nnir::                        Searching with various engines.
 +* nnmairix::                    Searching with Mairix.
 +
 +nnir
 +
 +* What is nnir?::               What does nnir do.
 +* Basic Usage::                 How to perform simple searches.
 +* Setting up nnir::             How to set up nnir.
 +
 +Setting up nnir
 +
 +* Associating Engines::         How to associate engines.
 +
  Various
  
  * Process/Prefix::              A convention used by many treatment commands.
  * Compilation::                 How to speed Gnus up.
  * Mode Lines::                  Displaying information in the mode lines.
  * Highlighting and Menus::      Making buffers look all nice and cozy.
 -* Buttons::                     Get tendinitis in ten easy steps!
  * Daemons::                     Gnus can do things behind your back.
 -* NoCeM::                       How to avoid spam and other fatty foods.
  * Undo::                        Some actions can be undone.
  * Predicate Specifiers::        Specifying predicates.
  * Moderation::                  What to do if you're a moderator.
@@@ -849,7 -849,6 +849,7 @@@ Image Enhancement
  * Smileys::                     Show all those happy faces the way they were
                                    meant to be shown.
  * Picons::                      How to display pictures of what you're reading.
 +* Gravatars::                   Display the avatar of people you read.
  * XVarious::                    Other XEmacsy Gnusey variables.
  
  Thwarting Email Spam
@@@ -981,6 -980,7 +981,6 @@@ terminology section (@pxref{Terminology
  
  @menu
  * Finding the News::      Choosing a method for getting news.
 -* The First Time::        What does Gnus do the first time you start it?
  * The Server is Down::    How can I read my mail then?
  * Slave Gnusae::          You can have more than one Gnus active at a time.
  * New Groups::            What is Gnus supposed to do with new groups?
  @section Finding the News
  @cindex finding news
  
 +First of all, you should know that there is a special buffer called
 +@code{*Server*} that lists all the servers Gnus knows about.  You can
 +press @kbd{^} from the Group buffer to see it.  In the Server buffer,
 +you can press @kbd{RET} on a defined server to see all the groups it
 +serves (subscribed or not!).  You can also add or delete servers, edit
 +a foreign server's definition, agentize or de-agentize a server, and
 +do many other neat things.  @xref{Server Buffer}.  
 +@xref{Foreign Groups}.  @xref{Agent Basics}.
 +
  @vindex gnus-select-method
  @c @head
  The @code{gnus-select-method} variable says where Gnus should look for
@@@ -1041,6 -1032,22 +1041,6 @@@ Gnus will see whether @code{gnus-nntpse
  If that fails as well, Gnus will try to use the machine running Emacs
  as an @acronym{NNTP} server.  That's a long shot, though.
  
 -@vindex gnus-nntp-server
 -If @code{gnus-nntp-server} is set, this variable will override
 -@code{gnus-select-method}.  You should therefore set
 -@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
 -
 -@vindex gnus-secondary-servers
 -@vindex gnus-nntp-server
 -You can also make Gnus prompt you interactively for the name of an
 -@acronym{NNTP} server.  If you give a non-numerical prefix to @code{gnus}
 -(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
 -in the @code{gnus-secondary-servers} list (if any).  You can also just
 -type in the name of any server you feel like visiting.  (Note that this
 -will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
 -gnus} later in the same Emacs session, Gnus will contact the same
 -server.)
 -
  @findex gnus-group-browse-foreign-server
  @kindex B (Group)
  However, if you use one @acronym{NNTP} server regularly and are just
@@@ -1073,6 -1080,31 +1073,6 @@@ several Gnus installations, but may slo
  new articles.  @xref{NNTP marks}, for more information.
  
  
 -@node The First Time
 -@section The First Time
 -@cindex first time usage
 -
 -If no startup files exist (@pxref{Startup Files}), Gnus will try to
 -determine what groups should be subscribed by default.
 -
 -@vindex gnus-default-subscribed-newsgroups
 -If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
 -will subscribe you to just those groups in that list, leaving the rest
 -killed.  Your system administrator should have set this variable to
 -something useful.
 -
 -Since she hasn't, Gnus will just subscribe you to a few arbitrarily
 -picked groups (i.e., @samp{*.newusers}).  (@dfn{Arbitrary} is defined
 -here as @dfn{whatever Lars thinks you should read}.)
 -
 -You'll also be subscribed to the Gnus documentation group, which should
 -help you with most common problems.
 -
 -If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
 -use the normal functions for handling new groups, and not do anything
 -special.
 -
 -
  @node The Server is Down
  @section The Server is Down
  @cindex server errors
@@@ -1254,7 -1286,7 +1254,7 @@@ parameter (@pxref{Topic Parameters}).  
  topic parameter that looks like
  
  @example
 -"nnslashdot"
 +"nnml"
  @end example
  
  will mean that all groups that match that regex will be subscribed under
@@@ -1317,18 -1349,11 +1317,18 @@@ but I thought it would be nice to have 
  more meant for setting some ground rules, while the other variable is
  used more for user fiddling.  By default this variable makes all new
  groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
 -@code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
 -subscribed.  If you don't like that, just set this variable to
 -@code{nil}.
 -
 -New groups that match this regexp are subscribed using
 +@code{nnfolder}, @code{nnmbox}, @code{nnmh}, @code{nnimap}, and
 +@code{nnmaildir}) subscribed.  If you don't like that, just set this
 +variable to @code{nil}.
 +
 +@vindex gnus-auto-subscribed-categories
 +As if that wasn't enough, @code{gnus-auto-subscribed-categories} also
 +allows you to specify that new groups should be subcribed based on the
 +category their select methods belong to.  The default is @samp{(mail
 +post-mail)}, meaning that all new groups from mail-like backends
 +should be subscribed automatically.
 +
 +New groups that match these variables are subscribed using
  @code{gnus-subscribe-options-newsgroup-method}.
  
  
@@@ -1351,11 -1376,31 +1351,11 @@@ you have read is by keeping track of ar
  change @code{gnus-select-method}, your @file{.newsrc} file becomes
  worthless.
  
 -Gnus provides a few functions to attempt to translate a @file{.newsrc}
 -file from one server to another.  They all have one thing in
 -common---they take a looong time to run.  You don't want to use these
 -functions more than absolutely necessary.
 -
 -@kindex M-x gnus-change-server
 -@findex gnus-change-server
 -If you have access to both servers, Gnus can request the headers for all
 -the articles you have read and compare @code{Message-ID}s and map the
 -article numbers of the read articles and article marks.  The @kbd{M-x
 -gnus-change-server} command will do this for all your native groups.  It
 -will prompt for the method you want to move to.
 -
 -@kindex M-x gnus-group-move-group-to-server
 -@findex gnus-group-move-group-to-server
 -You can also move individual groups with the @kbd{M-x
 -gnus-group-move-group-to-server} command.  This is useful if you want to
 -move a (foreign) group from one server to another.
 -
  @kindex M-x gnus-group-clear-data-on-native-groups
  @findex gnus-group-clear-data-on-native-groups
 -If you don't have access to both the old and new server, all your marks
 -and read ranges have become worthless.  You can use the @kbd{M-x
 -gnus-group-clear-data-on-native-groups} command to clear out all data
 -that you have on your native groups.  Use with caution.
 +You can use the @kbd{M-x gnus-group-clear-data-on-native-groups}
 +command to clear out all data that you have on your native groups.
 +Use with caution.
  
  @kindex M-x gnus-group-clear-data
  @findex gnus-group-clear-data
@@@ -1614,11 -1659,14 +1614,11 @@@ of doing your job.  Note that this vari
  @vindex gnus-no-groups-message
  Message displayed by Gnus when no groups are available.
  
 -@item gnus-play-startup-jingle
 -@vindex gnus-play-startup-jingle
 -If non-@code{nil}, play the Gnus jingle at startup.
 -
 -@item gnus-startup-jingle
 -@vindex gnus-startup-jingle
 -Jingle to be played if the above variable is non-@code{nil}.  The
 -default is @samp{Tuxedomoon.Jingle4.au}.
 +@item gnus-use-backend-marks
 +@vindex gnus-use-backend-marks
 +If non-@code{nil}, Gnus will store article marks both in the
 +@file{.newsrc.eld} file and in the backends.  This will slow down
 +group operation some.
  
  @end table
  
@@@ -1683,6 -1731,7 +1683,6 @@@ long as Gnus is active
  * Exiting Gnus::                Stop reading news and get some work done.
  * Group Topics::                A folding group mode divided into topics.
  * Non-ASCII Group Names::       Accessing groups of non-English names.
 -* Searching::                   Mail search engines.
  * Misc Group Stuff::            Other stuff that you can to do.
  @end menu
  
@@@ -1969,7 -2018,8 +1969,7 @@@ functions for snarfing info on the grou
  @vindex gnus-group-update-hook
  @findex gnus-group-highlight-line
  @code{gnus-group-update-hook} is called when a group line is changed.
 -It will not be called when @code{gnus-visual} is @code{nil}.  This hook
 -calls @code{gnus-group-highlight-line} by default.
 +It will not be called when @code{gnus-visual} is @code{nil}.
  
  
  @node Group Maneuvering
@@@ -2197,12 -2247,6 +2197,12 @@@ selected
  @section Subscription Commands
  @cindex subscription
  
 +The following commands allow for managing your subscriptions in the
 +Group buffer.  If you want to subscribe to many groups, it's probably
 +more convenient to go to the @ref{Server Buffer}, and choose the
 +server there using @kbd{RET} or @kbd{SPC}.  Then you'll have the
 +commands listed in @ref{Browse Foreign Server} at hand.
 +
  @table @kbd
  
  @item S t
@@@ -2401,9 -2445,6 +2401,9 @@@ one with the best level
  All groups with a level less than or equal to
  @code{gnus-group-default-list-level} will be listed in the group buffer
  by default.
 +This variable can also be a function.  In that case, that function will
 +be called and the result will be used as value.
 +
  
  @vindex gnus-group-list-inactive-groups
  If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
@@@ -2519,15 -2560,6 +2519,15 @@@ the command to be executed
  @section Foreign Groups
  @cindex foreign groups
  
 +If you recall how to subscribe to servers (@pxref{Finding the News})
 +you will remember that @code{gnus-secondary-select-methods} and
 +@code{gnus-select-method} let you write a definition in Emacs Lisp of
 +what servers you want to see when you start up.  The alternate
 +approach is to use foreign servers and groups.  ``Foreign'' here means
 +they are not coming from the select methods.  All foreign server
 +configuration and subscriptions are stored only in the
 +@file{~/.newsrc.eld} file.
 +
  Below are some group mode commands for making and editing general foreign
  groups, as well as commands to ease the creation of a few
  special-purpose groups.  All these commands insert the newly created
@@@ -2601,6 -2633,27 +2601,6 @@@ for a directory name (@code{gnus-group-
  @findex gnus-group-make-help-group
  Make the Gnus help group (@code{gnus-group-make-help-group}).
  
 -@item G a
 -@kindex G a (Group)
 -@cindex (ding) archive
 -@cindex archive group
 -@findex gnus-group-make-archive-group
 -@vindex gnus-group-archive-directory
 -@vindex gnus-group-recent-archive-directory
 -Make a Gnus archive group (@code{gnus-group-make-archive-group}).  By
 -default a group pointing to the most recent articles will be created
 -(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
 -group will be created from @code{gnus-group-archive-directory}.
 -
 -@item G k
 -@kindex G k (Group)
 -@findex gnus-group-make-kiboze-group
 -@cindex nnkiboze
 -Make a kiboze group.  You will be prompted for a name, for a regexp to
 -match groups to be ``included'' in the kiboze group, and a series of
 -strings to match on headers (@code{gnus-group-make-kiboze-group}).
 -@xref{Kibozed Groups}.
 -
  @item G D
  @kindex G D (Group)
  @findex gnus-group-enter-directory
@@@ -3602,12 -3655,8 +3602,12 @@@ Enter the current group (@code{gnus-bro
  @item u
  @kindex u (Browse)
  @findex gnus-browse-unsubscribe-current-group
 +@vindex gnus-browse-subscribe-newsgroup-method
  Unsubscribe to the current group, or, as will be the case here,
 -subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
 +subscribe to it (@code{gnus-browse-unsubscribe-current-group}).  You
 +can affect the way the new group is entered into the Group buffer
 +using the variable @code{gnus-browse-subscribe-newsgroup-method}.  See
 +@pxref{Subscription Methods} for available options.
  
  @item l
  @itemx q
@@@ -4313,451 -4362,1189 +4313,451 @@@ names should be the same in both groups
  header will be displayed incorrectly in the article buffer.
  
  
 -@node Searching
 -@section Searching
 +@node Misc Group Stuff
 +@section Misc Group Stuff
  
  @menu
 -* nnir::                     Searching on IMAP, with swish, namazu, etc.
 -* nnmairix::                 Searching maildir, MH or mbox with Mairix.
 +* Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
 +* Group Information::           Information and help on groups and Gnus.
 +* Group Timestamp::             Making Gnus keep track of when you last read a group.
 +* File Commands::               Reading and writing the Gnus files.
 +* Sieve Commands::              Managing Sieve scripts.
  @end menu
  
 -@cindex Searching
 +@table @kbd
  
 -FIXME: This node is a stub.
 +@item v
 +@kindex v (Group)
 +@cindex keys, reserved for users (Group)
 +The key @kbd{v} is reserved for users.  You can bind it to some
 +command or better use it as a prefix key.  For example:
  
 -FIXME: Add a brief overview of Gnus search capabilities.  A brief
 -comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
 -as well.
 +@lisp
 +(define-key gnus-group-mode-map (kbd "v j d")
 +  (lambda ()
 +    (interactive)
 +    (gnus-group-jump-to-group "nndraft:drafts")))
 +@end lisp
  
 -FIXME: Explain difference to @ref{Searching for Articles}, add reference
 -and back-reference.
 +On keys reserved for users in Emacs and on keybindings in general
 +@xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
  
 -@node nnir
 -@subsection nnir
 +@item ^
 +@kindex ^ (Group)
 +@findex gnus-group-enter-server-mode
 +Enter the server buffer (@code{gnus-group-enter-server-mode}).
 +@xref{Server Buffer}.
  
 -FIXME: As a first step, convert the commentary of @file{nnir} to texi.
 -@cindex nnir
 +@item a
 +@kindex a (Group)
 +@findex gnus-group-post-news
 +Start composing a message (a news by default)
 +(@code{gnus-group-post-news}).  If given a prefix, post to the group
 +under the point.  If the prefix is 1, prompt for a group to post to.
 +Contrary to what the name of this function suggests, the prepared
 +article might be a mail instead of a news, if a mail group is specified
 +with the prefix argument.  @xref{Composing Messages}.
  
 -@node nnmairix
 -@subsection nnmairix
 +@item m
 +@kindex m (Group)
 +@findex gnus-group-mail
 +Mail a message somewhere (@code{gnus-group-mail}).  If given a prefix,
 +use the posting style of the group under the point.  If the prefix is 1,
 +prompt for a group name to find the posting style.
 +@xref{Composing Messages}.
  
 -@cindex mairix
 -@cindex nnmairix
 -This paragraph describes how to set up mairix and the back end
 -@code{nnmairix} for indexing and searching your mail from within
 -Gnus.  Additionally, you can create permanent ``smart'' groups which are
 -bound to mairix searches and are automatically updated.
 +@item i
 +@kindex i (Group)
 +@findex gnus-group-news
 +Start composing a news (@code{gnus-group-news}).  If given a prefix,
 +post to the group under the point.  If the prefix is 1, prompt
 +for group to post to.  @xref{Composing Messages}.
  
 -@menu
 -* About mairix::                About the mairix mail search engine
 -* nnmairix requirements::       What you will need for using nnmairix
 -* What nnmairix does::          What does nnmairix actually do?
 -* Setting up mairix::           Set up your mairix installation
 -* Configuring nnmairix::        Set up the nnmairix back end
 -* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
 -* Propagating marks::           How to propagate marks from nnmairix groups
 -* nnmairix tips and tricks::    Some tips, tricks and examples
 -* nnmairix caveats::            Some more stuff you might want to know
 -@end menu
 +This function actually prepares a news even when using mail groups.
 +This is useful for ``posting'' messages to mail groups without actually
 +sending them over the network: they're just saved directly to the group
 +in question.  The corresponding back end must have a request-post method
 +for this to work though.
  
 -@c FIXME: The markup in this section might need improvement.
 -@c E.g. adding @samp, @var, @file, @command, etc.
 -@c Cf. (info "(texinfo)Indicating")
 +@item G z
 +@kindex G z (Group)
 +@findex gnus-group-compact-group
  
 -@node About mairix
 -@subsubsection About mairix
 +Compact the group under point (@code{gnus-group-compact-group}).
 +Currently implemented only in nnml (@pxref{Mail Spool}).  This removes
 +gaps between article numbers, hence getting a correct total article
 +count.
  
 -Mairix is a tool for indexing and searching words in locally stored
 -mail.  It was written by Richard Curnow and is licensed under the
 -GPL.  Mairix comes with most popular GNU/Linux distributions, but it also
 -runs under Windows (with cygwin), Mac OS X and Solaris.  The homepage can
 -be found at
 -@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
 +@end table
  
 -Though mairix might not be as flexible as other search tools like
 -swish++ or namazu, which you can use via the @code{nnir} back end, it
 -has the prime advantage of being incredibly fast.  On current systems, it
 -can easily search through headers and message bodies of thousands and
 -thousands of mails in well under a second.  Building the database
 -necessary for searching might take a minute or two, but only has to be
 -done once fully.  Afterwards, the updates are done incrementally and
 -therefore are really fast, too.  Additionally, mairix is very easy to set
 -up.
 +Variables for the group buffer:
  
 -For maximum speed though, mairix should be used with mails stored in
 -@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
 -end), although it also works with mbox.  Mairix presents the search
 -results by populating a @emph{virtual} maildir/MH folder with symlinks
 -which point to the ``real'' message files (if mbox is used, copies are
 -made).  Since mairix already presents search results in such a virtual
 -mail folder, it is very well suited for using it as an external program
 -for creating @emph{smart} mail folders, which represent certain mail
 -searches.  This is similar to a Kiboze group (@pxref{Kibozed Groups}),
 -but much faster.
 +@table @code
  
 -@node nnmairix requirements
 -@subsubsection nnmairix requirements
 +@item gnus-group-mode-hook
 +@vindex gnus-group-mode-hook
 +is called after the group buffer has been
 +created.
  
 -Mairix searches local mail---that means, mairix absolutely must have
 -direct access to your mail folders.  If your mail resides on another
 -server (e.g. an @acronym{IMAP} server) and you happen to have shell
 -access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
 +@item gnus-group-prepare-hook
 +@vindex gnus-group-prepare-hook
 +is called after the group buffer is
 +generated.  It may be used to modify the buffer in some strange,
 +unnatural way.
  
 -Additionally, @code{nnmairix} only supports the following Gnus back
 -ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}.  You must use
 -one of these back ends for using @code{nnmairix}.  Other back ends, like
 -@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
 +@item gnus-group-prepared-hook
 +@vindex gnus-group-prepare-hook
 +is called as the very last thing after the group buffer has been
 +generated.  It may be used to move point around, for instance.
  
 -If you absolutely must use mbox and still want to use @code{nnmairix},
 -you can set up a local @acronym{IMAP} server, which you then access via
 -@code{nnimap}.  This is a rather massive setup for accessing some mbox
 -files, so just change to MH or Maildir already...  However, if you're
 -really, really passionate about using mbox, you might want to look into
 -the package @file{mairix.el}, which comes with Emacs 23.
 +@item gnus-permanently-visible-groups
 +@vindex gnus-permanently-visible-groups
 +Groups matching this regexp will always be listed in the group buffer,
 +whether they are empty or not.
  
 -@node What nnmairix does
 -@subsubsection What nnmairix does
 +@end table
  
 -The back end @code{nnmairix} enables you to call mairix from within Gnus,
 -either to query mairix with a search term or to update the
 -database.  While visiting a message in the summary buffer, you can use
 -several pre-defined shortcuts for calling mairix, e.g. to quickly
 -search for all mails from the sender of the current message or to
 -display the whole thread associated with the message, even if the
 -mails are in different folders.
 +@node Scanning New Messages
 +@subsection Scanning New Messages
 +@cindex new messages
 +@cindex scanning new news
  
 -Additionally, you can create permanent @code{nnmairix} groups which are bound
 -to certain mairix searches.  This way, you can easily create a group
 -containing mails from a certain sender, with a certain subject line or
 -even for one specific thread based on the Message-ID.  If you check for
 -new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
 -automatically update themselves by calling mairix.
 +@table @kbd
  
 -You might ask why you need @code{nnmairix} at all, since mairix already
 -creates the group, populates it with links to the mails so that you can
 -then access it with Gnus, right?  Well, this @emph{might} work, but often
 -does not---at least not without problems.  Most probably you will get
 -strange article counts, and sometimes you might see mails which Gnus
 -claims have already been canceled and are inaccessible.  This is due to
 -the fact that Gnus isn't really amused when things are happening behind
 -its back.  Another problem can be the mail back end itself, e.g. if you
 -use mairix with an @acronym{IMAP} server (I had Dovecot complaining
 -about corrupt index files when mairix changed the contents of the search
 -group).  Using @code{nnmairix} should circumvent these problems.
 +@item g
 +@kindex g (Group)
 +@findex gnus-group-get-new-news
 +@c @icon{gnus-group-get-new-news}
 +Check the server(s) for new articles.  If the numerical prefix is used,
 +this command will check only groups of level @var{arg} and lower
 +(@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
 +command will force a total re-reading of the active file(s) from the
 +back end(s).
  
 -@code{nnmairix} is not really a mail back end---it's actually more like
 -a wrapper, sitting between a ``real'' mail back end where mairix stores
 -the searches and the Gnus front end.  You can choose between three
 -different mail back ends for the mairix folders: @code{nnml},
 -@code{nnmaildir} or @code{nnimap}.  @code{nnmairix} will call the mairix
 -binary so that the search results are stored in folders named
 -@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
 -present these folders in the Gnus front end only with @code{<NAME>}.
 -You can use an existing mail back end where you already store your mail,
 -but if you're uncomfortable with @code{nnmairix} creating new mail
 -groups alongside your other mail, you can also create e.g. a new
 -@code{nnmaildir} or @code{nnml} server exclusively for mairix, but then
 -make sure those servers do not accidentally receive your new mail
 -(@pxref{nnmairix caveats}).  A special case exists if you want to use
 -mairix remotely on an IMAP server with @code{nnimap}---here the mairix
 -folders and your other mail must be on the same @code{nnimap} back end.
 +@item M-g
 +@kindex M-g (Group)
 +@findex gnus-group-get-new-news-this-group
 +@vindex gnus-goto-next-group-when-activating
 +@c @icon{gnus-group-get-new-news-this-group}
 +Check whether new articles have arrived in the current group
 +(@code{gnus-group-get-new-news-this-group}).
 +@code{gnus-goto-next-group-when-activating} says whether this command is
 +to move point to the next group or not.  It is @code{t} by default.
  
 -@node Setting up mairix
 -@subsubsection Setting up mairix
 +@findex gnus-activate-all-groups
 +@cindex activating groups
 +@item C-c M-g
 +@kindex C-c M-g (Group)
 +Activate absolutely all groups (@code{gnus-activate-all-groups}).
  
 -First: create a backup of your mail folders (@pxref{nnmairix caveats}).
 +@item R
 +@kindex R (Group)
 +@cindex restarting
 +@findex gnus-group-restart
 +Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
 +file(s), closes the connection to all servers, clears up all run-time
 +Gnus variables, and then starts Gnus all over again.
  
 -Setting up mairix is easy: simply create a @file{.mairixrc} file with
 -(at least) the following entries:
 +@end table
  
 -@example
 -# Your Maildir/MH base folder
 -base=~/Maildir
 -@end example
 -
 -This is the base folder for your mails.  All the following directories
 -are relative to this base folder.  If you want to use @code{nnmairix}
 -with @code{nnimap}, this base directory has to point to the mail
 -directory where the @acronym{IMAP} server stores the mail folders!
 +@vindex gnus-get-new-news-hook
 +@code{gnus-get-new-news-hook} is run just before checking for new news.
  
 -@example
 -maildir= ... your maildir folders which should be indexed ...
 -mh= ... your nnml/mh folders which should be indexed ...
 -mbox = ... your mbox files which should be indexed ...
 -@end example
 +@vindex gnus-after-getting-new-news-hook
 +@code{gnus-after-getting-new-news-hook} is run after checking for new
 +news.
  
 -This specifies all your mail folders and mbox files (relative to the
 -base directory!) you want to index with mairix.  Note that the
 -@code{nnml} back end saves mails in MH format, so you have to put those
 -directories in the @code{mh} line.  See the example at the end of this
 -section and mairixrc's man-page for further details.
  
 -@example
 -omit=zz_mairix-*
 -@end example
 +@node Group Information
 +@subsection Group Information
 +@cindex group information
 +@cindex information on groups
  
 -@vindex nnmairix-group-prefix
 -This should make sure that you don't accidentally index the mairix
 -search results.  You can change the prefix of these folders with the
 -variable @code{nnmairix-group-prefix}.
 +@table @kbd
  
 -@example
 -mformat= ... 'maildir' or 'mh' ...
 -database= ... location of database file ...
 -@end example
  
 -The @code{format} setting specifies the output format for the mairix
 -search folder.  Set this to @code{mh} if you want to access search results
 -with @code{nnml}.  Otherwise choose @code{maildir}.
 +@item H f
 +@kindex H f (Group)
 +@findex gnus-group-fetch-faq
 +@vindex gnus-group-faq-directory
 +@cindex FAQ
 +@cindex ange-ftp
 +Try to fetch the @acronym{FAQ} for the current group
 +(@code{gnus-group-fetch-faq}).  Gnus will try to get the @acronym{FAQ}
 +from @code{gnus-group-faq-directory}, which is usually a directory on
 +a remote machine.  This variable can also be a list of directories.
 +In that case, giving a prefix to this command will allow you to choose
 +between the various sites.  @code{ange-ftp} (or @code{efs}) will be
 +used for fetching the file.
  
 -To summarize, here is my shortened @file{.mairixrc} file as an example:
 +If fetching from the first site is unsuccessful, Gnus will attempt to go
 +through @code{gnus-group-faq-directory} and try to open them one by one.
  
 -@example
 -base=~/Maildir
 -maildir=.personal:.work:.logcheck:.sent
 -mh=../Mail/nnml/*...
 -mbox=../mboxmail/mailarchive_year*
 -mformat=maildir
 -omit=zz_mairix-*
 -database=~/.mairixdatabase
 -@end example
 +@item H d
 +@itemx C-c C-d
 +@c @icon{gnus-group-describe-group}
 +@kindex H d (Group)
 +@kindex C-c C-d (Group)
 +@cindex describing groups
 +@cindex group description
 +@findex gnus-group-describe-group
 +Describe the current group (@code{gnus-group-describe-group}).  If given
 +a prefix, force Gnus to re-read the description from the server.
  
 -In this case, the base directory is @file{~/Maildir}, where all my Maildir
 -folders are stored.  As you can see, the folders are separated by
 -colons.  If you wonder why every folder begins with a dot: this is
 -because I use Dovecot as @acronym{IMAP} server, which again uses
 -@code{Maildir++} folders.  For testing nnmairix, I also have some
 -@code{nnml} mail, which is saved in @file{~/Mail/nnml}.  Since this has
 -to be specified relative to the @code{base} directory, the @code{../Mail}
 -notation is needed.  Note that the line ends in @code{*...}, which means
 -to recursively scan all files under this directory.  Without the three
 -dots, the wildcard @code{*} will not work recursively.  I also have some
 -old mbox files with archived mail lying around in @file{~/mboxmail}.
 -The other lines should be obvious.
 +@item M-d
 +@kindex M-d (Group)
 +@findex gnus-group-describe-all-groups
 +Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
 +prefix, force Gnus to re-read the description file from the server.
  
 -See the man page for @code{mairixrc} for details and further options,
 -especially regarding wildcard usage, which may be a little different
 -than you are used to.
 +@item H v
 +@itemx V
 +@kindex V (Group)
 +@kindex H v (Group)
 +@cindex version
 +@findex gnus-version
 +Display current Gnus version numbers (@code{gnus-version}).
  
 -Now simply call @code{mairix} to create the index for the first time.
 -Note that this may take a few minutes, but every following index will do
 -the updates incrementally and hence is very fast.
 +@item ?
 +@kindex ? (Group)
 +@findex gnus-group-describe-briefly
 +Give a very short help message (@code{gnus-group-describe-briefly}).
  
 -@node Configuring nnmairix
 -@subsubsection Configuring nnmairix
 +@item C-c C-i
 +@kindex C-c C-i (Group)
 +@cindex info
 +@cindex manual
 +@findex gnus-info-find-node
 +Go to the Gnus info node (@code{gnus-info-find-node}).
 +@end table
  
 -In group mode, type @kbd{G b c}
 -(@code{nnmairix-create-server-and-default-group}).  This will ask you for all
 -necessary information and create a @code{nnmairix} server as a foreign
 -server.  You will have to specify the following:
  
 -@itemize @bullet
 +@node Group Timestamp
 +@subsection Group Timestamp
 +@cindex timestamps
 +@cindex group timestamps
  
 -@item
 -The @strong{name} of the @code{nnmairix} server---choose whatever you
 -want.
 +It can be convenient to let Gnus keep track of when you last read a
 +group.  To set the ball rolling, you should add
 +@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
  
 -@item
 -The name of the @strong{back end server} where mairix should store its
 -searches.  This must be a full server name, like @code{nnml:mymail}.
 -Just hit @kbd{TAB} to see the available servers.  Currently, servers
 -which are accessed through @code{nnmaildir}, @code{nnimap} and
 -@code{nnml} are supported.  As explained above, for locally stored
 -mails, this can be an existing server where you store your mails.
 -However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
 -server exclusively for @code{nnmairix} in your secondary select methods
 -(@pxref{Finding the News}).  If you use a secondary @code{nnml} server
 -just for mairix, make sure that you explicitly set the server variable
 -@code{nnml-get-new-mail} to @code{nil}, or you might loose mail
 -(@pxref{nnmairix caveats}).  If you want to use mairix remotely on an
 -@acronym{IMAP} server, you have to choose the corresponding
 -@code{nnimap} server here.
 +@lisp
 +(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
 +@end lisp
  
 -@item
 -@vindex nnmairix-mairix-search-options
 -The @strong{command} to call the mairix binary.  This will usually just
 -be @code{mairix}, but you can also choose something like @code{ssh
 -SERVER mairix} if you want to call mairix remotely, e.g. on your
 -@acronym{IMAP} server.  If you want to add some default options to
 -mairix, you could do this here, but better use the variable
 -@code{nnmairix-mairix-search-options} instead.
 +After doing this, each time you enter a group, it'll be recorded.
  
 -@item
 -The name of the @strong{default search group}.  This will be the group
 -where all temporary mairix searches are stored, i.e. all searches which
 -are not bound to permanent @code{nnmairix} groups.  Choose whatever you
 -like.
 +This information can be displayed in various ways---the easiest is to
 +use the @samp{%d} spec in the group line format:
  
 -@item
 -If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
 -asked if you work with @strong{Maildir++}, i.e. with hidden maildir
 -folders (=beginning with a dot).  For example, you have to answer
 -@samp{yes} here if you work with the Dovecot @acronym{IMAP}
 -server.  Otherwise, you should answer @samp{no} here.
 +@lisp
 +(setq gnus-group-line-format
 +      "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
 +@end lisp
  
 -@end itemize
 +This will result in lines looking like:
  
 -@node nnmairix keyboard shortcuts
 -@subsubsection nnmairix keyboard shortcuts
 +@example
 +*        0: mail.ding                                19961002T012943
 +         0: custom                                   19961002T012713
 +@end example
  
 -In group mode:
 +As you can see, the date is displayed in compact ISO 8601 format.  This
 +may be a bit too much, so to just display the date, you could say
 +something like:
  
 -@table @kbd
 +@lisp
 +(setq gnus-group-line-format
 +      "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
 +@end lisp
  
 -@item G b c
 -@kindex G b c (Group)
 -@findex nnmairix-create-server-and-default-group
 -Creates @code{nnmairix} server and default search group for this server
 -(@code{nnmairix-create-server-and-default-group}).  You should have done
 -this by now (@pxref{Configuring nnmairix}).
 +If you would like greater control of the time format, you can use a
 +user-defined format spec.  Something like the following should do the
 +trick:
  
 -@item G b s
 -@kindex G b s (Group)
 -@findex nnmairix-search
 -Prompts for query which is then sent to the mairix binary.  Search
 -results are put into the default search group which is automatically
 -displayed (@code{nnmairix-search}).
 +@lisp
 +(setq gnus-group-line-format
 +      "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
 +(defun gnus-user-format-function-d (headers)
 +  (let ((time (gnus-group-timestamp gnus-tmp-group)))
 +    (if time
 +        (format-time-string "%b %d  %H:%M" time)
 +      "")))
 +@end lisp
  
 -@item G b m
 -@kindex G b m (Group)
 -@findex nnmairix-widget-search
 -Allows you to create a mairix search or a permanent group more
 -comfortably using graphical widgets, similar to a customization
 -group.  Just try it to see how it works (@code{nnmairix-widget-search}).
  
 -@item G b i
 -@kindex G b i (Group)
 -@findex nnmairix-search-interactive
 -Another command for creating a mairix query more comfortably, but uses
 -only the minibuffer (@code{nnmairix-search-interactive}).
 +@node File Commands
 +@subsection File Commands
 +@cindex file commands
  
 -@item G b g
 -@kindex G b g (Group)
 -@findex nnmairix-create-search-group
 -Creates a permanent group which is associated with a search query
 -(@code{nnmairix-create-search-group}).  The @code{nnmairix} back end
 -automatically calls mairix when you update this group with @kbd{g} or
 -@kbd{M-g}.
 +@table @kbd
  
 -@item G b q
 -@kindex G b q (Group)
 -@findex nnmairix-group-change-query-this-group
 -Changes the search query for the @code{nnmairix} group under cursor
 -(@code{nnmairix-group-change-query-this-group}).
 +@item r
 +@kindex r (Group)
 +@findex gnus-group-read-init-file
 +@vindex gnus-init-file
 +@cindex reading init file
 +Re-read the init file (@code{gnus-init-file}, which defaults to
 +@file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
  
 -@item G b t
 -@kindex G b t (Group)
 -@findex nnmairix-group-toggle-threads-this-group
 -Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
 -i.e.  if you want see the whole threads of the found messages
 -(@code{nnmairix-group-toggle-threads-this-group}).
 +@item s
 +@kindex s (Group)
 +@findex gnus-group-save-newsrc
 +@cindex saving .newsrc
 +Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
 +(@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
 +file(s) whether Gnus thinks it is necessary or not.
  
 -@item G b u
 -@kindex G b u (Group)
 -@findex nnmairix-update-database
 -@vindex nnmairix-mairix-update-options
 -Calls mairix binary for updating the database
 -(@code{nnmairix-update-database}).  The default parameters are @code{-F}
 -and @code{-Q} for making this as fast as possible (see variable
 -@code{nnmairix-mairix-update-options} for defining these default
 -options).
 +@c @item Z
 +@c @kindex Z (Group)
 +@c @findex gnus-group-clear-dribble
 +@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
  
 -@item G b r
 -@kindex G b r (Group)
 -@findex nnmairix-group-toggle-readmarks-this-group
 -Keep articles in this @code{nnmairix} group always read or unread, or leave the
 -marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
 +@end table
  
 -@item G b d
 -@kindex G b d (Group)
 -@findex nnmairix-group-delete-recreate-this-group
 -Recreate @code{nnmairix} group on the ``real'' mail back end
 -(@code{nnmairix-group-delete-recreate-this-group}).  You can do this if
 -you always get wrong article counts with a @code{nnmairix} group.
  
 -@item G b a
 -@kindex G b a (Group)
 -@findex nnmairix-group-toggle-allowfast-this-group
 -Toggles the @code{allow-fast} parameters for group under cursor
 -(@code{nnmairix-group-toggle-allowfast-this-group}).  The default
 -behavior of @code{nnmairix} is to do a mairix search every time you
 -update or enter the group.  With the @code{allow-fast} parameter set,
 -mairix will only be called when you explicitly update the group, but not
 -upon entering.  This makes entering the group faster, but it may also
 -lead to dangling symlinks if something changed between updating and
 -entering the group which is not yet in the mairix database.
 +@node Sieve Commands
 +@subsection Sieve Commands
 +@cindex group sieve commands
  
 -@item G b p
 -@kindex G b p (Group)
 -@findex nnmairix-group-toggle-propmarks-this-group
 -Toggle marks propagation for this group
 -(@code{nnmairix-group-toggle-propmarks-this-group}).  (@pxref{Propagating
 -marks}).
 +Sieve is a server-side mail filtering language.  In Gnus you can use
 +the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
 +sieve rules that should apply to each group.  Gnus provides two
 +commands to translate all these group parameters into a proper Sieve
 +script that can be transfered to the server somehow.
  
 -@item G b o
 -@kindex G b o (Group)
 -@findex nnmairix-propagate-marks
 -Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
 -@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
 +@vindex gnus-sieve-file
 +@vindex gnus-sieve-region-start
 +@vindex gnus-sieve-region-end
 +The generated Sieve script is placed in @code{gnus-sieve-file} (by
 +default @file{~/.sieve}).  The Sieve code that Gnus generate is placed
 +between two delimiters, @code{gnus-sieve-region-start} and
 +@code{gnus-sieve-region-end}, so you may write additional Sieve code
 +outside these delimiters that will not be removed the next time you
 +regenerate the Sieve script.
  
 -@end table
 +@vindex gnus-sieve-crosspost
 +The variable @code{gnus-sieve-crosspost} controls how the Sieve script
 +is generated.  If it is non-@code{nil} (the default) articles is
 +placed in all groups that have matching rules, otherwise the article
 +is only placed in the group with the first matching rule.  For
 +example, the group parameter @samp{(sieve address "sender"
 +"owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
 +code if @code{gnus-sieve-crosspost} is @code{nil}.  (When
 +@code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
 +except that the line containing the call to @code{stop} is removed.)
  
 -In summary mode:
 +@example
 +if address "sender" "owner-ding@@hpc.uh.edu" @{
 +        fileinto "INBOX.ding";
 +        stop;
 +@}
 +@end example
 +
 +@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
  
  @table @kbd
  
 -@item $ m
 -@kindex $ m (Summary)
 -@findex nnmairix-widget-search-from-this-article
 -Allows you to create a mairix query or group based on the current
 -message using graphical widgets (same as @code{nnmairix-widget-search})
 -(@code{nnmairix-widget-search-from-this-article}).
 +@item D g
 +@kindex D g (Group)
 +@findex gnus-sieve-generate
 +@vindex gnus-sieve-file
 +@cindex generating sieve script
 +Regenerate a Sieve script from the @code{sieve} group parameters and
 +put you into the @code{gnus-sieve-file} without saving it.
  
 -@item $ g
 -@kindex $ g (Summary)
 -@findex nnmairix-create-search-group-from-message
 -Interactively creates a new search group with query based on the current
 -message, but uses the minibuffer instead of graphical widgets
 -(@code{nnmairix-create-search-group-from-message}).
 +@item D u
 +@kindex D u (Group)
 +@findex gnus-sieve-update
 +@vindex gnus-sieve-file
 +@cindex updating sieve script
 +Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
 +@code{sieve} group parameters, save the file and upload it to the
 +server using the @code{sieveshell} program.
  
 -@item $ t
 -@kindex $ t (Summary)
 -@findex nnmairix-search-thread-this-article
 -Searches thread for the current article
 -(@code{nnmairix-search-thread-this-article}).  This is effectively a
 -shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
 -current article and enabled threads.
 +@end table
  
 -@item $ f
 -@kindex $ f (Summary)
 -@findex nnmairix-search-from-this-article
 -Searches all messages from sender of the current article
 -(@code{nnmairix-search-from-this-article}).  This is a shortcut for
 -calling @code{nnmairix-search} with @samp{f:From}.
  
 -@item $ o
 -@kindex $ o (Summary)
 -@findex nnmairix-goto-original-article
 -(Only in @code{nnmairix} groups!) Tries determine the group this article
 -originally came from and displays the article in this group, so that
 -e.g. replying to this article the correct posting styles/group
 -parameters are applied (@code{nnmairix-goto-original-article}).  This
 -function will use the registry if available, but can also parse the
 -article file name as a fallback method.
 +@node Summary Buffer
 +@chapter Summary Buffer
 +@cindex summary buffer
  
 -@item $ u
 -@kindex $ u (Summary)
 -@findex nnmairix-remove-tick-mark-original-article
 -Remove possibly existing tick mark from original article
 -(@code{nnmairix-remove-tick-mark-original-article}).  (@pxref{nnmairix
 -tips and tricks}).
 +A line for each article is displayed in the summary buffer.  You can
 +move around, read articles, post articles and reply to articles.
  
 -@end table
 +The most common way to a summary buffer is to select a group from the
 +group buffer (@pxref{Selecting a Group}).
  
 -@node Propagating marks
 -@subsubsection Propagating marks
 +You can have as many summary buffers open as you wish.
  
 -First of: you really need a patched mairix binary for using the marks
 -propagation feature efficiently. Otherwise, you would have to update
 -the mairix database all the time. You can get the patch at
 +You can customize the Summary Mode tool bar, see @kbd{M-x
 +customize-apropos RET gnus-summary-tool-bar}.  This feature is only
 +available in Emacs.
  
 -@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
 +@kindex v (Summary)
 +@cindex keys, reserved for users (Summary)
 +The key @kbd{v} is reserved for users.  You can bind it to some
 +command or better use it as a prefix key.  For example:
 +@lisp
 +(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
 +@end lisp
  
 -You need the mairix v0.21 source code for this patch; everything else
 -is explained in the accompanied readme file. If you don't want to use
 -marks propagation, you don't have to apply these patches, but they also
 -fix some annoyances regarding changing maildir flags, so it might still
 -be useful to you.
 +@menu
 +* Summary Buffer Format::       Deciding how the summary buffer is to look.
 +* Summary Maneuvering::         Moving around the summary buffer.
 +* Choosing Articles::           Reading articles.
 +* Paging the Article::          Scrolling the current article.
 +* Reply Followup and Post::     Posting articles.
 +* Delayed Articles::            Send articles at a later time.
 +* Marking Articles::            Marking articles as read, expirable, etc.
 +* Limiting::                    You can limit the summary buffer.
 +* Threading::                   How threads are made.
 +* Sorting the Summary Buffer::  How articles and threads are sorted.
 +* Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 +* Article Caching::             You may store articles in a cache.
 +* Persistent Articles::         Making articles expiry-resistant.
 +* Sticky Articles::             Article buffers that are not reused.
 +* Article Backlog::             Having already read articles hang around.
 +* Saving Articles::             Ways of customizing article saving.
 +* Decoding Articles::           Gnus can treat series of (uu)encoded articles.
 +* Article Treatment::           The article buffer can be mangled at will.
 +* MIME Commands::               Doing MIMEy things with the articles.
 +* Charsets::                    Character set issues.
 +* Article Commands::            Doing various things with the article buffer.
 +* Summary Sorting::             Sorting the summary buffer in various ways.
 +* Finding the Parent::          No child support? Get the parent.
 +* Alternative Approaches::      Reading using non-default summaries.
 +* Tree Display::                A more visual display of threads.
 +* Mail Group Commands::         Some commands can only be used in mail groups.
 +* Various Summary Stuff::       What didn't fit anywhere else.
 +* Exiting the Summary Buffer::  Returning to the Group buffer,
 +                                or reselecting the current group.
 +* Crosspost Handling::          How crossposted articles are dealt with.
 +* Duplicate Suppression::       An alternative when crosspost handling fails.
 +* Security::                    Decrypt and Verify.
 +* Mailing List::                Mailing list minor mode.
 +@end menu
  
 -With the patched mairix binary, you can use @code{nnmairix} as an
 -alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
 -example, instead of splitting all mails from @samp{david@@foobar.com}
 -into a group, you can simply create a search group with the query
 -@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
 -all about: simply put everything in one mail folder and dynamically
 -create searches instead of splitting. This is more flexible, since you
 -can dynamically change your folders any time you want to. This also
 -implies that you will usually read your mails in the @code{nnmairix}
 -groups instead of your ``real'' mail groups.
  
 -There is one problem, though: say you got a new mail from
 -@samp{david@@foobar.com}; it will now show up in two groups, the
 -``real'' group (your INBOX, for example) and in the @code{nnmairix}
 -search group (provided you have updated the mairix database). Now you
 -enter the @code{nnmairix} group and read the mail. The mail will be
 -marked as read, but only in the @code{nnmairix} group---in the ``real''
 -mail group it will be still shown as unread.
 +@node Summary Buffer Format
 +@section Summary Buffer Format
 +@cindex summary buffer format
  
 -You could now catch up the mail group (@pxref{Group Data}), but this is
 -tedious and error prone, since you may overlook mails you don't have
 -created @code{nnmairix} groups for. Of course, you could first use
 -@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
 -shortcuts}) and then read the mail in the original group, but that's
 -even more cumbersome.
 +@iftex
 +@iflatex
 +\gnusfigure{The Summary Buffer}{180}{
 +\put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
 +\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
 +}
 +@end iflatex
 +@end iftex
  
 -Clearly, the easiest way would be if marks could somehow be
 -automatically set for the original article. This is exactly what
 -@emph{marks propagation} is about.
 -
 -Marks propagation is deactivated by default. You can activate it for a
 -certain @code{nnmairix} group with
 -@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
 -p}). This function will warn you if you try to use it with your default
 -search group; the reason is that the default search group is used for
 -temporary searches, and it's easy to accidentally propagate marks from
 -this group. However, you can ignore this warning if you really want to.
 -
 -With marks propagation enabled, all the marks you set in a @code{nnmairix}
 -group should now be propagated to the original article. For example,
 -you can now tick an article (by default with @kbd{!}) and this mark should
 -magically be set for the original article, too.
 -
 -A few more remarks which you may or may not want to know:
 -
 -@vindex nnmairix-propagate-marks-upon-close
 -Marks will not be set immediately, but only upon closing a group. This
 -not only makes marks propagation faster, it also avoids problems with
 -dangling symlinks when dealing with maildir files (since changing flags
 -will change the file name). You can also control when to propagate marks
 -via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
 -details).
 -
 -Obviously, @code{nnmairix} will have to look up the original group for every
 -article you want to set marks for. If available, @code{nnmairix} will first use
 -the registry for determining the original group. The registry is very
 -fast, hence you should really, really enable the registry when using
 -marks propagation. If you don't have to worry about RAM and disc space,
 -set @code{gnus-registry-max-entries} to a large enough value; to be on
 -the safe side, choose roughly the amount of mails you index with mairix.
 -
 -@vindex nnmairix-only-use-registry
 -If you don't want to use the registry or the registry hasn't seen the
 -original article yet, @code{nnmairix} will use an additional mairix
 -search for determining the file name of the article. This, of course, is
 -way slower than the registry---if you set hundreds or even thousands of
 -marks this way, it might take some time. You can avoid this situation by
 -setting @code{nnmairix-only-use-registry} to t.
 -
 -Maybe you also want to propagate marks the other way round, i.e. if you
 -tick an article in a "real" mail group, you'd like to have the same
 -article in a @code{nnmairix} group ticked, too. For several good
 -reasons, this can only be done efficiently if you use maildir. To
 -immediately contradict myself, let me mention that it WON'T work with
 -@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
 -not in the file name. Therefore, propagating marks to @code{nnmairix}
 -groups will usually only work if you use an IMAP server which uses
 -maildir as its file format.
 -
 -@vindex nnmairix-propagate-marks-to-nnmairix-groups
 -If you work with this setup, just set
 -@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
 -happens. If you don't like what you see, just set it to @code{nil} again. One
 -problem might be that you get a wrong number of unread articles; this
 -usually happens when you delete or expire articles in the original
 -groups. When this happens, you can recreate the @code{nnmairix} group on the
 -back end using @kbd{G b d}.
 -
 -@node nnmairix tips and tricks
 -@subsubsection nnmairix tips and tricks
 -
 -@itemize
 -@item
 -Checking Mail
 -
 -@findex nnmairix-update-groups
 -I put all my important mail groups at group level 1. The mairix groups
 -have group level 5, so they do not get checked at start up (@pxref{Group
 -Levels}).
 -
 -I use the following to check for mails:
 -
 -@lisp
 -(defun my-check-mail-mairix-update (level)
 -  (interactive "P")
 -  ;; if no prefix given, set level=1
 -  (gnus-group-get-new-news (or level 1))
 -  (nnmairix-update-groups "mairixsearch" t t)
 -  (gnus-group-list-groups))
 -
 -(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
 -@end lisp
 -
 -Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
 -server. See the doc string for @code{nnmairix-update-groups} for
 -details.
 -
 -@item
 -Example: search group for ticked articles
 -
 -For example, you can create a group for all ticked articles, where the
 -articles always stay unread:
 -
 -Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
 -@samp{F:f} as query and do not include threads.
 -
 -Now activate marks propagation for this group by using @kbd{G b p}. Then
 -activate the always-unread feature by using @kbd{G b r} twice.
 -
 -So far so good---but how do you remove the tick marks in the @code{nnmairix}
 -group?  There are two options: You may simply use
 -@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
 -tick marks from the original article. The other possibility is to set
 -@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
 -comments about this option.  If it works for you, the tick marks should
 -also exist in the @code{nnmairix} group and you can remove them as usual,
 -e.g. by marking an article as read.
 -
 -When you have removed a tick mark from the original article, this
 -article should vanish from the @code{nnmairix} group after you have updated the
 -mairix database and updated the group.  Fortunately, there is a function
 -for doing exactly that: @code{nnmairix-update-groups}. See the previous code
 -snippet and the doc string for details.
 -
 -@item
 -Dealing with auto-subscription of mail groups
 -
 -As described before, all @code{nnmairix} groups are in fact stored on
 -the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
 -see them when you enter the back end server in the server buffer. You
 -should not subscribe these groups! Unfortunately, these groups will
 -usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
 -@code{nnml}, i.e. you will suddenly see groups of the form
 -@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
 -simply kill these groups with C-k.  For avoiding this, turn off
 -auto-subscription completely by setting the variable
 -@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
 -Groups}), or if you like to keep this feature use the following kludge
 -for turning it off for all groups beginning with @samp{zz_}:
 -
 -@lisp
 -(setq gnus-auto-subscribed-groups
 -      "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
 -@end lisp
 -
 -@end itemize
 -
 -@node nnmairix caveats
 -@subsubsection nnmairix caveats
 -
 -@itemize
 -@item
 -You can create a secondary @code{nnml} server just for nnmairix, but then
 -you have to explicitly set the corresponding server variable
 -@code{nnml-get-new-mail} to @code{nil}.  Otherwise, new mail might get
 -put into this secondary server (and would never show up again).  Here's
 -an example server definition:
 -
 -@lisp
 -(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
 -@end lisp
 -
 -(The @code{nnmaildir} back end also has a server variabe
 -@code{get-new-mail}, but its default value is @code{nil}, so you don't
 -have to explicitly set it if you use a @code{nnmaildir} server just for
 -mairix.)
 -
 -@item
 -If you use the Gnus registry: don't use the registry with
 -@code{nnmairix} groups (put them in
 -@code{gnus-registry-unfollowed-groups}).  Be @emph{extra careful} if
 -you use @code{gnus-registry-split-fancy-with-parent}; mails which are
 -split into @code{nnmairix} groups are usually gone for good as soon as
 -you check the group for new mail (yes, it has happened to me...).
 -
 -@item
 -Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
 -groups (you shouldn't be able to, anyway).
 -
 -@item
 -If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
 -@code{nnmairix} groups (though I have no idea what happens if you do).
 -
 -@item
 -mairix does only support us-ascii characters.
 -
 -@item
 -@code{nnmairix} uses a rather brute force method to force Gnus to
 -completely reread the group on the mail back end after mairix was
 -called---it simply deletes and re-creates the group on the mail
 -back end. So far, this has worked for me without any problems, and I
 -don't see how @code{nnmairix} could delete other mail groups than its
 -own, but anyway: you really should have a backup of your mail
 -folders.
 -
 -@item
 -All necessary information is stored in the group parameters
 -(@pxref{Group Parameters}). This has the advantage that no active file
 -is needed, but also implies that when you kill a @code{nnmairix} group,
 -it is gone for good.
 -
 -@item
 -@findex nnmairix-purge-old-groups
 -If you create and kill a lot of @code{nnmairix} groups, the
 -``zz_mairix-*'' groups will accumulate on the mail back end server. To
 -delete old groups which are no longer needed, call
 -@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
 -save any ``real'' mail in folders of the form
 -@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
 -@code{nnmairix} groups by changing the variable
 -@code{nnmairix-group-prefix}.
 -
 -@item
 -The following only applies if you @emph{don't} use the mentioned patch
 -for mairix (@pxref{Propagating marks}):
 -
 -A problem can occur when using @code{nnmairix} with maildir folders and
 -comes with the fact that maildir stores mail flags like @samp{Seen} or
 -@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
 -file name, respectively. This implies that currently you would have to
 -update the mairix database not only when new mail arrives, but also when
 -mail flags are changing. The same applies to new mails which are indexed
 -while they are still in the @samp{new} folder but then get moved to
 -@samp{cur} when Gnus has seen the mail. If you don't update the database
 -after this has happened, a mairix query can lead to symlinks pointing to
 -non-existing files. In Gnus, these messages will usually appear with
 -``(none)'' entries in the header and can't be accessed. If this happens
 -to you, using @kbd{G b u} and updating the group will usually fix this.
 -
 -@end itemize
 -
 -@node Misc Group Stuff
 -@section Misc Group Stuff
 -
 -@menu
 -* Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
 -* Group Information::           Information and help on groups and Gnus.
 -* Group Timestamp::             Making Gnus keep track of when you last read a group.
 -* File Commands::               Reading and writing the Gnus files.
 -* Sieve Commands::              Managing Sieve scripts.
 -@end menu
 -
 -@table @kbd
 -
 -@item v
 -@kindex v (Group)
 -@cindex keys, reserved for users (Group)
 -The key @kbd{v} is reserved for users.  You can bind it to some
 -command or better use it as a prefix key.  For example:
 -
 -@lisp
 -(define-key gnus-group-mode-map (kbd "v j d")
 -  (lambda ()
 -    (interactive)
 -    (gnus-group-jump-to-group "nndraft:drafts")))
 -@end lisp
 -
 -On keys reserved for users in Emacs and on keybindings in general
 -@xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
 -
 -@item ^
 -@kindex ^ (Group)
 -@findex gnus-group-enter-server-mode
 -Enter the server buffer (@code{gnus-group-enter-server-mode}).
 -@xref{Server Buffer}.
 -
 -@item a
 -@kindex a (Group)
 -@findex gnus-group-post-news
 -Start composing a message (a news by default)
 -(@code{gnus-group-post-news}).  If given a prefix, post to the group
 -under the point.  If the prefix is 1, prompt for a group to post to.
 -Contrary to what the name of this function suggests, the prepared
 -article might be a mail instead of a news, if a mail group is specified
 -with the prefix argument.  @xref{Composing Messages}.
 -
 -@item m
 -@kindex m (Group)
 -@findex gnus-group-mail
 -Mail a message somewhere (@code{gnus-group-mail}).  If given a prefix,
 -use the posting style of the group under the point.  If the prefix is 1,
 -prompt for a group name to find the posting style.
 -@xref{Composing Messages}.
 -
 -@item i
 -@kindex i (Group)
 -@findex gnus-group-news
 -Start composing a news (@code{gnus-group-news}).  If given a prefix,
 -post to the group under the point.  If the prefix is 1, prompt
 -for group to post to.  @xref{Composing Messages}.
 -
 -This function actually prepares a news even when using mail groups.
 -This is useful for ``posting'' messages to mail groups without actually
 -sending them over the network: they're just saved directly to the group
 -in question.  The corresponding back end must have a request-post method
 -for this to work though.
 -
 -@item G z
 -@kindex G z (Group)
 -@findex gnus-group-compact-group
 -
 -Compact the group under point (@code{gnus-group-compact-group}).
 -Currently implemented only in nnml (@pxref{Mail Spool}).  This removes
 -gaps between article numbers, hence getting a correct total article
 -count.
 -
 -@end table
 -
 -Variables for the group buffer:
 -
 -@table @code
 -
 -@item gnus-group-mode-hook
 -@vindex gnus-group-mode-hook
 -is called after the group buffer has been
 -created.
 -
 -@item gnus-group-prepare-hook
 -@vindex gnus-group-prepare-hook
 -is called after the group buffer is
 -generated.  It may be used to modify the buffer in some strange,
 -unnatural way.
 -
 -@item gnus-group-prepared-hook
 -@vindex gnus-group-prepare-hook
 -is called as the very last thing after the group buffer has been
 -generated.  It may be used to move point around, for instance.
 -
 -@item gnus-permanently-visible-groups
 -@vindex gnus-permanently-visible-groups
 -Groups matching this regexp will always be listed in the group buffer,
 -whether they are empty or not.
 -
 -@end table
 -
 -@node Scanning New Messages
 -@subsection Scanning New Messages
 -@cindex new messages
 -@cindex scanning new news
 -
 -@table @kbd
 -
 -@item g
 -@kindex g (Group)
 -@findex gnus-group-get-new-news
 -@c @icon{gnus-group-get-new-news}
 -Check the server(s) for new articles.  If the numerical prefix is used,
 -this command will check only groups of level @var{arg} and lower
 -(@code{gnus-group-get-new-news}).  If given a non-numerical prefix, this
 -command will force a total re-reading of the active file(s) from the
 -back end(s).
 -
 -@item M-g
 -@kindex M-g (Group)
 -@findex gnus-group-get-new-news-this-group
 -@vindex gnus-goto-next-group-when-activating
 -@c @icon{gnus-group-get-new-news-this-group}
 -Check whether new articles have arrived in the current group
 -(@code{gnus-group-get-new-news-this-group}).
 -@code{gnus-goto-next-group-when-activating} says whether this command is
 -to move point to the next group or not.  It is @code{t} by default.
 -
 -@findex gnus-activate-all-groups
 -@cindex activating groups
 -@item C-c M-g
 -@kindex C-c M-g (Group)
 -Activate absolutely all groups (@code{gnus-activate-all-groups}).
 -
 -@item R
 -@kindex R (Group)
 -@cindex restarting
 -@findex gnus-group-restart
 -Restart Gnus (@code{gnus-group-restart}).  This saves the @file{.newsrc}
 -file(s), closes the connection to all servers, clears up all run-time
 -Gnus variables, and then starts Gnus all over again.
 -
 -@end table
 -
 -@vindex gnus-get-new-news-hook
 -@code{gnus-get-new-news-hook} is run just before checking for new news.
 -
 -@vindex gnus-after-getting-new-news-hook
 -@code{gnus-after-getting-new-news-hook} is run after checking for new
 -news.
 -
 -
 -@node Group Information
 -@subsection Group Information
 -@cindex group information
 -@cindex information on groups
 -
 -@table @kbd
 -
 -
 -@item H f
 -@kindex H f (Group)
 -@findex gnus-group-fetch-faq
 -@vindex gnus-group-faq-directory
 -@cindex FAQ
 -@cindex ange-ftp
 -Try to fetch the @acronym{FAQ} for the current group
 -(@code{gnus-group-fetch-faq}).  Gnus will try to get the @acronym{FAQ}
 -from @code{gnus-group-faq-directory}, which is usually a directory on
 -a remote machine.  This variable can also be a list of directories.
 -In that case, giving a prefix to this command will allow you to choose
 -between the various sites.  @code{ange-ftp} (or @code{efs}) will be
 -used for fetching the file.
 -
 -If fetching from the first site is unsuccessful, Gnus will attempt to go
 -through @code{gnus-group-faq-directory} and try to open them one by one.
 -
 -@item H c
 -@kindex H c (Group)
 -@findex gnus-group-fetch-charter
 -@vindex gnus-group-charter-alist
 -@cindex charter
 -Try to open the charter for the current group in a web browser
 -(@code{gnus-group-fetch-charter}).  Query for a group if given a
 -prefix argument.
 -
 -Gnus will use @code{gnus-group-charter-alist} to find the location of
 -the charter.  If no location is known, Gnus will fetch the control
 -messages for the group, which in some cases includes the charter.
 -
 -@item H C
 -@kindex H C (Group)
 -@findex gnus-group-fetch-control
 -@vindex gnus-group-fetch-control-use-browse-url
 -@cindex control message
 -Fetch the control messages for the group from the archive at
 -@code{ftp.isc.org} (@code{gnus-group-fetch-control}).  Query for a
 -group if given a prefix argument.
 -
 -If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
 -Gnus will open the control messages in a browser using
 -@code{browse-url}.  Otherwise they are fetched using @code{ange-ftp}
 -and displayed in an ephemeral group.
 -
 -Note that the control messages are compressed.  To use this command
 -you need to turn on @code{auto-compression-mode} (@pxref{Compressed
 -Files, ,Compressed Files, emacs, The Emacs Manual}).
 -
 -@item H d
 -@itemx C-c C-d
 -@c @icon{gnus-group-describe-group}
 -@kindex H d (Group)
 -@kindex C-c C-d (Group)
 -@cindex describing groups
 -@cindex group description
 -@findex gnus-group-describe-group
 -Describe the current group (@code{gnus-group-describe-group}).  If given
 -a prefix, force Gnus to re-read the description from the server.
 -
 -@item M-d
 -@kindex M-d (Group)
 -@findex gnus-group-describe-all-groups
 -Describe all groups (@code{gnus-group-describe-all-groups}).  If given a
 -prefix, force Gnus to re-read the description file from the server.
 -
 -@item H v
 -@itemx V
 -@kindex V (Group)
 -@kindex H v (Group)
 -@cindex version
 -@findex gnus-version
 -Display current Gnus version numbers (@code{gnus-version}).
 -
 -@item ?
 -@kindex ? (Group)
 -@findex gnus-group-describe-briefly
 -Give a very short help message (@code{gnus-group-describe-briefly}).
 -
 -@item C-c C-i
 -@kindex C-c C-i (Group)
 -@cindex info
 -@cindex manual
 -@findex gnus-info-find-node
 -Go to the Gnus info node (@code{gnus-info-find-node}).
 -@end table
 -
 -
 -@node Group Timestamp
 -@subsection Group Timestamp
 -@cindex timestamps
 -@cindex group timestamps
 -
 -It can be convenient to let Gnus keep track of when you last read a
 -group.  To set the ball rolling, you should add
 -@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
 -
 -@lisp
 -(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
 -@end lisp
 -
 -After doing this, each time you enter a group, it'll be recorded.
 -
 -This information can be displayed in various ways---the easiest is to
 -use the @samp{%d} spec in the group line format:
 -
 -@lisp
 -(setq gnus-group-line-format
 -      "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
 -@end lisp
 -
 -This will result in lines looking like:
 -
 -@example
 -*        0: mail.ding                                19961002T012943
 -         0: custom                                   19961002T012713
 -@end example
 -
 -As you can see, the date is displayed in compact ISO 8601 format.  This
 -may be a bit too much, so to just display the date, you could say
 -something like:
 -
 -@lisp
 -(setq gnus-group-line-format
 -      "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
 -@end lisp
 -
 -If you would like greater control of the time format, you can use a
 -user-defined format spec.  Something like the following should do the
 -trick:
 -
 -@lisp
 -(setq gnus-group-line-format
 -      "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
 -(defun gnus-user-format-function-d (headers)
 -  (let ((time (gnus-group-timestamp gnus-tmp-group)))
 -    (if time
 -        (format-time-string "%b %d  %H:%M" time)
 -      "")))
 -@end lisp
 -
 -
 -@node File Commands
 -@subsection File Commands
 -@cindex file commands
 -
 -@table @kbd
 -
 -@item r
 -@kindex r (Group)
 -@findex gnus-group-read-init-file
 -@vindex gnus-init-file
 -@cindex reading init file
 -Re-read the init file (@code{gnus-init-file}, which defaults to
 -@file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
 -
 -@item s
 -@kindex s (Group)
 -@findex gnus-group-save-newsrc
 -@cindex saving .newsrc
 -Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
 -(@code{gnus-group-save-newsrc}).  If given a prefix, force saving the
 -file(s) whether Gnus thinks it is necessary or not.
 -
 -@c @item Z
 -@c @kindex Z (Group)
 -@c @findex gnus-group-clear-dribble
 -@c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
 -
 -@end table
 -
 -
 -@node Sieve Commands
 -@subsection Sieve Commands
 -@cindex group sieve commands
 -
 -Sieve is a server-side mail filtering language.  In Gnus you can use
 -the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
 -sieve rules that should apply to each group.  Gnus provides two
 -commands to translate all these group parameters into a proper Sieve
 -script that can be transfered to the server somehow.
 -
 -@vindex gnus-sieve-file
 -@vindex gnus-sieve-region-start
 -@vindex gnus-sieve-region-end
 -The generated Sieve script is placed in @code{gnus-sieve-file} (by
 -default @file{~/.sieve}).  The Sieve code that Gnus generate is placed
 -between two delimiters, @code{gnus-sieve-region-start} and
 -@code{gnus-sieve-region-end}, so you may write additional Sieve code
 -outside these delimiters that will not be removed the next time you
 -regenerate the Sieve script.
 -
 -@vindex gnus-sieve-crosspost
 -The variable @code{gnus-sieve-crosspost} controls how the Sieve script
 -is generated.  If it is non-@code{nil} (the default) articles is
 -placed in all groups that have matching rules, otherwise the article
 -is only placed in the group with the first matching rule.  For
 -example, the group parameter @samp{(sieve address "sender"
 -"owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
 -code if @code{gnus-sieve-crosspost} is @code{nil}.  (When
 -@code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
 -except that the line containing the call to @code{stop} is removed.)
 -
 -@example
 -if address "sender" "owner-ding@@hpc.uh.edu" @{
 -        fileinto "INBOX.ding";
 -        stop;
 -@}
 -@end example
 -
 -@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
 -
 -@table @kbd
 -
 -@item D g
 -@kindex D g (Group)
 -@findex gnus-sieve-generate
 -@vindex gnus-sieve-file
 -@cindex generating sieve script
 -Regenerate a Sieve script from the @code{sieve} group parameters and
 -put you into the @code{gnus-sieve-file} without saving it.
 -
 -@item D u
 -@kindex D u (Group)
 -@findex gnus-sieve-update
 -@vindex gnus-sieve-file
 -@cindex updating sieve script
 -Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
 -@code{sieve} group parameters, save the file and upload it to the
 -server using the @code{sieveshell} program.
 -
 -@end table
 -
 -
 -@node Summary Buffer
 -@chapter Summary Buffer
 -@cindex summary buffer
 -
 -A line for each article is displayed in the summary buffer.  You can
 -move around, read articles, post articles and reply to articles.
 -
 -The most common way to a summary buffer is to select a group from the
 -group buffer (@pxref{Selecting a Group}).
 -
 -You can have as many summary buffers open as you wish.
 -
 -You can customize the Summary Mode tool bar, see @kbd{M-x
 -customize-apropos RET gnus-summary-tool-bar}.  This feature is only
 -available in Emacs.
 -
 -@kindex v (Summary)
 -@cindex keys, reserved for users (Summary)
 -The key @kbd{v} is reserved for users.  You can bind it to some
 -command or better use it as a prefix key.  For example:
 -@lisp
 -(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
 -@end lisp
 -
 -@menu
 -* Summary Buffer Format::       Deciding how the summary buffer is to look.
 -* Summary Maneuvering::         Moving around the summary buffer.
 -* Choosing Articles::           Reading articles.
 -* Paging the Article::          Scrolling the current article.
 -* Reply Followup and Post::     Posting articles.
 -* Delayed Articles::            Send articles at a later time.
 -* Marking Articles::            Marking articles as read, expirable, etc.
 -* Limiting::                    You can limit the summary buffer.
 -* Threading::                   How threads are made.
 -* Sorting the Summary Buffer::  How articles and threads are sorted.
 -* Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 -* Article Caching::             You may store articles in a cache.
 -* Persistent Articles::         Making articles expiry-resistant.
 -* Sticky Articles::             Article buffers that are not reused.
 -* Article Backlog::             Having already read articles hang around.
 -* Saving Articles::             Ways of customizing article saving.
 -* Decoding Articles::           Gnus can treat series of (uu)encoded articles.
 -* Article Treatment::           The article buffer can be mangled at will.
 -* MIME Commands::               Doing MIMEy things with the articles.
 -* Charsets::                    Character set issues.
 -* Article Commands::            Doing various things with the article buffer.
 -* Summary Sorting::             Sorting the summary buffer in various ways.
 -* Finding the Parent::          No child support? Get the parent.
 -* Alternative Approaches::      Reading using non-default summaries.
 -* Tree Display::                A more visual display of threads.
 -* Mail Group Commands::         Some commands can only be used in mail groups.
 -* Various Summary Stuff::       What didn't fit anywhere else.
 -* Exiting the Summary Buffer::  Returning to the Group buffer,
 -                                or reselecting the current group.
 -* Crosspost Handling::          How crossposted articles are dealt with.
 -* Duplicate Suppression::       An alternative when crosspost handling fails.
 -* Security::                    Decrypt and Verify.
 -* Mailing List::                Mailing list minor mode.
 -@end menu
 -
 -
 -@node Summary Buffer Format
 -@section Summary Buffer Format
 -@cindex summary buffer format
 -
 -@iftex
 -@iflatex
 -\gnusfigure{The Summary Buffer}{180}{
 -\put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
 -\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
 -}
 -@end iflatex
 -@end iftex
 -
 -@menu
 -* Summary Buffer Lines::        You can specify how summary lines should look.
 -* To From Newsgroups::          How to not display your own name.
 -* Summary Buffer Mode Line::    You can say how the mode line should look.
 -* Summary Highlighting::        Making the summary buffer all pretty and nice.
 -@end menu
 +@menu
 +* Summary Buffer Lines::        You can specify how summary lines should look.
 +* To From Newsgroups::          How to not display your own name.
 +* Summary Buffer Mode Line::    You can say how the mode line should look.
 +* Summary Highlighting::        Making the summary buffer all pretty and nice.
 +@end menu
  
  @findex mail-extract-address-components
  @findex gnus-extract-address-components
@@@ -4948,7 -5735,7 +4948,7 @@@ Download mark
  Desired cursor position (instead of after first colon).
  @item &user-date;
  Age sensitive date format.  Various date format is defined in
 -@code{gnus-user-date-format-alist}.
 +@code{gnus-summary-user-date-format-alist}.
  @item u
  User defined specifier.  The next character in the format string should
  be a letter.  Gnus will call the function
@@@ -5247,11 -6034,6 +5247,11 @@@ threads
  This variable can also be a number.  In that case, center the window at
  the given number of lines from the top.
  
 +@item gnus-summary-stop-at-end-of-message
 +@vindex gnus-summary-stop-at-end-of-message
 +If non-@code{nil}, don't go to the next article when hitting
 +@kbd{SPC}, and you're at the end of the article.
 +
  @end table
  
  
@@@ -5457,10 -6239,9 +5457,10 @@@ Scroll the current article one line bac
  @findex gnus-summary-show-article
  @vindex gnus-summary-show-article-charset-alist
  (Re)fetch the current article (@code{gnus-summary-show-article}).  If
 -given a prefix, fetch the current article, but don't run any of the
 -article treatment functions.  This will give you a ``raw'' article, just
 -the way it came from the server.
 +given a prefix, show a completely ``raw'' article, just the way it
 +came from the server.  If given a prefix twice (i.e., @kbd{C-u C-u
 +g'}), fetch the current article, but don't run any of the article
 +treatment functions.
  
  @cindex charset, view article with different charset
  If given a numerical prefix, you can do semi-manual charset stuff.
@@@ -5560,8 -6341,7 +5560,8 @@@ present, that's used instead
  @findex gnus-summary-wide-reply-with-original
  Mail a wide reply to the current article and include the original
  message (@code{gnus-summary-wide-reply-with-original}).  This command uses
 -the process/prefix convention.
 +the process/prefix convention, but only uses the headers from the
 +first article to determine the recipients.
  
  @item S v
  @kindex S v (Summary)
@@@ -5625,6 -6405,8 +5625,6 @@@ the posting style of the current group
  If the prefix is 1, prompt for a group name to find the posting style.
  
  @item S i
 -@itemx i
 -@kindex i (Summary)
  @kindex S i (Summary)
  @findex gnus-summary-news-other-window
  Prepare a news (@code{gnus-summary-news-other-window}).  By default,
@@@ -5962,12 -6744,6 +5962,12 @@@ Presumably, you want to use the demon f
  Just don't forget to set that up :-)
  @end table
  
 +When delaying an article with @kbd{C-c C-j}, Message mode will
 +automatically add a @code{"Date"} header with the current time.  In
 +many cases you probably want the @code{"Date"} header to reflect the
 +time the message is sent instead.  To do this, you have to delete
 +@code{Date} from @code{message-draft-headers}.
 +
  
  @node Marking Articles
  @section Marking Articles
@@@ -6076,6 -6852,10 +6076,6 @@@ Marked as read by a catchup (@code{gnus
  @vindex gnus-canceled-mark
  Canceled article (@code{gnus-canceled-mark})
  
 -@item F
 -@vindex gnus-souped-mark
 -@sc{soup}ed article (@code{gnus-souped-mark}).  @xref{SOUP}.
 -
  @item Q
  @vindex gnus-sparse-mark
  Sparsely reffed article (@code{gnus-sparse-mark}).  @xref{Customizing
@@@ -7046,7 -7826,7 +7046,7 @@@ This is a rather obscure variable that 
  intended for those non-news newsgroups where the back end has to fetch
  quite a lot to present the summary buffer, and where it's impossible to
  go back to parents of articles.  This is mostly the case in the
 -web-based groups, like the @code{nnultimate} groups.
 +web-based groups.
  
  If you don't use those, then it's safe to leave this as the default
  @code{nil}.  If you want to use this variable, it should be a regexp
@@@ -7482,16 -8262,6 +7482,16 @@@ These functions will be called many, ma
  preferably be short and sweet to avoid slowing down Gnus too much.
  It's probably a good idea to byte-compile things like this.
  
 +@vindex gnus-async-post-fetch-function
 +@findex gnus-html-prefetch-images
 +After an article has been prefetched, this
 +@code{gnus-async-post-fetch-function} will be called.  The buffer will
 +be narrowed to the region of the article that was fetched.  A useful
 +value would be @code{gnus-html-prefetch-images}, which will prefetch
 +and store images referenced in the article, so that you don't have to
 +wait for them to be fetched when you read the article.  This is useful
 +for @acronym{HTML} messages that have external images.
 +
  @vindex gnus-prefetched-article-deletion-strategy
  Articles have to be removed from the asynch buffer sooner or later.  The
  @code{gnus-prefetched-article-deletion-strategy} says when to remove
@@@ -8496,8 -9266,7 +8496,8 @@@ these articles easier
  * Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
  * Article Button Levels::       Controlling appearance of buttons.
  * Article Date::                Grumble, UT!
 -* Article Display::             Display various stuff---X-Face, Picons, Smileys
 +* Article Display::             Display various stuff:
 +                                X-Face, Picons, Gravatars, Smileys.
  * Article Signature::           What is a signature?
  * Article Miscellanea::         Various other stuff.
  @end menu
@@@ -8758,14 -9527,6 +8758,14 @@@ signature should be removed, or other s
  corresponding regular expression in @code{gnus-article-banner-alist} is
  used.
  
 +For instance:
 +
 +@lisp
 +(setq gnus-article-banner-alist
 +      ((googleGroups .
 +       "^\n*--~--~---------\\(.+\n\\)+")))
 +@end lisp
 +
  Regardless of a group, you can hide things like advertisements only when
  the sender of an article has a certain mail address specified in
  @code{gnus-article-address-banner-alist}.
@@@ -8969,17 -9730,6 +8969,17 @@@ an attempt to provide more quoting char
  like @code{\222} or @code{\264} where you're expecting some kind of
  apostrophe or quotation mark, then try this wash.
  
 +@item W U
 +@kindex W U (Summary)
 +@findex gnus-article-treat-non-ascii
 +@cindex Unicode
 +@cindex Non-@acronym{ASCII}
 +Translate many non-@acronym{ASCII} characters into their
 +@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
 +This is mostly useful if you're on a terminal that has a limited font
 +and does't show accented characters, ``advanced'' punctuation, and the
 +like.  For instance, @samp{»} is tranlated into @samp{>>}, and so on.
 +
  @item W Y f
  @kindex W Y f (Summary)
  @findex gnus-article-outlook-deuglify-article
@@@ -9095,18 -9845,15 +9095,18 @@@ If a prefix is given, a charset will b
  the charset defined in @code{gnus-summary-show-article-charset-alist}
  (@pxref{Paging the Article}) will be used.
  
 -@vindex gnus-article-wash-function
  The default is to use the function specified by
  @code{mm-text-html-renderer} (@pxref{Display Customization, ,Display
  Customization, emacs-mime, The Emacs MIME Manual}) to convert the
 -@acronym{HTML}, but this is controlled by the
 -@code{gnus-article-wash-function} variable.  Pre-defined functions you
 -can use include:
 +@acronym{HTML}.  Pre-defined functions you can use include:
  
  @table @code
 +@item shr
 +Use Gnus simple html renderer.
 +
 +@item gnus-w3m
 +Use Gnus rendered based on w3m.
 +
  @item w3
  Use Emacs/W3.
  
@@@ -9371,6 -10118,18 +9371,6 @@@ string is invalid
  An alist of @code{(RATE . REGEXP)} pairs used by the function
  @code{gnus-button-mid-or-mail-heuristic}.
  
 -@c Stuff related to gnus-button-tex-level
 -
 -@item gnus-button-ctan-handler
 -@findex gnus-button-ctan-handler
 -The function to use for displaying CTAN links.  It must take one
 -argument, the string naming the URL.
 -
 -@item gnus-ctan-url
 -@vindex gnus-ctan-url
 -Top directory of a CTAN (Comprehensive TeX Archive Network) archive used
 -by @code{gnus-button-ctan-handler}.
 -
  @c Misc stuff
  
  @item gnus-article-button-face
@@@ -9443,6 -10202,14 +9443,6 @@@ Related variables and functions includ
  @code{gnus-button-mid-or-mail-heuristic}, and
  @code{gnus-button-mid-or-mail-heuristic-alist}.
  
 -@item gnus-button-tex-level
 -@vindex gnus-button-tex-level
 -Controls the display of references to @TeX{} or LaTeX stuff, e.g. for CTAN
 -URLs.  See the variables @code{gnus-ctan-url},
 -@code{gnus-button-ctan-handler},
 -@code{gnus-button-ctan-directory-regexp}, and
 -@code{gnus-button-handle-ctan-bogus-regexp}.
 -
  @end table
  
  
@@@ -9499,18 -10266,26 +9499,18 @@@ Say how much time has elapsed between t
  (@code{gnus-article-date-lapsed}).  It looks something like:
  
  @example
 -X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
 +Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
  @end example
  
 -@vindex gnus-article-date-lapsed-new-header
 -The value of @code{gnus-article-date-lapsed-new-header} determines
 -whether this header will just be added below the old Date one, or will
 -replace it.
 -
 -An advantage of using Gnus to read mail is that it converts simple bugs
 -into wonderful absurdities.
 -
 -If you want to have this line updated continually, you can put
 +This line is updated continually by default.  If you wish to switch
 +that off, say:
  
 +@vindex gnus-article-update-date-headers
  @lisp
 -(gnus-start-date-timer)
 +(setq gnus-article-update-date-headers nil)
  @end lisp
  
 -in your @file{~/.gnus.el} file, or you can run it off of some hook.  If
 -you want to stop the timer, you can use the @code{gnus-stop-date-timer}
 -command.
 +in your @file{~/.gnus.el} file.
  
  @item W T o
  @kindex W T o (Summary)
@@@ -9532,7 -10307,6 +9532,7 @@@ preferred format automatically
  @cindex picons
  @cindex x-face
  @cindex smileys
 +@cindex gravatars
  
  These commands add various frivolous display gimmicks to the article
  buffer in Emacs versions that support them.
@@@ -9549,9 -10323,6 +9549,9 @@@ their messages with (@pxref{Smileys})
  Picons, on the other hand, reside on your own system, and Gnus will
  try to match the headers to what you have (@pxref{Picons}).
  
 +Gravatars reside on-line and are fetched from
 +@uref{http://www.gravatar.com/} (@pxref{Gravatars}).
 +
  All these functions are toggles---if the elements already exist,
  they'll be removed.
  
@@@ -9590,31 -10361,12 +9590,31 @@@ Piconify all mail headers (i. e., @code
  Piconify all news headers (i. e., @code{Newsgroups} and
  @code{Followup-To}) (@code{gnus-treat-newsgroups-picon}).
  
 +@item W D g
 +@kindex W D g (Summary)
 +@findex gnus-treat-from-gravatar
 +Gravatarify the @code{From} header (@code{gnus-treat-from-gravatar}).
 +
 +@item W D h
 +@kindex W D h (Summary)
 +@findex gnus-treat-mail-gravatar
 +Gravatarify all mail headers (i. e., @code{Cc}, @code{To})
 +(@code{gnus-treat-from-gravatar}).
 +
  @item W D D
  @kindex W D D (Summary)
  @findex gnus-article-remove-images
  Remove all images from the article buffer
  (@code{gnus-article-remove-images}).
  
 +@item W D W
 +@kindex W D W (Summary)
 +@findex gnus-html-show-images
 +If you're reading an @acronym{HTML} article rendered with
 +@code{gnus-article-html}, then you can insert any blocked images in
 +the buffer with this command.
 +(@code{gnus-html-show-images}).
 +
  @end table
  
  
@@@ -9754,24 -10506,17 +9754,24 @@@ the same manner
  @kindex K H (Summary)
  @findex gnus-article-browse-html-article
  View @samp{text/html} parts of the current article with a WWW browser.
 -The message header is added to the beginning of every html part unless
 -the prefix argument is given.
 +Inline images embedded in a message using the @code{cid} scheme, as they
 +are generally considered to be safe, will be processed properly.  The
 +message header is added to the beginning of every @acronym{HTML} part
 +unless the prefix argument is given.
  
 -Warning: Spammers use links to images in HTML articles to verify whether
 -you have read the message.  As this command passes the @acronym{HTML}
 -content to the browser without eliminating these ``web bugs'' you should
 -only use it for mails from trusted senders.
 +Warning: Spammers use links to images (using the @code{http} scheme) in
 +@acronym{HTML} articles to verify whether you have read the message.  As
 +this command passes the @acronym{HTML} content to the browser without
 +eliminating these ``web bugs'' you should only use it for mails from
 +trusted senders.
  
  If you always want to display @acronym{HTML} parts in the browser, set
  @code{mm-text-html-renderer} to @code{nil}.
  
 +This command creates temporary files to pass @acronym{HTML} contents
 +including images if any to the browser, and deletes them when exiting
 +the group (if you want).
 +
  @item K b
  @kindex K b (Summary)
  Make all the @acronym{MIME} parts have buttons in front of them.  This is
@@@ -10086,16 -10831,6 +10086,16 @@@ Generate and print a PostScript image o
  be run just before printing the buffer.  An alternative way to print
  article is to use Muttprint (@pxref{Saving Articles}).
  
 +@item A C
 +@vindex gnus-fetch-partial-articles
 +@findex gnus-summary-show-complete-article
 +If @code{<backend>-fetch-partial-articles} is non-@code{nil}, Gnus will
 +fetch partial articles, if the backend it fetches them from supports
 +it.  Currently only @code{nnimap} does.  If you're looking at a
 +partial article, and want to see the complete article instead, then
 +the @kbd{A C} command (@code{gnus-summary-show-complete-article}) will
 +do so.
 +
  @end table
  
  
@@@ -10273,12 -11008,9 +10273,12 @@@ do not do a particularly excellent job 
  @code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
  articles from any groups, while @code{nnfolder}, and @code{nnimap} are
  only able to locate articles that have been posted to the current
 -group.  (Anything else would be too time consuming.)  @code{nnmh} does
 -not support this at all.
 +group.  @code{nnmh} does not support this at all.
  
 +Fortunately, the special @code{nnregistry} back end is able to locate
 +articles in any groups, regardless of their back end (@pxref{Registry
 +Article Refer Method, fetching by @code{Message-ID} using the
 +registry}).
  
  @node Alternative Approaches
  @section Alternative Approaches
@@@ -10822,6 -11554,18 +10822,6 @@@ sieve
  
  @table @kbd
  
 -@item H f
 -@kindex H f (Summary)
 -@findex gnus-summary-fetch-faq
 -@vindex gnus-group-faq-directory
 -Try to fetch the @acronym{FAQ} (list of frequently asked questions)
 -for the current group (@code{gnus-summary-fetch-faq}).  Gnus will try
 -to get the @acronym{FAQ} from @code{gnus-group-faq-directory}, which
 -is usually a directory on a remote machine.  This variable can also be
 -a list of directories.  In that case, giving a prefix to this command
 -will allow you to choose between the various sites.  @code{ange-ftp}
 -or @code{efs} will probably be used for fetching the file.
 -
  @item H d
  @kindex H d (Summary)
  @findex gnus-summary-describe-group
@@@ -11147,7 -11891,8 +11147,7 @@@ read the same article more than once.  
  posted it to several groups separately.  Posting the same article to
  several groups (not cross-posting) is called @dfn{spamming}, and you are
  by law required to send nasty-grams to anyone who perpetrates such a
 -heinous crime.  You may want to try NoCeM handling to filter out spam
 -(@pxref{NoCeM}).
 +heinous crime.
  
  Remember: Cross-posting is kinda ok, but posting the same article
  separately to several groups is not.  Massive cross-posting (aka.
@@@ -11278,7 -12023,7 +11278,7 @@@ To handle @acronym{PGP} and @acronym{PG
  install an OpenPGP implementation such as GnuPG.  The Lisp interface
  to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG,
  epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg,
 -PGG Manual}), Mailcrypt, and gpg.el are also supported.
 +PGG Manual}), and Mailcrypt are also supported.
  
  @item
  To handle @acronym{S/MIME} message, you need to install OpenSSL.  OpenSSL 0.9.6
@@@ -11317,7 -12062,7 +11317,7 @@@ public-key matching the @samp{From:} he
  @vindex mml1991-use
  Symbol indicating elisp interface to OpenPGP implementation for
  @acronym{PGP} messages.  The default is @code{epg}, but @code{pgg},
 -@code{mailcrypt}, and @code{gpg} are also supported although
 +and @code{mailcrypt} are also supported although
  deprecated.  By default, Gnus uses the first available interface in
  this order.
  
  @vindex mml2015-use
  Symbol indicating elisp interface to OpenPGP implementation for
  @acronym{PGP/MIME} messages.  The default is @code{epg}, but
 -@code{pgg}, @code{mailcrypt}, and @code{gpg} are also supported
 +@code{pgg}, and @code{mailcrypt} are also supported
  although deprecated.  By default, Gnus uses the first available
  interface in this order.
  
@@@ -11425,7 -12170,6 +11425,7 @@@ tell Gnus otherwise
  @menu
  * Hiding Headers::              Deciding what headers should be displayed.
  * Using MIME::                  Pushing articles through @acronym{MIME} before reading them.
 +* HTML::                        Reading @acronym{HTML} messages.
  * Customizing Articles::        Tailoring the look of the articles.
  * Article Keymap::              Keystrokes available in the article buffer.
  * Misc Article::                Other stuff.
@@@ -11701,94 -12445,25 +11701,94 @@@ Output the @acronym{MIME} object to a p
  Interactively run an action on the @acronym{MIME} object
  (@code{gnus-mime-action-on-part}).
  
 -@end table
 +@end table
 +
 +Gnus will display some @acronym{MIME} objects automatically.  The way Gnus
 +determines which parts to do this with is described in the Emacs
 +@acronym{MIME} manual.
 +
 +It might be best to just use the toggling functions from the article
 +buffer to avoid getting nasty surprises.  (For instance, you enter the
 +group @samp{alt.sing-a-long} and, before you know it, @acronym{MIME} has
 +decoded the sound file in the article and some horrible sing-a-long song
 +comes screaming out your speakers, and you can't find the volume button,
 +because there isn't one, and people are starting to look at you, and you
 +try to stop the program, but you can't, and you can't find the program
 +to control the volume, and everybody else in the room suddenly decides
 +to look at you disdainfully, and you'll feel rather stupid.)
 +
 +Any similarity to real events and people is purely coincidental.  Ahem.
 +
 +Also @pxref{MIME Commands}.
 +
 +
 +@node HTML
 +@section @acronym{HTML}
 +@cindex @acronym{HTML}
 +
 +If you have @code{w3m} installed on your system, Gnus can display
 +@acronym{HTML} articles in the article buffer.  There are many Gnus
 +add-ons for doing this, using various approaches, but there's one
 +(sort of) built-in method that's used by default.
 +
 +For a complete overview, consult @xref{Display Customization,
 +,Display Customization, emacs-mime, The Emacs MIME Manual}.  This
 +section only describes the default method.
 +
 +@table @code
 +@item mm-text-html-renderer
 +@vindex mm-text-html-renderer
 +If set to @code{gnus-article-html}, Gnus will use the built-in method,
 +that's based on @code{w3m}.
 +
 +@item gnus-blocked-images
 +@vindex gnus-blocked-images
 +External images that have @acronym{URL}s that match this regexp won't
 +be fetched and displayed.  For instance, do block all @acronym{URL}s
 +that have the string ``ads'' in them, do the following:
 +
 +@lisp
 +(setq gnus-blocked-images "ads")
 +@end lisp
 +
 +This can also be a function to be evaluated.  If so, it will be
 +called with the group name as the parameter.  The default value is
 +@code{gnus-block-private-groups}, which will return @samp{"."} for
 +anything that isn't a newsgroup.  This means that no external images
 +will be fetched as a result of reading mail, so that nobody can use
 +web bugs (and the like) to track whether you've read email.
 +
 +Also @pxref{Misc Article} for @code{gnus-inhibit-images}.
 +
 +@item gnus-html-cache-directory
 +@vindex gnus-html-cache-directory
 +Gnus will download and cache images according to how
 +@code{gnus-blocked-images} is set.  These images will be stored in
 +this directory.
 +
 +@item gnus-html-cache-size
 +@vindex gnus-html-cache-size
 +When @code{gnus-html-cache-size} bytes have been used in that
 +directory, the oldest files will be deleted.  The default is 500MB.
 +
 +@item gnus-html-frame-width
 +@vindex gnus-html-frame-width
 +The width to use when rendering HTML.  The default is 70.
  
 -Gnus will display some @acronym{MIME} objects automatically.  The way Gnus
 -determines which parts to do this with is described in the Emacs
 -@acronym{MIME} manual.
 +@item gnus-max-image-proportion
 +@vindex gnus-max-image-proportion
 +How big pictures displayed are in relation to the window they're in.
 +A value of 0.7 (the default) means that they are allowed to take up
 +70% of the width and height of the window.  If they are larger than
 +this, and Emacs supports it, then the images will be rescaled down to
 +fit these criteria.
  
 -It might be best to just use the toggling functions from the article
 -buffer to avoid getting nasty surprises.  (For instance, you enter the
 -group @samp{alt.sing-a-long} and, before you know it, @acronym{MIME} has
 -decoded the sound file in the article and some horrible sing-a-long song
 -comes screaming out your speakers, and you can't find the volume button,
 -because there isn't one, and people are starting to look at you, and you
 -try to stop the program, but you can't, and you can't find the program
 -to control the volume, and everybody else in the room suddenly decides
 -to look at you disdainfully, and you'll feel rather stupid.)
 +@end table
  
 -Any similarity to real events and people is purely coincidental.  Ahem.
 +To use this, make sure that you have @code{w3m} and @code{curl}
 +installed.  If you have, then Gnus should display @acronym{HTML}
 +automatically. 
  
 -Also @pxref{MIME Commands}.
  
  
  @node Customizing Articles
@@@ -11876,12 -12551,16 +11876,12 @@@ controlling variable is a predicate lis
  @vindex gnus-treat-strip-trailing-blank-lines
  @vindex gnus-treat-unsplit-urls
  @vindex gnus-treat-wash-html
 -@vindex gnus-treat-date-english
 -@vindex gnus-treat-date-iso8601
 -@vindex gnus-treat-date-lapsed
 -@vindex gnus-treat-date-local
 -@vindex gnus-treat-date-original
 -@vindex gnus-treat-date-user-defined
 -@vindex gnus-treat-date-ut
 +@vindex gnus-treat-date
  @vindex gnus-treat-from-picon
  @vindex gnus-treat-mail-picon
  @vindex gnus-treat-newsgroups-picon
 +@vindex gnus-treat-from-gravatar
 +@vindex gnus-treat-mail-gravatar
  @vindex gnus-treat-display-smileys
  @vindex gnus-treat-body-boundary
  @vindex gnus-treat-display-x-face
  @vindex gnus-treat-highlight-headers
  @vindex gnus-treat-highlight-signature
  @vindex gnus-treat-play-sounds
 -@vindex gnus-treat-translate
  @vindex gnus-treat-x-pgp-sig
  @vindex gnus-treat-unfold-headers
  @vindex gnus-treat-fold-headers
@@@ -11931,39 -12611,13 +11931,39 @@@ possible but those listed are probably 
  
  @xref{Article Washing}.
  
 -@item gnus-treat-date-english (head)
 -@item gnus-treat-date-iso8601 (head)
 -@item gnus-treat-date-lapsed (head)
 -@item gnus-treat-date-local (head)
 -@item gnus-treat-date-original (head)
 -@item gnus-treat-date-user-defined (head)
 -@item gnus-treat-date-ut (head)
 +@item gnus-treat-date (head)
 +
 +This will transform/add date headers according to the
 +@code{gnus-article-date-headers} variable.  This is a list of Date
 +headers to display.  The formats available are:
 +
 +@table @code
 +@item ut
 +Universal time, aka GMT, aka ZULU.
 +
 +@item local
 +The user's local time zone.
 +
 +@item english
 +A semi-readable English sentence.
 +
 +@item lapsed
 +The time elapsed since the message was posted.
 +
 +@item combined-lapsed
 +Both the original date header and a (shortened) elapsed time.
 +
 +@item original
 +The original date header.
 +
 +@item iso8601
 +ISO8601 format, i.e., ``2010-11-23T22:05:21''.
 +
 +@item user-defined
 +A format done according to the @code{gnus-article-time-format}
 +variable.
 +
 +@end table
  
  @xref{Article Date}.
  
  
  @xref{Picons}.
  
 +@item gnus-treat-from-gravatar (head)
 +@item gnus-treat-mail-gravatar (head)
 +
 +@xref{Gravatars}.
 +
  @item gnus-treat-display-smileys (t, integer)
  
  @item gnus-treat-body-boundary (head)
@@@ -12032,6 -12681,8 +12032,6 @@@ is controlled by @code{gnus-body-bounda
  
  @vindex gnus-treat-play-sounds
  @item gnus-treat-play-sounds
 -@vindex gnus-treat-translate
 -@item gnus-treat-translate
  @item gnus-treat-ansi-sequences (t)
  @vindex gnus-treat-x-pgp-sig
  @item gnus-treat-x-pgp-sig (head)
@@@ -12161,11 -12812,6 +12161,11 @@@ If non-@code{nil}, use the same articl
  (This is the default.)  If @code{nil}, each group will have its own
  article buffer.
  
 +@item gnus-widen-article-window
 +@cindex gnus-widen-article-window
 +If non-@code{nil}, selecting the article buffer with the @kbd{h}
 +command will ``widen'' the article window to take the entire frame.
 +
  @vindex gnus-article-decode-hook
  @item gnus-article-decode-hook
  @cindex @acronym{MIME}
@@@ -12260,15 -12906,6 +12260,15 @@@ for how to compose such messages.  Thi
  @uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this
  variable is only enabled if you have installed it.
  
 +@vindex gnus-inhibit-images
 +@item gnus-inhibit-images
 +If this is non-@code{nil}, inhibit displaying of images inline in the
 +article body.  It is effective to images that are in articles as
 +@acronym{MIME} parts, and images in @acronym{HTML} articles rendered
 +when @code{mm-text-html-renderer} (@pxref{Display Customization,
 +,Display Customization, emacs-mime, The Emacs MIME Manual}) is
 +@code{shr} or @code{gnus-w3m}.
 +
  @end table
  
  
@@@ -12639,6 -13276,9 +12639,6 @@@ messages in one file per month
            (concat "mail." (format-time-string "%Y-%m")))))
  @end lisp
  
 -@c (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
 -@c use a different value for @code{gnus-message-archive-group} there.)
 -
  Now, when you send a message off, it will be stored in the appropriate
  group.  (If you want to disable storing for just one particular message,
  you can just remove the @code{Gcc} header that has been inserted.)  The
@@@ -12650,7 -13290,27 +12650,7 @@@ if (using @kbd{G r} in the group buffer
  nice---@samp{misc-mail-september-1995}, or whatever.  New messages will
  continue to be stored in the old (now empty) group.
  
 -That's the default method of archiving sent messages.  Gnus offers a
 -different way for the people who don't like the default method.  In that
 -case you should set @code{gnus-message-archive-group} to @code{nil};
 -this will disable archiving.
 -
  @table @code
 -@item gnus-outgoing-message-group
 -@vindex gnus-outgoing-message-group
 -All outgoing messages will be put in this group.  If you want to store
 -all your outgoing mail and articles in the group @samp{nnml:archive},
 -you set this variable to that value.  This variable can also be a list of
 -group names.
 -
 -If you want to have greater control over what group to put each
 -message in, you can set this variable to a function that checks the
 -current newsgroup name and then returns a suitable group name (or list
 -of names).
 -
 -This variable can be used instead of @code{gnus-message-archive-group},
 -but the latter is the preferred method.
 -
  @item gnus-gcc-mark-as-read
  @vindex gnus-gcc-mark-as-read
  If non-@code{nil}, automatically mark @code{Gcc} articles as read.
@@@ -12745,20 -13405,14 +12745,20 @@@ the headers of the article; if the valu
  name will be removed.  If the attribute name is @code{eval}, the form
  is evaluated, and the result is thrown away.
  
 -The attribute value can be a string (used verbatim), a function with
 -zero arguments (the return value will be used), a variable (its value
 -will be used) or a list (it will be @code{eval}ed and the return value
 -will be used).  The functions and sexps are called/@code{eval}ed in the
 -message buffer that is being set up.  The headers of the current article
 -are available through the @code{message-reply-headers} variable, which
 -is a vector of the following headers: number subject from date id
 -references chars lines xref extra.
 +The attribute value can be a string, a function with zero arguments
 +(the return value will be used), a variable (its value will be used)
 +or a list (it will be @code{eval}ed and the return value will be
 +used).  The functions and sexps are called/@code{eval}ed in the
 +message buffer that is being set up.  The headers of the current
 +article are available through the @code{message-reply-headers}
 +variable, which is a vector of the following headers: number subject
 +from date id references chars lines xref extra.
 +
 +In the case of a string value, if the @code{match} is a regular
 +expression, a @samp{gnus-match-substitute-replacement} is proceed on
 +the value to replace the positional parameters @samp{\@var{n}} by the
 +corresponding parenthetical matches (see @xref{Replacing the Text that
 +Matched, , Text Replacement, elisp, The Emacs Lisp Reference Manual}.)
  
  @vindex message-reply-headers
  
@@@ -12889,9 -13543,6 +12889,9 @@@ If you have some messages that you wis
  @kbd{D t} (@code{gnus-draft-toggle-sending}) command to mark the message
  as unsendable.  This is a toggling command.
  
 +Finally, if you want to delete a draft, use the normal @kbd{B DEL}
 +command (@pxref{Mail Group Commands}).
 +
  
  @node Rejected Articles
  @section Rejected Articles
@@@ -13019,10 -13670,10 +13019,10 @@@ The different methods all have their pe
  @menu
  * Server Buffer::               Making and editing virtual servers.
  * Getting News::                Reading USENET news with Gnus.
 +* Using IMAP::                  Reading mail from @acronym{IMAP}.
  * Getting Mail::                Reading your personal mail with Gnus.
  * Browsing the Web::            Getting messages from a plethora of Web sources.
 -* IMAP::                        Using Gnus as a @acronym{IMAP} client.
 -* Other Sources::               Reading directories, files, SOUP packets.
 +* Other Sources::               Reading directories, files.
  * Combined Groups::             Combining groups into one group.
  * Email Based Diary::           Using mails to manage diary events in Gnus.
  * Gnus Unplugged::              Reading news and mail offline.
@@@ -13134,11 -13785,6 +13134,11 @@@ Add a new server (@code{gnus-server-add
  @findex gnus-server-edit-server
  Edit a server (@code{gnus-server-edit-server}).
  
 +@item S
 +@kindex S (Server)
 +@findex gnus-server-show-server
 +Show the definition of a server (@code{gnus-server-show-server}).
 +
  @item SPACE
  @kindex SPACE (Server)
  @findex gnus-server-read-server
@@@ -13194,9 -13840,6 +13194,9 @@@ hence getting a correct total article c
  
  @end table
  
 +Some more commands for closing, disabling, and re-opening servers are
 +listed in @ref{Unavailable Servers}.
 +
  
  @node Example Methods
  @subsection Example Methods
@@@ -13442,14 -14085,6 +13442,14 @@@ Close the connections to all servers i
  Remove all marks to whether Gnus was denied connection from any servers
  (@code{gnus-server-remove-denials}).
  
 +@item c
 +@kindex c (Server)
 +@findex gnus-server-copy-server
 +Copy a server and give it a new name
 +(@code{gnus-server-copy-server}).  This can be useful if you have a
 +complex method definition, and want to use the same definition towards
 +a different (physical) server.
 +
  @item L
  @kindex L (Server)
  @findex gnus-server-offline-server
@@@ -13721,12 -14356,6 +13721,12 @@@ inhibit Gnus to add a @code{Message-ID
  Note that not all servers support the recommended ID.  This works for
  INN versions 2.3.0 and later, for instance.
  
 +@item nntp-server-list-active-group
 +If @code{nil}, then always use @samp{GROUP} instead of @samp{LIST
 +ACTIVE}.  This is usually slower, but on misconfigured servers that
 +don't update their active files often, this can help.
 +
 +
  @end table
  
  @menu
@@@ -13750,12 -14379,7 +13750,12 @@@ functions is also affected by commonly 
  @findex nntp-open-network-stream
  @item nntp-open-network-stream
  This is the default, and simply connects to some port or other on the
 -remote system.
 +remote system.  If both Emacs and the server supports it, the
 +connection will be upgraded to an encrypted @acronym{STARTTLS}
 +connection automatically.
 +
 +@item network-only
 +The same as the above, but don't do automatic @acronym{STARTTLS} upgrades.
  
  @findex nntp-open-tls-stream
  @item nntp-open-tls-stream
  @end table
  
  
 +@node Using IMAP
 +@section Using IMAP
 +@cindex imap
 +
 +The most popular mail backend is probably @code{nnimap}, which
 +provides access to @acronym{IMAP} servers.  @acronym{IMAP} servers
 +store mail remotely, so the client doesn't store anything locally.
 +This means that it's a convenient choice when you're reading your mail
 +from different locations, or with different user agents.
 +
 +@menu
 +* Connecting to an IMAP Server::     Getting started with @acronym{IMAP}.
 +* Customizing the IMAP Connection::  Variables for @acronym{IMAP} connection.
 +* Client-Side IMAP Splitting::       Put mail in the correct mail box.
 +@end menu
 +
 +
 +@node Connecting to an IMAP Server
 +@subsection Connecting to an IMAP Server
 +
 +Connecting to an @acronym{IMAP} can be very easy.  Type @kbd{B} in the
 +group buffer, or (if your primary interest is reading email), say
 +something like:
 +
 +@example
 +(setq gnus-select-method
 +      '(nnimap "imap.gmail.com"))
 +@end example
 +
 +You'll be prompted for a user name and password.  If you grow tired of
 +that, then add the following to your @file{~/.authinfo} file:
 +
 +@example
 +machine imap.gmail.com login <username> password <password> port imap
 +@end example
 +
 +That should basically be it for most users.
 +
 +
 +@node Customizing the IMAP Connection
 +@subsection Customizing the IMAP Connection
 +
 +Here's an example method that's more complex:
 +
 +@example
 +(nnimap "imap.gmail.com"
 +        (nnimap-inbox "INBOX")
 +        (nnimap-split-methods default)
 +        (nnimap-expunge t)
 +        (nnimap-stream ssl))
 +@end example
 +
 +@table @code
 +@item nnimap-address
 +The address of the server, like @samp{imap.gmail.com}.
 +
 +@item nnimap-server-port
 +If the server uses a non-standard port, that can be specified here.  A
 +typical port would be @code{"imap"} or @code{"imaps"}.
 +
 +@item nnimap-stream
 +How @code{nnimap} should connect to the server.  Possible values are:
 +
 +@table @code
 +@item undecided
 +This is the default, and this first tries the @code{ssl} setting, and
 +then tries the @code{network} setting.
 +
 +@item ssl
 +This uses standard @acronym{TLS}/@acronym{SSL} connections.
 +
 +@item network
 +Non-encrypted and unsafe straight socket connection, but will upgrade
 +to encrypted @acronym{STARTTLS} if both Emacs and the server
 +supports it.
 +
 +@item starttls
 +Encrypted @acronym{STARTTLS} over the normal @acronym{IMAP} port.
 +
 +@item shell
 +If you need to tunnel via other systems to connect to the server, you
 +can use this option, and customize @code{nnimap-shell-program} to be
 +what you need.
 +
 +@end table
 +
 +@item nnimap-authenticator
 +Some @acronym{IMAP} servers allow anonymous logins.  In that case,
 +this should be set to @code{anonymous}.
 +
 +@item nnimap-expunge
 +If non-@code{nil}, expunge articles after deleting them.  This is always done
 +if the server supports UID EXPUNGE, but it's not done by default on
 +servers that doesn't support that command.
 +
 +@item nnimap-streaming
 +Virtually all @code{IMAP} server support fast streaming of data.  If
 +you have problems connecting to the server, try setting this to @code{nil}.
 +
 +@item nnimap-fetch-partial-articles
 +If non-@code{nil}, fetch partial articles from the server.  If set to
 +a string, then it's interpreted as a regexp, and parts that have
 +matching types will be fetched.  For instance, @samp{"text/"} will
 +fetch all textual parts, while leaving the rest on the server.
 +
 +@end table
 +
 +
 +@node Client-Side IMAP Splitting
 +@subsection Client-Side IMAP Splitting
 +
 +Many people prefer to do the sorting/splitting of mail into their mail
 +boxes on the @acronym{IMAP} server.  That way they don't have to
 +download the mail they're not all that interested in.
 +
 +If you do want to do client-side mail splitting, then the following
 +variables are relevant:
 +
 +@table @code
 +@item nnimap-inbox
 +This is the @acronym{IMAP} mail box that will be scanned for new mail.
 +
 +@item nnimap-split-methods
 +Uses the same syntax as @code{nnmail-split-methods} (@pxref{Splitting
 +Mail}), except the symbol @code{default}, which means that it should
 +use the value of the @code{nnmail-split-methods} variable.
 +
 +@item nnimap-split-fancy
 +Uses the same syntax as @code{nnmail-split-fancy}.
 +
 +@item nnimap-unsplittable-articles
 +List of flag symbols to ignore when doing splitting.  That is,
 +articles that have these flags won't be considered when splitting.
 +The default is @samp{(%Deleted %Seen)}.
 +
 +@end table
 +
 +Here's a complete example @code{nnimap} backend with a client-side
 +``fancy'' splitting method:
 +
 +@example
 +(nnimap "imap.example.com"
 +        (nnimap-inbox "INBOX")
 +        (nnimap-split-methods
 +         (| ("MailScanner-SpamCheck" "spam" "spam.detected")
 +            (to "foo@@bar.com" "foo")
 +            "undecided")))
 +@end example
 +
 +
  @node Getting Mail
  @section Getting Mail
  @cindex reading mail
@@@ -14459,9 -14933,6 +14459,9 @@@ arguments in a buffer narrowed to the h
  message.  The function should return a list of group names that it
  thinks should carry this mail message.
  
 +This variable can also be a fancy split method.  For the syntax,
 +see @ref{Fancy Mail Splitting}.
 +
  Note that the mail back ends are free to maul the poor, innocent,
  incoming headers all they want to.  They all add @code{Lines} headers;
  some add @code{X-Gnus-Group} headers; most rename the Unix mbox
@@@ -14836,7 -15307,10 +14836,7 @@@ Get mail from a @acronym{IMAP} server
  @acronym{IMAP} as intended, as a network mail reading protocol (ie
  with nnimap), for some reason or other, Gnus let you treat it similar
  to a @acronym{POP} server and fetches articles from a given
 -@acronym{IMAP} mailbox.  @xref{IMAP}, for more information.
 -
 -Note that for the Kerberos, GSSAPI, @acronym{TLS}/@acronym{SSL} and STARTTLS support you
 -may need external programs and libraries, @xref{IMAP}.
 +@acronym{IMAP} mailbox.  @xref{Using IMAP}, for more information.
  
  Keywords:
  
@@@ -14928,6 -15402,45 +14928,6 @@@ An example @acronym{IMAP} mail source
        :fetchflag "\\Seen")
  @end lisp
  
 -@item webmail
 -Get mail from a webmail server, such as @uref{http://www.hotmail.com/},
 -@uref{http://webmail.netscape.com/}, @uref{http://www.netaddress.com/},
 -@uref{http://mail.yahoo.com/}.
 -
 -NOTE: Webmail largely depends on cookies.  A "one-line-cookie" patch is
 -required for url "4.0pre.46".
 -
 -WARNING: Mails may be lost.  NO WARRANTY.
 -
 -Keywords:
 -
 -@table @code
 -@item :subtype
 -The type of the webmail server.  The default is @code{hotmail}.  The
 -alternatives are @code{netscape}, @code{netaddress}, @code{my-deja}.
 -
 -@item :user
 -The user name to give to the webmail server.  The default is the login
 -name.
 -
 -@item :password
 -The password to give to the webmail server.  If not specified, the user is
 -prompted.
 -
 -@item :dontexpunge
 -If non-@code{nil}, only fetch unread articles and don't move them to
 -trash folder after finishing the fetch.
 -
 -@end table
 -
 -An example webmail source:
 -
 -@lisp
 -(webmail :subtype 'hotmail
 -         :user "user-name"
 -         :password "secret")
 -@end lisp
 -
  @item group
  Get the actual mail source from the @code{mail-source} group parameter,
  @xref{Group Parameters}.
@@@ -15266,7 -15779,7 +15266,7 @@@ after @code{save-excursion} and @code{s
  above.  Also note that with the nnimap backend, message bodies will
  not be downloaded by default.  You need to set
  @code{nnimap-split-download-body} to @code{t} to do that
 -(@pxref{Splitting in IMAP}).
 +(@pxref{Client-Side IMAP Splitting}).
  
  @item (! @var{func} @var{split})
  If the split is a list, and the first element is @code{!}, then
@@@ -16030,7 -16543,6 +16030,7 @@@ Spool})
  @end menu
  
  
 +
  @node Unix Mail Box
  @subsubsection Unix Mail Box
  @cindex nnmbox
@@@ -16746,12 -17258,13 +16746,12 @@@ incompatible group parameters, slightl
  mail back ends.
  
  @code{nnmaildir} is largely similar to @code{nnml}, with some notable
 -differences.  Each message is stored in a separate file, but the
 -filename is unrelated to the article number in Gnus.  @code{nnmaildir}
 +differences. Each message is stored in a separate file, but the
 +filename is unrelated to the article number in Gnus. @code{nnmaildir}
  also stores the equivalent of @code{nnml}'s overview files in one file
 -per article, so it uses about twice as many inodes as @code{nnml}.  (Use
 -@code{df -i} to see how plentiful your inode supply is.)  If this slows
 -you down or takes up very much space, consider switching to
 -@uref{http://www.namesys.com/, ReiserFS} or another non-block-structured
 +per article, so it uses about twice as many inodes as @code{nnml}.
 +(Use @code{df -i} to see how plentiful your inode supply is.) If this
 +slows you down or takes up very much space, a non-block-structured
  file system.
  
  Since maildirs don't require locking for delivery, the maildirs you use
@@@ -16821,6 -17334,9 +16821,6 @@@ interfaces to these sources
  @menu
  * Archiving Mail::
  * Web Searches::                Creating groups from articles that match a string.
 -* Slashdot::                    Reading the Slashdot comments.
 -* Ultimate::                    The Ultimate Bulletin Board systems.
 -* Web Archive::                 Reading mailing list archived on web.
  * RSS::                         Reading RDF site summary.
  * Customizing W3::              Doing stuff to Emacs/W3 from Gnus.
  @end menu
@@@ -16963,6 -17479,159 +16963,6 @@@ Format string URL to fetch an article b
  @end table
  
  
 -@node Slashdot
 -@subsection Slashdot
 -@cindex Slashdot
 -@cindex nnslashdot
 -
 -@uref{http://slashdot.org/, Slashdot} is a popular news site, with
 -lively discussion following the news articles.  @code{nnslashdot} will
 -let you read this forum in a convenient manner.
 -
 -The easiest way to read this source is to put something like the
 -following in your @file{~/.gnus.el} file:
 -
 -@lisp
 -(setq gnus-secondary-select-methods
 -      '((nnslashdot "")))
 -@end lisp
 -
 -This will make Gnus query the @code{nnslashdot} back end for new comments
 -and groups.  The @kbd{F} command will subscribe each new news article as
 -a new Gnus group, and you can read the comments by entering these
 -groups.  (Note that the default subscription method is to subscribe new
 -groups as zombies.  Other methods are available (@pxref{Subscription
 -Methods}).
 -
 -If you want to remove an old @code{nnslashdot} group, the @kbd{G DEL}
 -command is the most handy tool (@pxref{Foreign Groups}).
 -
 -When following up to @code{nnslashdot} comments (or posting new
 -comments), some light @acronym{HTML}izations will be performed.  In
 -particular, text quoted with @samp{> } will be quoted with
 -@samp{blockquote} instead, and signatures will have @samp{br} added to
 -the end of each line.  Other than that, you can just write @acronym{HTML}
 -directly into the message buffer.  Note that Slashdot filters out some
 -@acronym{HTML} forms.
 -
 -The following variables can be altered to change its behavior:
 -
 -@table @code
 -@item nnslashdot-threaded
 -Whether @code{nnslashdot} should display threaded groups or not.  The
 -default is @code{t}.  To be able to display threads, @code{nnslashdot}
 -has to retrieve absolutely all comments in a group upon entry.  If a
 -threaded display is not required, @code{nnslashdot} will only retrieve
 -the comments that are actually wanted by the user.  Threading is nicer,
 -but much, much slower than unthreaded.
 -
 -@item nnslashdot-login-name
 -@vindex nnslashdot-login-name
 -The login name to use when posting.
 -
 -@item nnslashdot-password
 -@vindex nnslashdot-password
 -The password to use when posting.
 -
 -@item nnslashdot-directory
 -@vindex nnslashdot-directory
 -Where @code{nnslashdot} will store its files.  The default is
 -@file{~/News/slashdot/}.
 -
 -@item nnslashdot-active-url
 -@vindex nnslashdot-active-url
 -The @acronym{URL} format string that will be used to fetch the
 -information on news articles and comments.  The default is@*
 -@samp{http://slashdot.org/search.pl?section=&min=%d}.
 -
 -@item nnslashdot-comments-url
 -@vindex nnslashdot-comments-url
 -The @acronym{URL} format string that will be used to fetch comments.
 -
 -@item nnslashdot-article-url
 -@vindex nnslashdot-article-url
 -The @acronym{URL} format string that will be used to fetch the news
 -article.  The default is
 -@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}.
 -
 -@item nnslashdot-threshold
 -@vindex nnslashdot-threshold
 -The score threshold.  The default is -1.
 -
 -@item nnslashdot-group-number
 -@vindex nnslashdot-group-number
 -The number of old groups, in addition to the ten latest, to keep
 -updated.  The default is 0.
 -
 -@end table
 -
 -
 -
 -@node Ultimate
 -@subsection Ultimate
 -@cindex nnultimate
 -@cindex Ultimate Bulletin Board
 -
 -@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} is
 -probably the most popular Web bulletin board system used.  It has a
 -quite regular and nice interface, and it's possible to get the
 -information Gnus needs to keep groups updated.
 -
 -The easiest way to get started with @code{nnultimate} is to say
 -something like the following in the group buffer:  @kbd{B nnultimate RET
 -http://www.tcj.com/messboard/ubbcgi/ RET}.  (Substitute the @acronym{URL}
 -(not including @samp{Ultimate.cgi} or the like at the end) for a forum
 -you're interested in; there's quite a list of them on the Ultimate web
 -site.)  Then subscribe to the groups you're interested in from the
 -server buffer, and read them from the group buffer.
 -
 -The following @code{nnultimate} variables can be altered:
 -
 -@table @code
 -@item nnultimate-directory
 -@vindex nnultimate-directory
 -The directory where @code{nnultimate} stores its files.  The default is@*
 -@file{~/News/ultimate/}.
 -@end table
 -
 -
 -@node Web Archive
 -@subsection Web Archive
 -@cindex nnwarchive
 -@cindex Web Archive
 -
 -Some mailing lists only have archives on Web servers, such as
 -@uref{http://www.egroups.com/} and
 -@uref{http://www.mail-archive.com/}.  It has a quite regular and nice
 -interface, and it's possible to get the information Gnus needs to keep
 -groups updated.
 -
 -@findex gnus-group-make-warchive-group
 -The easiest way to get started with @code{nnwarchive} is to say
 -something like the following in the group buffer: @kbd{M-x
 -gnus-group-make-warchive-group RET @var{an_egroup} RET egroups RET
 -www.egroups.com RET @var{your@@email.address} RET}.  (Substitute the
 -@var{an_egroup} with the mailing list you subscribed, the
 -@var{your@@email.address} with your email address.), or to browse the
 -back end by @kbd{B nnwarchive RET mail-archive RET}.
 -
 -The following @code{nnwarchive} variables can be altered:
 -
 -@table @code
 -@item nnwarchive-directory
 -@vindex nnwarchive-directory
 -The directory where @code{nnwarchive} stores its files.  The default is@*
 -@file{~/News/warchive/}.
 -
 -@item nnwarchive-login
 -@vindex nnwarchive-login
 -The account name on the web server.
 -
 -@item nnwarchive-passwd
 -@vindex nnwarchive-passwd
 -The password for your account on the web server.
 -@end table
 -
  @node RSS
  @subsection RSS
  @cindex nnrss
@@@ -17049,6 -17718,15 +17049,6 @@@ If you set @code{nnrss-use-local} to @c
  the feeds from local files in @code{nnrss-directory}.  You can use
  the command @code{nnrss-generate-download-script} to generate a
  download script using @command{wget}.
 -
 -@item nnrss-wash-html-in-text-plain-parts
 -Non-@code{nil} means that @code{nnrss} renders text in @samp{text/plain}
 -parts as @acronym{HTML}.  The function specified by the
 -@code{mm-text-html-renderer} variable (@pxref{Display Customization,
 -,Display Customization, emacs-mime, The Emacs MIME Manual}) will be used
 -to render text.  If it is @code{nil}, which is the default, text will
 -simply be folded.  Leave it @code{nil} if you prefer to see
 -@samp{text/html} parts.
  @end table
  
  The following code may be helpful, if you want to show the description in
@@@ -17121,4998 -17799,4982 +17121,4998 @@@ Parameters}) in order to display @samp{
  @cindex url
  @cindex Netscape
  
 -Gnus uses the url library to fetch web pages and Emacs/W3 (or those
 -alternatives) to display web pages.  Emacs/W3 is documented in its own
 -manual, but there are some things that may be more relevant for Gnus
 -users.
 +Gnus uses the url library to fetch web pages and Emacs/W3 (or those
 +alternatives) to display web pages.  Emacs/W3 is documented in its own
 +manual, but there are some things that may be more relevant for Gnus
 +users.
 +
 +For instance, a common question is how to make Emacs/W3 follow links
 +using the @code{browse-url} functions (which will call some external web
 +browser like Netscape).  Here's one way:
 +
 +@lisp
 +(eval-after-load "w3"
 +  '(progn
 +    (fset 'w3-fetch-orig (symbol-function 'w3-fetch))
 +    (defun w3-fetch (&optional url target)
 +      (interactive (list (w3-read-url-with-default)))
 +      (if (eq major-mode 'gnus-article-mode)
 +          (browse-url url)
 +        (w3-fetch-orig url target)))))
 +@end lisp
 +
 +Put that in your @file{.emacs} file, and hitting links in W3-rendered
 +@acronym{HTML} in the Gnus article buffers will use @code{browse-url} to
 +follow the link.
 +
 +
 +@node Other Sources
 +@section Other Sources
 +
 +Gnus can do more than just read news or mail.  The methods described
 +below allow Gnus to view directories and files as if they were
 +newsgroups.
 +
 +@menu
 +* Directory Groups::            You can read a directory as if it was a newsgroup.
 +* Anything Groups::             Dired?  Who needs dired?
 +* Document Groups::             Single files can be the basis of a group.
 +* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
 +* The Empty Backend::           The backend that never has any news.
 +@end menu
 +
 +
 +@node Directory Groups
 +@subsection Directory Groups
 +@cindex nndir
 +@cindex directory groups
 +
 +If you have a directory that has lots of articles in separate files in
 +it, you might treat it as a newsgroup.  The files have to have numerical
 +names, of course.
 +
 +This might be an opportune moment to mention @code{ange-ftp} (and its
 +successor @code{efs}), that most wonderful of all wonderful Emacs
 +packages.  When I wrote @code{nndir}, I didn't think much about it---a
 +back end to read directories.  Big deal.
 +
 +@code{ange-ftp} changes that picture dramatically.  For instance, if you
 +enter the @code{ange-ftp} file name
 +@file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name,
 +@code{ange-ftp} or @code{efs} will actually allow you to read this
 +directory over at @samp{sina} as a newsgroup.  Distributed news ahoy!
 +
 +@code{nndir} will use @acronym{NOV} files if they are present.
 +
 +@code{nndir} is a ``read-only'' back end---you can't delete or expire
 +articles with this method.  You can use @code{nnmh} or @code{nnml} for
 +whatever you use @code{nndir} for, so you could switch to any of those
 +methods if you feel the need to have a non-read-only @code{nndir}.
 +
 +
 +@node Anything Groups
 +@subsection Anything Groups
 +@cindex nneething
 +
 +From the @code{nndir} back end (which reads a single spool-like
 +directory), it's just a hop and a skip to @code{nneething}, which
 +pretends that any arbitrary directory is a newsgroup.  Strange, but
 +true.
  
 -For instance, a common question is how to make Emacs/W3 follow links
 -using the @code{browse-url} functions (which will call some external web
 -browser like Netscape).  Here's one way:
 +When @code{nneething} is presented with a directory, it will scan this
 +directory and assign article numbers to each file.  When you enter such
 +a group, @code{nneething} must create ``headers'' that Gnus can use.
 +After all, Gnus is a newsreader, in case you're forgetting.
 +@code{nneething} does this in a two-step process.  First, it snoops each
 +file in question.  If the file looks like an article (i.e., the first
 +few lines look like headers), it will use this as the head.  If this is
 +just some arbitrary file without a head (e.g. a C source file),
 +@code{nneething} will cobble up a header out of thin air.  It will use
 +file ownership, name and date and do whatever it can with these
 +elements.
  
 -@lisp
 -(eval-after-load "w3"
 -  '(progn
 -    (fset 'w3-fetch-orig (symbol-function 'w3-fetch))
 -    (defun w3-fetch (&optional url target)
 -      (interactive (list (w3-read-url-with-default)))
 -      (if (eq major-mode 'gnus-article-mode)
 -          (browse-url url)
 -        (w3-fetch-orig url target)))))
 -@end lisp
 +All this should happen automatically for you, and you will be presented
 +with something that looks very much like a newsgroup.  Totally like a
 +newsgroup, to be precise.  If you select an article, it will be displayed
 +in the article buffer, just as usual.
  
 -Put that in your @file{.emacs} file, and hitting links in W3-rendered
 -@acronym{HTML} in the Gnus article buffers will use @code{browse-url} to
 -follow the link.
 +If you select a line that represents a directory, Gnus will pop you into
 +a new summary buffer for this @code{nneething} group.  And so on.  You can
 +traverse the entire disk this way, if you feel like, but remember that
 +Gnus is not dired, really, and does not intend to be, either.
 +
 +There are two overall modes to this action---ephemeral or solid.  When
 +doing the ephemeral thing (i.e., @kbd{G D} from the group buffer), Gnus
 +will not store information on what files you have read, and what files
 +are new, and so on.  If you create a solid @code{nneething} group the
 +normal way with @kbd{G m}, Gnus will store a mapping table between
 +article numbers and file names, and you can treat this group like any
 +other groups.  When you activate a solid @code{nneething} group, you will
 +be told how many unread articles it contains, etc., etc.
  
 +Some variables:
  
 -@node IMAP
 -@section IMAP
 -@cindex nnimap
 -@cindex @acronym{IMAP}
 +@table @code
 +@item nneething-map-file-directory
 +@vindex nneething-map-file-directory
 +All the mapping files for solid @code{nneething} groups will be stored
 +in this directory, which defaults to @file{~/.nneething/}.
  
 -@acronym{IMAP} is a network protocol for reading mail (or news, or @dots{}),
 -think of it as a modernized @acronym{NNTP}.  Connecting to a @acronym{IMAP}
 -server is much similar to connecting to a news server, you just
 -specify the network address of the server.
 +@item nneething-exclude-files
 +@vindex nneething-exclude-files
 +All files that match this regexp will be ignored.  Nice to use to exclude
 +auto-save files and the like, which is what it does by default.
  
 -@acronym{IMAP} has two properties.  First, @acronym{IMAP} can do
 -everything that @acronym{POP} can, it can hence be viewed as a
 -@acronym{POP++}.  Secondly, @acronym{IMAP} is a mail storage protocol,
 -similar to @acronym{NNTP} being a news storage protocol---however,
 -@acronym{IMAP} offers more features than @acronym{NNTP} because news
 -is more or less read-only whereas mail is read-write.
 +@item nneething-include-files
 +@vindex nneething-include-files
 +Regexp saying what files to include in the group.  If this variable is
 +non-@code{nil}, only files matching this regexp will be included.
  
 -If you want to use @acronym{IMAP} as a @acronym{POP++}, use an imap
 -entry in @code{mail-sources}.  With this, Gnus will fetch mails from
 -the @acronym{IMAP} server and store them on the local disk.  This is
 -not the usage described in this section---@xref{Mail Sources}.
 +@item nneething-map-file
 +@vindex nneething-map-file
 +Name of the map files.
 +@end table
  
 -If you want to use @acronym{IMAP} as a mail storage protocol, use an nnimap
 -entry in @code{gnus-secondary-select-methods}.  With this, Gnus will
 -manipulate mails stored on the @acronym{IMAP} server.  This is the kind of
 -usage explained in this section.
  
 -A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP}
 -servers might look something like the following.  (Note that for
 -@acronym{TLS}/@acronym{SSL}, you need external programs and libraries,
 -see below.)
 +@node Document Groups
 +@subsection Document Groups
 +@cindex nndoc
 +@cindex documentation group
 +@cindex help group
  
 -@lisp
 -(setq gnus-secondary-select-methods
 -      '((nnimap "simpleserver") ; @r{no special configuration}
 -        ; @r{perhaps a ssh port forwarded server:}
 -        (nnimap "dolk"
 -                (nnimap-address "localhost")
 -                (nnimap-server-port 1430))
 -        ; @r{a UW server running on localhost}
 -        (nnimap "barbar"
 -                (nnimap-server-port 143)
 -                (nnimap-address "localhost")
 -                (nnimap-list-pattern ("INBOX" "mail/*")))
 -        ; @r{anonymous public cyrus server:}
 -        (nnimap "cyrus.andrew.cmu.edu"
 -                (nnimap-authenticator anonymous)
 -                (nnimap-list-pattern "archive.*")
 -                (nnimap-stream network))
 -        ; @r{a ssl server on a non-standard port:}
 -        (nnimap "vic20"
 -                (nnimap-address "vic20.somewhere.com")
 -                (nnimap-server-port 9930)
 -                (nnimap-stream ssl))))
 -@end lisp
 -
 -After defining the new server, you can subscribe to groups on the
 -server using normal Gnus commands such as @kbd{U} in the Group Buffer
 -(@pxref{Subscription Commands}) or via the Server Buffer
 -(@pxref{Server Buffer}).
 -
 -The following variables can be used to create a virtual @code{nnimap}
 -server:
 +@code{nndoc} is a cute little thing that will let you read a single file
 +as a newsgroup.  Several files types are supported:
  
  @table @code
 +@cindex Babyl
 +@item babyl
 +The Babyl format.
  
 -@item nnimap-address
 -@vindex nnimap-address
 +@cindex mbox
 +@cindex Unix mbox
 +@item mbox
 +The standard Unix mbox file.
  
 -The address of the remote @acronym{IMAP} server.  Defaults to the virtual
 -server name if not specified.
 +@cindex MMDF mail box
 +@item mmdf
 +The MMDF mail box format.
  
 -@item nnimap-server-port
 -@vindex nnimap-server-port
 -Port on server to contact.  Defaults to port 143, or 993 for @acronym{TLS}/@acronym{SSL}.
 +@item news
 +Several news articles appended into a file.
  
 -Note that this should be an integer, example server specification:
 +@cindex rnews batch files
 +@item rnews
 +The rnews batch transport format.
  
 -@lisp
 -(nnimap "mail.server.com"
 -        (nnimap-server-port 4711))
 -@end lisp
 +@item nsmail
 +Netscape mail boxes.
  
 -@item nnimap-list-pattern
 -@vindex nnimap-list-pattern
 -String or list of strings of mailboxes to limit available groups to.
 -This is used when the server has very many mailboxes and you're only
 -interested in a few---some servers export your home directory via
 -@acronym{IMAP}, you'll probably want to limit the mailboxes to those in
 -@file{~/Mail/*} then.
 +@item mime-parts
 +@acronym{MIME} multipart messages.
  
 -The string can also be a cons of REFERENCE and the string as above, what
 -REFERENCE is used for is server specific, but on the University of
 -Washington server it's a directory that will be concatenated with the
 -mailbox.
 +@item standard-digest
 +The standard (RFC 1153) digest format.
  
 -Example server specification:
 +@item mime-digest
 +A @acronym{MIME} digest of messages.
  
 -@lisp
 -(nnimap "mail.server.com"
 -        (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*"
 -                               ("~friend/Mail/" . "list/*"))))
 -@end lisp
 +@item lanl-gov-announce
 +Announcement messages from LANL Gov Announce.
  
 -@item nnimap-stream
 -@vindex nnimap-stream
 -The type of stream used to connect to your server.  By default, nnimap
 -will detect and automatically use all of the below, with the exception
 -of @acronym{TLS}/@acronym{SSL}.  (@acronym{IMAP} over
 -@acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which can
 -be automatically detected, but it's not widely deployed yet.)
 +@cindex git commit messages
 +@item git
 +@code{git} commit messages.
  
 -Example server specification:
 +@cindex forwarded messages
 +@item rfc822-forward
 +A message forwarded according to RFC822.
  
 -@lisp
 -(nnimap "mail.server.com"
 -        (nnimap-stream ssl))
 -@end lisp
 +@item outlook
 +The Outlook mail box.
  
 -Please note that the value of @code{nnimap-stream} is a symbol!
 +@item oe-dbx
 +The Outlook Express dbx mail box.
  
 -@itemize @bullet
 -@item
 -@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5).  Requires the
 -@samp{gsasl} or @samp{imtest} program.
 -@item
 -@dfn{kerberos4:} Connect with Kerberos 4.  Requires the @samp{imtest} program.
 -@item
 -@dfn{starttls:} Connect via the STARTTLS extension (similar to
 -@acronym{TLS}/@acronym{SSL}).  Requires the external library @samp{starttls.el} and program
 -@samp{starttls}.
 -@item
 -@dfn{tls:} Connect through @acronym{TLS}.  Requires GNUTLS (the program
 -@samp{gnutls-cli}).
 -@item
 -@dfn{ssl:} Connect through @acronym{SSL}.  Requires OpenSSL (the program
 -@samp{openssl}) or SSLeay (@samp{s_client}).
 -@item
 -@dfn{shell:} Use a shell command to start @acronym{IMAP} connection.
 -@item
 -@dfn{network:} Plain, TCP/IP network connection.
 -@end itemize
 +@item exim-bounce
 +A bounce message from the Exim MTA.
  
 -@vindex imap-kerberos4-program
 -The @samp{imtest} program is shipped with Cyrus IMAPD.  If you're
 -using @samp{imtest} from Cyrus IMAPD < 2.0.14 (which includes version
 -1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type}
 -to make @code{imap.el} use a pty instead of a pipe when communicating
 -with @samp{imtest}.  You will then suffer from a line length
 -restrictions on @acronym{IMAP} commands, which might make Gnus seem to hang
 -indefinitely if you have many articles in a mailbox.  The variable
 -@code{imap-kerberos4-program} contain parameters to pass to the imtest
 -program.
 -
 -For @acronym{TLS} connection, the @code{gnutls-cli} program from GNUTLS is
 -needed.  It is available from
 -@uref{http://www.gnu.org/software/gnutls/}.
 -
 -@vindex imap-gssapi-program
 -This parameter specifies a list of command lines that invoke a GSSAPI
 -authenticated @acronym{IMAP} stream in a subshell.  They are tried
 -sequentially until a connection is made, or the list has been
 -exhausted.  By default, @samp{gsasl} from GNU SASL, available from
 -@uref{http://www.gnu.org/software/gsasl/}, and the @samp{imtest}
 -program from Cyrus IMAPD (see @code{imap-kerberos4-program}), are
 -tried.
 -
 -@vindex imap-ssl-program
 -For @acronym{SSL} connections, the OpenSSL program is available from
 -@uref{http://www.openssl.org/}.  OpenSSL was formerly known as SSLeay,
 -and nnimap support it too---although the most recent versions of
 -SSLeay, 0.9.x, are known to have serious bugs making it
 -useless.  Earlier versions, especially 0.8.x, of SSLeay are known to
 -work.  The variable @code{imap-ssl-program} contain parameters to pass
 -to OpenSSL/SSLeay.
 -
 -@vindex imap-shell-program
 -@vindex imap-shell-host
 -For @acronym{IMAP} connections using the @code{shell} stream, the
 -variable @code{imap-shell-program} specify what program to call.  Make
 -sure nothing is interfering with the output of the program, e.g., don't
 -forget to redirect the error output to the void.
 +@item forward
 +A message forwarded according to informal rules.
  
 -@item nnimap-authenticator
 -@vindex nnimap-authenticator
 +@item rfc934
 +An RFC934-forwarded message.
  
 -The authenticator used to connect to the server.  By default, nnimap
 -will use the most secure authenticator your server is capable of.
 +@item mailman
 +A mailman digest.
  
 -Example server specification:
 +@item clari-briefs
 +A digest of Clarinet brief news items.
  
 -@lisp
 -(nnimap "mail.server.com"
 -        (nnimap-authenticator anonymous))
 -@end lisp
 +@item slack-digest
 +Non-standard digest format---matches most things, but does it badly.
  
 -Please note that the value of @code{nnimap-authenticator} is a symbol!
 +@item mail-in-mail
 +The last resort.
 +@end table
  
 -@itemize @bullet
 -@item
 -@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication.  Requires
 -external program @code{gsasl} or @code{imtest}.
 -@item
 -@dfn{kerberos4:} Kerberos 4 authentication.  Requires external program
 -@code{imtest}.
 -@item
 -@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5.  Requires
 -external library @code{digest-md5.el}.
 -@item
 -@dfn{cram-md5:} Encrypted username/password via CRAM-MD5.
 -@item
 -@dfn{login:} Plain-text username/password via LOGIN.
 -@item
 -@dfn{anonymous:} Login as ``anonymous'', supplying your email address as password.
 -@end itemize
 +You can also use the special ``file type'' @code{guess}, which means
 +that @code{nndoc} will try to guess what file type it is looking at.
 +@code{digest} means that @code{nndoc} should guess what digest type the
 +file is.
  
 -@item nnimap-expunge-on-close
 -@cindex expunging
 -@vindex nnimap-expunge-on-close
 -Unlike Parmenides the @acronym{IMAP} designers have decided things that
 -don't exist actually do exist.  More specifically, @acronym{IMAP} has
 -this concept of marking articles @code{Deleted} which doesn't actually
 -delete them, and this (marking them @code{Deleted}, that is) is what
 -nnimap does when you delete an article in Gnus (with @kbd{B DEL} or
 -similar).
 -
 -Since the articles aren't really removed when we mark them with the
 -@code{Deleted} flag we'll need a way to actually delete them.  Feel like
 -running in circles yet?
 -
 -Traditionally, nnimap has removed all articles marked as @code{Deleted}
 -when closing a mailbox but this is now configurable by this server
 -variable.
 +@code{nndoc} will not try to change the file or insert any extra headers into
 +it---it will simply, like, let you use the file as the basis for a
 +group.  And that's it.
  
 -The possible options are:
 +If you have some old archived articles that you want to insert into your
 +new & spiffy Gnus mail back end, @code{nndoc} can probably help you with
 +that.  Say you have an old @file{RMAIL} file with mail that you now want
 +to split into your new @code{nnml} groups.  You look at that file using
 +@code{nndoc} (using the @kbd{G f} command in the group buffer
 +(@pxref{Foreign Groups})), set the process mark on all the articles in
 +the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r})
 +using @code{nnml}.  If all goes well, all the mail in the @file{RMAIL}
 +file is now also stored in lots of @code{nnml} directories, and you can
 +delete that pesky @file{RMAIL} file.  If you have the guts!
  
 -@table @code
 +Virtual server variables:
  
 -@item always
 -The default behavior, delete all articles marked as ``Deleted'' when
 -closing a mailbox.
 -@item never
 -Never actually delete articles.  Currently there is no way of showing
 -the articles marked for deletion in nnimap, but other @acronym{IMAP} clients
 -may allow you to do this.  If you ever want to run the EXPUNGE command
 -manually, @xref{Expunging mailboxes}.
 -@item ask
 -When closing mailboxes, nnimap will ask if you wish to expunge deleted
 -articles or not.
 +@table @code
 +@item nndoc-article-type
 +@vindex nndoc-article-type
 +This should be one of @code{mbox}, @code{babyl}, @code{digest},
 +@code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934},
 +@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest},
 +@code{slack-digest}, @code{clari-briefs}, @code{nsmail}, @code{outlook},
 +@code{oe-dbx}, @code{mailman}, and @code{mail-in-mail} or @code{guess}.
  
 +@item nndoc-post-type
 +@vindex nndoc-post-type
 +This variable says whether Gnus is to consider the group a news group or
 +a mail group.  There are two valid values:  @code{mail} (the default)
 +and @code{news}.
  @end table
  
 -@item nnimap-importantize-dormant
 -@vindex nnimap-importantize-dormant
 +@menu
 +* Document Server Internals::   How to add your own document types.
 +@end menu
  
 -If non-@code{nil} (the default), marks dormant articles as ticked (as
 -well), for other @acronym{IMAP} clients.  Within Gnus, dormant articles will
 -naturally still (only) be marked as dormant.  This is to make dormant
 -articles stand out, just like ticked articles, in other @acronym{IMAP}
 -clients.  (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP}
 -has only one.)
  
 -Probably the only reason for frobbing this would be if you're trying
 -enable per-user persistent dormant flags, using something like:
 +@node Document Server Internals
 +@subsubsection Document Server Internals
  
 -@lisp
 -(setcdr (assq 'dormant nnimap-mark-to-flag-alist)
 -        (format "gnus-dormant-%s" (user-login-name)))
 -(setcdr (assq 'dormant nnimap-mark-to-predicate-alist)
 -        (format "KEYWORD gnus-dormant-%s" (user-login-name)))
 -@end lisp
 +Adding new document types to be recognized by @code{nndoc} isn't
 +difficult.  You just have to whip up a definition of what the document
 +looks like, write a predicate function to recognize that document type,
 +and then hook into @code{nndoc}.
  
 -In this case, you would not want the per-user dormant flag showing up
 -as ticked for other users.
 +First, here's an example document type definition:
  
 -@item nnimap-expunge-search-string
 -@cindex expunging
 -@vindex nnimap-expunge-search-string
 -@cindex expiring @acronym{IMAP} mail
 +@example
 +(mmdf
 + (article-begin .  "^\^A\^A\^A\^A\n")
 + (body-end .  "^\^A\^A\^A\^A\n"))
 +@end example
  
 -This variable contain the @acronym{IMAP} search command sent to server when
 -searching for articles eligible for expiring.  The default is
 -@code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by
 -UID set and the second @code{%s} is replaced by a date.
 +The definition is simply a unique @dfn{name} followed by a series of
 +regexp pseudo-variable settings.  Below are the possible
 +variables---don't be daunted by the number of variables; most document
 +types can be defined with very few settings:
  
 -Probably the only useful value to change this to is
 -@code{"UID %s NOT SENTSINCE %s"}, which makes nnimap use the Date: in
 -messages instead of the internal article date.  See section 6.4.4 of
 -RFC 2060 for more information on valid strings.
 +@table @code
 +@item first-article
 +If present, @code{nndoc} will skip past all text until it finds
 +something that match this regexp.  All text before this will be
 +totally ignored.
  
 -However, if @code{nnimap-search-uids-not-since-is-evil}
 -is true, this variable has no effect since the search logic
 -is reversed, as described below.
 +@item article-begin
 +This setting has to be present in all document type definitions.  It
 +says what the beginning of each article looks like.  To do more
 +complicated things that cannot be dealt with a simple regexp, you can
 +use @code{article-begin-function} instead of this.
  
 -@item nnimap-authinfo-file
 -@vindex nnimap-authinfo-file
 +@item article-begin-function
 +If present, this should be a function that moves point to the beginning
 +of each article.  This setting overrides @code{article-begin}.
  
 -A file containing credentials used to log in on servers.  The format is
 -(almost) the same as the @code{ftp} @file{~/.netrc} file.  See the
 -variable @code{nntp-authinfo-file} for exact syntax; also see
 -@ref{NNTP}.  An example of an .authinfo line for an IMAP server, is:
 +@item head-begin
 +If present, this should be a regexp that matches the head of the
 +article.  To do more complicated things that cannot be dealt with a
 +simple regexp, you can use @code{head-begin-function} instead of this.
  
 -@example
 -machine students.uio.no login larsi password geheimnis port imap
 -@end example
 +@item head-begin-function
 +If present, this should be a function that moves point to the head of
 +the article.  This setting overrides @code{head-begin}.
  
 -Note that it should be @code{port imap}, or @code{port 143}, if you
 -use a @code{nnimap-stream} of @code{tls} or @code{ssl}, even if the
 -actual port number used is port 993 for secured IMAP.  For
 -convenience, Gnus will accept @code{port imaps} as a synonym of
 -@code{port imap}.
 +@item head-end
 +This should match the end of the head of the article.  It defaults to
 +@samp{^$}---the empty line.
  
 -@item nnimap-need-unselect-to-notice-new-mail
 -@vindex nnimap-need-unselect-to-notice-new-mail
 +@item body-begin
 +This should match the beginning of the body of the article.  It defaults
 +to @samp{^\n}.  To do more complicated things that cannot be dealt with
 +a simple regexp, you can use @code{body-begin-function} instead of this.
  
 -Unselect mailboxes before looking for new mail in them.  Some servers
 -seem to need this under some circumstances; it was reported that
 -Courier 1.7.1 did.
 +@item body-begin-function
 +If present, this function should move point to the beginning of the body
 +of the article.  This setting overrides @code{body-begin}.
  
 -@item nnimap-nov-is-evil
 -@vindex nnimap-nov-is-evil
 -@cindex Courier @acronym{IMAP} server
 -@cindex @acronym{NOV}
 +@item body-end
 +If present, this should match the end of the body of the article.  To do
 +more complicated things that cannot be dealt with a simple regexp, you
 +can use @code{body-end-function} instead of this.
  
 -Never generate or use a local @acronym{NOV} database. Defaults to the
 -value of @code{gnus-agent}.
 +@item body-end-function
 +If present, this function should move point to the end of the body of
 +the article.  This setting overrides @code{body-end}.
  
 -Using a @acronym{NOV} database usually makes header fetching much
 -faster, but it uses the @code{UID SEARCH UID} command, which is very
 -slow on some servers (notably some versions of Courier). Since the Gnus
 -Agent caches the information in the @acronym{NOV} database without using
 -the slow command, this variable defaults to true if the Agent is in use,
 -and false otherwise.
 +@item file-begin
 +If present, this should match the beginning of the file.  All text
 +before this regexp will be totally ignored.
  
 -@item nnimap-search-uids-not-since-is-evil
 -@vindex nnimap-search-uids-not-since-is-evil
 -@cindex Courier @acronym{IMAP} server
 -@cindex expiring @acronym{IMAP} mail
 +@item file-end
 +If present, this should match the end of the file.  All text after this
 +regexp will be totally ignored.
  
 -Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
 -@var{date}} command, which is slow on some @acronym{IMAP} servers
 -(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
 -@var{date}} and prune the list of expirable articles within Gnus.
 +@end table
  
 -When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
 -list of expirable articles and asks the IMAP server questions like ``Of
 -these articles, which ones are older than a week?'' While this seems
 -like a perfectly reasonable question, some IMAP servers take a long time
 -to answer it, since they seemingly go looking into every old article to
 -see if it is one of the expirable ones. Curiously, the question ``Of
 -@emph{all} articles, which ones are newer than a week?'' seems to be
 -much faster to answer, so setting this variable causes Gnus to ask this
 -question and figure out the answer to the real question itself.
 +So, using these variables @code{nndoc} is able to dissect a document
 +file into a series of articles, each with a head and a body.  However, a
 +few more variables are needed since not all document types are all that
 +news-like---variables needed to transform the head or the body into
 +something that's palatable for Gnus:
  
 -This problem can really sneak up on you: when you first configure Gnus,
 -everything works fine, but once you accumulate a couple thousand
 -messages, you start cursing Gnus for being so slow. On the other hand,
 -if you get a lot of email within a week, setting this variable will
 -cause a lot of network traffic between Gnus and the IMAP server.
 +@table @code
 +@item prepare-body-function
 +If present, this function will be called when requesting an article.  It
 +will be called with point at the start of the body, and is useful if the
 +document has encoded some parts of its contents.
  
 -@item nnimap-logout-timeout
 -@vindex nnimap-logout-timeout
 +@item article-transform-function
 +If present, this function is called when requesting an article.  It's
 +meant to be used for more wide-ranging transformation of both head and
 +body of the article.
  
 -There is a case where a connection to a @acronym{IMAP} server is unable
 -to close, when connecting to the server via a certain kind of network,
 -e.g. @acronym{VPN}.  In that case, it will be observed that a connection
 -between Emacs and the local network looks alive even if the server has
 -closed a connection for some reason (typically, a timeout).
 -Consequently, Emacs continues waiting for a response from the server for
 -the @code{LOGOUT} command that Emacs sent, or hangs in other words.  If
 -you are in such a network, setting this variable to a number of seconds
 -will be helpful.  If it is set, a hung connection will be closed
 -forcibly, after this number of seconds from the time Emacs sends the
 -@code{LOGOUT} command.  It should not be too small value but too large
 -value will be inconvenient too.  Perhaps the value 1.0 will be a good
 -candidate but it might be worth trying some other values.
 +@item generate-head-function
 +If present, this function is called to generate a head that Gnus can
 +understand.  It is called with the article number as a parameter, and is
 +expected to generate a nice head for the article in question.  It is
 +called when requesting the headers of all articles.
  
 -Example server specification:
 +@item generate-article-function
 +If present, this function is called to generate an entire article that
 +Gnus can understand.  It is called with the article number as a
 +parameter when requesting all articles.
  
 -@lisp
 -(nnimap "mail.server.com"
 -        (nnimap-logout-timeout 1.0))
 -@end lisp
 +@item dissection-function
 +If present, this function is called to dissect a document by itself,
 +overriding @code{first-article}, @code{article-begin},
 +@code{article-begin-function}, @code{head-begin},
 +@code{head-begin-function}, @code{head-end}, @code{body-begin},
 +@code{body-begin-function}, @code{body-end}, @code{body-end-function},
 +@code{file-begin}, and @code{file-end}.
  
  @end table
  
 -@menu
 -* Splitting in IMAP::           Splitting mail with nnimap.
 -* Expiring in IMAP::            Expiring mail with nnimap.
 -* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
 -* Expunging mailboxes::         Equivalent of a ``compress mailbox'' button.
 -* A note on namespaces::        How to (not) use @acronym{IMAP} namespace in Gnus.
 -* Debugging IMAP::              What to do when things don't work.
 -@end menu
 +Let's look at the most complicated example I can come up with---standard
 +digests:
 +
 +@example
 +(standard-digest
 + (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+"))
 + (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+"))
 + (prepare-body-function . nndoc-unquote-dashes)
 + (body-end-function . nndoc-digest-body-end)
 + (head-end . "^ ?$")
 + (body-begin . "^ ?\n")
 + (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$")
 + (subtype digest guess))
 +@end example
  
 +We see that all text before a 70-width line of dashes is ignored; all
 +text after a line that starts with that @samp{^End of} is also ignored;
 +each article begins with a 30-width line of dashes; the line separating
 +the head from the body may contain a single space; and that the body is
 +run through @code{nndoc-unquote-dashes} before being delivered.
  
 +To hook your own document definition into @code{nndoc}, use the
 +@code{nndoc-add-type} function.  It takes two parameters---the first
 +is the definition itself and the second (optional) parameter says
 +where in the document type definition alist to put this definition.
 +The alist is traversed sequentially, and
 +@code{nndoc-@var{type}-type-p} is called for a given type @var{type}.
 +So @code{nndoc-mmdf-type-p} is called to see whether a document is of
 +@code{mmdf} type, and so on.  These type predicates should return
 +@code{nil} if the document is not of the correct type; @code{t} if it
 +is of the correct type; and a number if the document might be of the
 +correct type.  A high number means high probability; a low number
 +means low probability with @samp{0} being the lowest valid number.
  
 -@node Splitting in IMAP
 -@subsection Splitting in IMAP
 -@cindex splitting imap mail
  
 -Splitting is something Gnus users have loved and used for years, and now
 -the rest of the world is catching up.  Yeah, dream on, not many
 -@acronym{IMAP} servers have server side splitting and those that have
 -splitting seem to use some non-standard protocol.  This means that
 -@acronym{IMAP} support for Gnus has to do its own splitting.
 +@node Mail-To-News Gateways
 +@subsection Mail-To-News Gateways
 +@cindex mail-to-news gateways
 +@cindex gateways
  
 -And it does.
 +If your local @code{nntp} server doesn't allow posting, for some reason
 +or other, you can post using one of the numerous mail-to-news gateways.
 +The @code{nngateway} back end provides the interface.
  
 -(Incidentally, people seem to have been dreaming on, and Sieve has
 -gaining a market share and is supported by several IMAP servers.
 -Fortunately, Gnus support it too, @xref{Sieve Commands}.)
 +Note that you can't read anything from this back end---it can only be
 +used to post with.
  
 -Here are the variables of interest:
 +Server variables:
  
  @table @code
 +@item nngateway-address
 +@vindex nngateway-address
 +This is the address of the mail-to-news gateway.
  
 -@item nnimap-split-crosspost
 -@cindex splitting, crosspost
 -@cindex crosspost
 -@vindex nnimap-split-crosspost
 -
 -If non-@code{nil}, do crossposting if several split methods match the
 -mail.  If @code{nil}, the first match in @code{nnimap-split-rule}
 -found will be used.
 +@item nngateway-header-transformation
 +@vindex nngateway-header-transformation
 +News headers often have to be transformed in some odd way or other
 +for the mail-to-news gateway to accept it.  This variable says what
 +transformation should be called, and defaults to
 +@code{nngateway-simple-header-transformation}.  The function is called
 +narrowed to the headers to be transformed and with one parameter---the
 +gateway address.
  
 -Nnmail equivalent: @code{nnmail-crosspost}.
 +This default function just inserts a new @code{To} header based on the
 +@code{Newsgroups} header and the gateway address.
 +For instance, an article with this @code{Newsgroups} header:
  
 -@item nnimap-split-inbox
 -@cindex splitting, inbox
 -@cindex inbox
 -@vindex nnimap-split-inbox
 +@example
 +Newsgroups: alt.religion.emacs
 +@end example
  
 -A string or a list of strings that gives the name(s) of @acronym{IMAP}
 -mailboxes to split from.  Defaults to @code{nil}, which means that
 -splitting is disabled!
 +will get this @code{To} header inserted:
  
 -@lisp
 -(setq nnimap-split-inbox
 -      '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap"))
 -@end lisp
 +@example
 +To: alt-religion-emacs@@GATEWAY
 +@end example
  
 -No nnmail equivalent.
 +The following pre-defined functions exist:
  
 -@item nnimap-split-rule
 -@cindex splitting, rules
 -@vindex nnimap-split-rule
 +@findex nngateway-simple-header-transformation
 +@table @code
  
 -New mail found in @code{nnimap-split-inbox} will be split according to
 -this variable.
 +@item nngateway-simple-header-transformation
 +Creates a @code{To} header that looks like
 +@var{newsgroup}@@@code{nngateway-address}.
  
 -This variable contains a list of lists, where the first element in the
 -sublist gives the name of the @acronym{IMAP} mailbox to move articles
 -matching the regexp in the second element in the sublist.  Got that?
 -Neither did I, we need examples.
 +@findex nngateway-mail2news-header-transformation
  
 -@lisp
 -(setq nnimap-split-rule
 -      '(("INBOX.nnimap"
 -         "^Sender: owner-nnimap@@vic20.globalcom.se")
 -        ("INBOX.junk"    "^Subject:.*MAKE MONEY")
 -        ("INBOX.private" "")))
 -@end lisp
 +@item nngateway-mail2news-header-transformation
 +Creates a @code{To} header that looks like
 +@code{nngateway-address}.
 +@end table
  
 -This will put all articles from the nnimap mailing list into mailbox
 -INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line
 -into INBOX.junk and everything else in INBOX.private.
 +@end table
  
 -The first string may contain @samp{\\1} forms, like the ones used by
 -replace-match to insert sub-expressions from the matched text.  For
 -instance:
 +Here's an example:
  
  @lisp
 -("INBOX.lists.\\1"     "^Sender: owner-\\([a-z-]+\\)@@")
 +(setq gnus-post-method
 +      '(nngateway
 +        "mail2news@@replay.com"
 +        (nngateway-header-transformation
 +         nngateway-mail2news-header-transformation)))
  @end lisp
  
 -The first element can also be the symbol @code{junk} to indicate that
 -matching messages should simply be deleted.  Use with care.
 -
 -The second element can also be a function.  In that case, it will be
 -called with the first element of the rule as the argument, in a buffer
 -containing the headers of the article.  It should return a
 -non-@code{nil} value if it thinks that the mail belongs in that group.
 -
 -Nnmail users might recollect that the last regexp had to be empty to
 -match all articles (like in the example above).  This is not required in
 -nnimap.  Articles not matching any of the regexps will not be moved out
 -of your inbox.  (This might affect performance if you keep lots of
 -unread articles in your inbox, since the splitting code would go over
 -them every time you fetch new mail.)
 -
 -These rules are processed from the beginning of the alist toward the
 -end.  The first rule to make a match will ``win'', unless you have
 -crossposting enabled.  In that case, all matching rules will ``win''.
 -
 -This variable can also have a function as its value, the function will
 -be called with the headers narrowed and should return a group where it
 -thinks the article should be split to.  See @code{nnimap-split-fancy}.
 -
 -The splitting code tries to create mailboxes if it needs to.
 -
 -To allow for different split rules on different virtual servers, and
 -even different split rules in different inboxes on the same server,
 -the syntax of this variable have been extended along the lines of:
 +So, to use this, simply say something like:
  
  @lisp
 -(setq nnimap-split-rule
 -      '(("my1server"    (".*" (("ding"    "ding@@gnus.org")
 -                               ("junk"    "From:.*Simon"))))
 -        ("my2server"    ("INBOX" nnimap-split-fancy))
 -        ("my[34]server" (".*" (("private" "To:.*Simon")
 -                               ("junk"    my-junk-func))))))
 +(setq gnus-post-method '(nngateway "GATEWAY.ADDRESS"))
  @end lisp
  
 -The virtual server name is in fact a regexp, so that the same rules
 -may apply to several servers.  In the example, the servers
 -@code{my3server} and @code{my4server} both use the same rules.
 -Similarly, the inbox string is also a regexp.  The actual splitting
 -rules are as before, either a function, or a list with group/regexp or
 -group/function elements.
 -
 -Nnmail equivalent: @code{nnmail-split-methods}.
 -
 -@item nnimap-split-predicate
 -@cindex splitting
 -@vindex nnimap-split-predicate
 -
 -Mail matching this predicate in @code{nnimap-split-inbox} will be
 -split, it is a string and the default is @samp{UNSEEN UNDELETED}.
 -
 -This might be useful if you use another @acronym{IMAP} client to read mail in
 -your inbox but would like Gnus to split all articles in the inbox
 -regardless of readedness.  Then you might change this to
 -@samp{UNDELETED}.
  
 -@item nnimap-split-fancy
 -@cindex splitting, fancy
 -@findex nnimap-split-fancy
 -@vindex nnimap-split-fancy
 -
 -It's possible to set @code{nnimap-split-rule} to
 -@code{nnmail-split-fancy} if you want to use fancy
 -splitting.  @xref{Fancy Mail Splitting}.
 +@node The Empty Backend
 +@subsection The Empty Backend
 +@cindex nnnil
  
 -However, to be able to have different fancy split rules for nnmail and
 -nnimap back ends you can set @code{nnimap-split-rule} to
 -@code{nnimap-split-fancy} and define the nnimap specific fancy split
 -rule in @code{nnimap-split-fancy}.
 -
 -Example:
 +@code{nnnil} is a backend that can be used as a placeholder if you
 +have to specify a backend somewhere, but don't really want to.  The
 +classical example is if you don't want to have a primary select
 +methods, but want to only use secondary ones:
  
  @lisp
 -(setq nnimap-split-rule 'nnimap-split-fancy
 -      nnimap-split-fancy ...)
 +(setq gnus-select-method '(nnnil ""))
 +(setq gnus-secondary-select-methods
 +      '((nnimap "foo")
 +        (nnml "")))
  @end lisp
  
 -Nnmail equivalent: @code{nnmail-split-fancy}.
 -
 -@item nnimap-split-download-body
 -@findex nnimap-split-download-body
 -@vindex nnimap-split-download-body
 -
 -Set to non-@code{nil} to download entire articles during splitting.
 -This is generally not required, and will slow things down
 -considerably.  You may need it if you want to use an advanced
 -splitting function that analyzes the body to split the article.
 -
 -@end table
 -
 -@node Expiring in IMAP
 -@subsection Expiring in IMAP
 -@cindex expiring @acronym{IMAP} mail
 -
 -Even though @code{nnimap} is not a proper @code{nnmail} derived back
 -end, it supports most features in regular expiring (@pxref{Expiring
 -Mail}).  Unlike splitting in @acronym{IMAP} (@pxref{Splitting in
 -IMAP}) it does not clone the @code{nnmail} variables (i.e., creating
 -@var{nnimap-expiry-wait}) but reuse the @code{nnmail} variables.  What
 -follows below are the variables used by the @code{nnimap} expiry
 -process.
 -
 -A note on how the expire mark is stored on the @acronym{IMAP} server is
 -appropriate here as well.  The expire mark is translated into a
 -@code{imap} client specific mark, @code{gnus-expire}, and stored on the
 -message.  This means that likely only Gnus will understand and treat
 -the @code{gnus-expire} mark properly, although other clients may allow
 -you to view client specific flags on the message.  It also means that
 -your server must support permanent storage of client specific flags on
 -messages.  Most do, fortunately.
 -
 -If expiring @acronym{IMAP} mail seems very slow, try setting the server
 -variable @code{nnimap-search-uids-not-since-is-evil}.
 -
 -@table @code
 -
 -@item nnmail-expiry-wait
 -@item nnmail-expiry-wait-function
  
 -These variables are fully supported.  The expire value can be a
 -number, the symbol @code{immediate} or @code{never}.
 +@node Combined Groups
 +@section Combined Groups
  
 -@item nnmail-expiry-target
 +Gnus allows combining a mixture of all the other group types into bigger
 +groups.
  
 -This variable is supported, and internally implemented by calling the
 -@code{nnmail} functions that handle this.  It contains an optimization
 -that if the destination is a @acronym{IMAP} group on the same server, the
 -article is copied instead of appended (that is, uploaded again).
 +@menu
 +* Virtual Groups::              Combining articles from many groups.
 +@end menu
  
 -@end table
  
 -@node Editing IMAP ACLs
 -@subsection Editing IMAP ACLs
 -@cindex editing imap acls
 -@cindex Access Control Lists
 -@cindex Editing @acronym{IMAP} ACLs
 -@kindex G l (Group)
 -@findex gnus-group-nnimap-edit-acl
 +@node Virtual Groups
 +@subsection Virtual Groups
 +@cindex nnvirtual
 +@cindex virtual groups
 +@cindex merging groups
  
 -ACL stands for Access Control List.  ACLs are used in @acronym{IMAP} for
 -limiting (or enabling) other users access to your mail boxes.  Not all
 -@acronym{IMAP} servers support this, this function will give an error if it
 -doesn't.
 +An @dfn{nnvirtual group} is really nothing more than a collection of
 +other groups.
  
 -To edit an ACL for a mailbox, type @kbd{G l}
 -(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with an ACL
 -editing window with detailed instructions.
 +For instance, if you are tired of reading many small groups, you can
 +put them all in one big group, and then grow tired of reading one
 +big, unwieldy group.  The joys of computing!
  
 -Some possible uses:
 +You specify @code{nnvirtual} as the method.  The address should be a
 +regexp to match component groups.
  
 -@itemize @bullet
 -@item
 -Giving ``anyone'' the ``lrs'' rights (lookup, read, keep seen/unseen flags)
 -on your mailing list mailboxes enables other users on the same server to
 -follow the list without subscribing to it.
 -@item
 -At least with the Cyrus server, you are required to give the user
 -``anyone'' posting ("p") capabilities to have ``plussing'' work (that is,
 -mail sent to user+mailbox@@domain ending up in the @acronym{IMAP} mailbox
 -INBOX.mailbox).
 -@end itemize
 +All marks in the virtual group will stick to the articles in the
 +component groups.  So if you tick an article in a virtual group, the
 +article will also be ticked in the component group from whence it
 +came.  (And vice versa---marks from the component groups will also be
 +shown in the virtual group.).  To create an empty virtual group, run
 +@kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer
 +and edit the method regexp with @kbd{M-e}
 +(@code{gnus-group-edit-group-method})
  
 -@node Expunging mailboxes
 -@subsection Expunging mailboxes
 -@cindex expunging
 -
 -@cindex expunge
 -@cindex manual expunging
 -@kindex G x (Group)
 -@findex gnus-group-nnimap-expunge
 -
 -If you're using the @code{never} setting of @code{nnimap-expunge-on-close},
 -you may want the option of expunging all deleted articles in a mailbox
 -manually.  This is exactly what @kbd{G x} does.
 -
 -Currently there is no way of showing deleted articles, you can just
 -delete them.
 -
 -@node A note on namespaces
 -@subsection A note on namespaces
 -@cindex IMAP namespace
 -@cindex namespaces
 -
 -The @acronym{IMAP} protocol has a concept called namespaces, described
 -by the following text in the RFC2060:
 -
 -@display
 -5.1.2.  Mailbox Namespace Naming Convention
 -
 -   By convention, the first hierarchical element of any mailbox name
 -   which begins with "#" identifies the "namespace" of the remainder of
 -   the name.  This makes it possible to disambiguate between different
 -   types of mailbox stores, each of which have their own namespaces.
 -
 -      For example, implementations which offer access to USENET
 -      newsgroups MAY use the "#news" namespace to partition the USENET
 -      newsgroup namespace from that of other mailboxes.  Thus, the
 -      comp.mail.misc newsgroup would have an mailbox name of
 -      "#news.comp.mail.misc", and the name "comp.mail.misc" could refer
 -      to a different object (e.g. a user's private mailbox).
 -@end display
 -
 -While there is nothing in this text that warrants concern for the
 -@acronym{IMAP} implementation in Gnus, some servers use namespace
 -prefixes in a way that does not work with how Gnus uses mailbox names.
 -
 -Specifically, University of Washington's @acronym{IMAP} server uses
 -mailbox names like @code{#driver.mbx/read-mail} which are valid only
 -in the @sc{create} and @sc{append} commands.  After the mailbox is
 -created (or a messages is appended to a mailbox), it must be accessed
 -without the namespace prefix, i.e. @code{read-mail}.  Since Gnus do
 -not make it possible for the user to guarantee that user entered
 -mailbox names will only be used with the CREATE and APPEND commands,
 -you should simply not use the namespace prefixed mailbox names in
 -Gnus.
 -
 -See the UoW IMAPD documentation for the @code{#driver.*/} prefix
 -for more information on how to use the prefixes.  They are a power
 -tool and should be used only if you are sure what the effects are.
 -
 -@node Debugging IMAP
 -@subsection Debugging IMAP
 -@cindex IMAP debugging
 -@cindex protocol dump (IMAP)
 -
 -@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or
 -@acronym{POP3}.  Implementation bugs are not unlikely, and we do our
 -best to fix them right away.  If you encounter odd behavior, chances
 -are that either the server or Gnus is buggy.
 -
 -If you are familiar with network protocols in general, you will
 -probably be able to extract some clues from the protocol dump of the
 -exchanges between Gnus and the server.  Even if you are not familiar
 -with network protocols, when you include the protocol dump in
 -@acronym{IMAP}-related bug reports you are helping us with data
 -critical to solving the problem.  Therefore, we strongly encourage you
 -to include the protocol dump when reporting IMAP bugs in Gnus.
 -
 -
 -@vindex imap-log
 -Because the protocol dump, when enabled, generates lots of data, it is
 -disabled by default.  You can enable it by setting @code{imap-log} as
 -follows:
 +Here's an example @code{nnvirtual} method that collects all Andrea Dworkin
 +newsgroups into one, big, happy newsgroup:
  
  @lisp
 -(setq imap-log t)
 +(nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*")
  @end lisp
  
 -This instructs the @code{imap.el} package to log any exchanges with
 -the server.  The log is stored in the buffer @samp{*imap-log*}.  Look
 -for error messages, which sometimes are tagged with the keyword
 -@code{BAD}---but when submitting a bug, make sure to include all the
 -data.
 -
 -@node Other Sources
 -@section Other Sources
 +The component groups can be native or foreign; everything should work
 +smoothly, but if your computer explodes, it was probably my fault.
  
 -Gnus can do more than just read news or mail.  The methods described
 -below allow Gnus to view directories and files as if they were
 -newsgroups.
 +Collecting the same group from several servers might actually be a good
 +idea if users have set the Distribution header to limit distribution.
 +If you would like to read @samp{soc.motss} both from a server in Japan
 +and a server in Norway, you could use the following as the group regexp:
  
 -@menu
 -* Directory Groups::            You can read a directory as if it was a newsgroup.
 -* Anything Groups::             Dired?  Who needs dired?
 -* Document Groups::             Single files can be the basis of a group.
 -* SOUP::                        Reading @sc{soup} packets ``offline''.
 -* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
 -@end menu
 +@example
 +"^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$"
 +@end example
  
 +(Remember, though, that if you're creating the group with @kbd{G m}, you
 +shouldn't double the backslashes, and you should leave off the quote
 +characters at the beginning and the end of the string.)
  
 -@node Directory Groups
 -@subsection Directory Groups
 -@cindex nndir
 -@cindex directory groups
 +This should work kinda smoothly---all articles from both groups should
 +end up in this one, and there should be no duplicates.  Threading (and
 +the rest) will still work as usual, but there might be problems with the
 +sequence of articles.  Sorting on date might be an option here
 +(@pxref{Selecting a Group}).
  
 -If you have a directory that has lots of articles in separate files in
 -it, you might treat it as a newsgroup.  The files have to have numerical
 -names, of course.
 +One limitation, however---all groups included in a virtual
 +group have to be alive (i.e., subscribed or unsubscribed).  Killed or
 +zombie groups can't be component groups for @code{nnvirtual} groups.
  
 -This might be an opportune moment to mention @code{ange-ftp} (and its
 -successor @code{efs}), that most wonderful of all wonderful Emacs
 -packages.  When I wrote @code{nndir}, I didn't think much about it---a
 -back end to read directories.  Big deal.
 +@vindex nnvirtual-always-rescan
 +If the @code{nnvirtual-always-rescan} variable is non-@code{nil} (which
 +is the default), @code{nnvirtual} will always scan groups for unread
 +articles when entering a virtual group.  If this variable is @code{nil}
 +and you read articles in a component group after the virtual group has
 +been activated, the read articles from the component group will show up
 +when you enter the virtual group.  You'll also see this effect if you
 +have two virtual groups that have a component group in common.  If
 +that's the case, you should set this variable to @code{t}.  Or you can
 +just tap @code{M-g} on the virtual group every time before you enter
 +it---it'll have much the same effect.
  
 -@code{ange-ftp} changes that picture dramatically.  For instance, if you
 -enter the @code{ange-ftp} file name
 -@file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name,
 -@code{ange-ftp} or @code{efs} will actually allow you to read this
 -directory over at @samp{sina} as a newsgroup.  Distributed news ahoy!
 +@code{nnvirtual} can have both mail and news groups as component groups.
 +When responding to articles in @code{nnvirtual} groups, @code{nnvirtual}
 +has to ask the back end of the component group the article comes from
 +whether it is a news or mail back end.  However, when you do a @kbd{^},
 +there is typically no sure way for the component back end to know this,
 +and in that case @code{nnvirtual} tells Gnus that the article came from a
 +not-news back end.  (Just to be on the safe side.)
  
 -@code{nndir} will use @acronym{NOV} files if they are present.
 +@kbd{C-c C-n} in the message buffer will insert the @code{Newsgroups}
 +line from the article you respond to in these cases.
  
 -@code{nndir} is a ``read-only'' back end---you can't delete or expire
 -articles with this method.  You can use @code{nnmh} or @code{nnml} for
 -whatever you use @code{nndir} for, so you could switch to any of those
 -methods if you feel the need to have a non-read-only @code{nndir}.
 +@code{nnvirtual} groups do not inherit anything but articles and marks
 +from component groups---group parameters, for instance, are not
 +inherited.
  
  
 -@node Anything Groups
 -@subsection Anything Groups
 -@cindex nneething
 +@node Email Based Diary
 +@section Email Based Diary
 +@cindex diary
 +@cindex email based diary
 +@cindex calendar
  
 -From the @code{nndir} back end (which reads a single spool-like
 -directory), it's just a hop and a skip to @code{nneething}, which
 -pretends that any arbitrary directory is a newsgroup.  Strange, but
 -true.
 +This section describes a special mail back end called @code{nndiary},
 +and its companion library @code{gnus-diary}.  It is ``special'' in the
 +sense that it is not meant to be one of the standard alternatives for
 +reading mail with Gnus.  See @ref{Choosing a Mail Back End} for that.
 +Instead, it is used to treat @emph{some} of your mails in a special way,
 +namely, as event reminders.
  
 -When @code{nneething} is presented with a directory, it will scan this
 -directory and assign article numbers to each file.  When you enter such
 -a group, @code{nneething} must create ``headers'' that Gnus can use.
 -After all, Gnus is a newsreader, in case you're forgetting.
 -@code{nneething} does this in a two-step process.  First, it snoops each
 -file in question.  If the file looks like an article (i.e., the first
 -few lines look like headers), it will use this as the head.  If this is
 -just some arbitrary file without a head (e.g. a C source file),
 -@code{nneething} will cobble up a header out of thin air.  It will use
 -file ownership, name and date and do whatever it can with these
 -elements.
 +Here is a typical scenario:
  
 -All this should happen automatically for you, and you will be presented
 -with something that looks very much like a newsgroup.  Totally like a
 -newsgroup, to be precise.  If you select an article, it will be displayed
 -in the article buffer, just as usual.
 +@itemize @bullet
 +@item
 +You've got a date with Andy Mc Dowell or Bruce Willis (select according
 +to your sexual preference) in one month.  You don't want to forget it.
 +@item
 +So you send a ``reminder'' message (actually, a diary one) to yourself.
 +@item
 +You forget all about it and keep on getting and reading new mail, as usual.
 +@item
 +From time to time, as you type `g' in the group buffer and as the date
 +is getting closer, the message will pop up again to remind you of your
 +appointment, just as if it were new and unread.
 +@item
 +Read your ``new'' messages, this one included, and start dreaming again
 +of the night you're gonna have.
 +@item
 +Once the date is over (you actually fell asleep just after dinner), the
 +message will be automatically deleted if it is marked as expirable.
 +@end itemize
  
 -If you select a line that represents a directory, Gnus will pop you into
 -a new summary buffer for this @code{nneething} group.  And so on.  You can
 -traverse the entire disk this way, if you feel like, but remember that
 -Gnus is not dired, really, and does not intend to be, either.
 +The Gnus Diary back end has the ability to handle regular appointments
 +(that wouldn't ever be deleted) as well as punctual ones, operates as a
 +real mail back end and is configurable in many ways.  All of this is
 +explained in the sections below.
  
 -There are two overall modes to this action---ephemeral or solid.  When
 -doing the ephemeral thing (i.e., @kbd{G D} from the group buffer), Gnus
 -will not store information on what files you have read, and what files
 -are new, and so on.  If you create a solid @code{nneething} group the
 -normal way with @kbd{G m}, Gnus will store a mapping table between
 -article numbers and file names, and you can treat this group like any
 -other groups.  When you activate a solid @code{nneething} group, you will
 -be told how many unread articles it contains, etc., etc.
 +@menu
 +* The NNDiary Back End::        Basic setup and usage.
 +* The Gnus Diary Library::      Utility toolkit on top of nndiary.
 +* Sending or Not Sending::      A final note on sending diary messages.
 +@end menu
  
 -Some variables:
  
 -@table @code
 -@item nneething-map-file-directory
 -@vindex nneething-map-file-directory
 -All the mapping files for solid @code{nneething} groups will be stored
 -in this directory, which defaults to @file{~/.nneething/}.
 +@node The NNDiary Back End
 +@subsection The NNDiary Back End
 +@cindex nndiary
 +@cindex the nndiary back end
  
 -@item nneething-exclude-files
 -@vindex nneething-exclude-files
 -All files that match this regexp will be ignored.  Nice to use to exclude
 -auto-save files and the like, which is what it does by default.
 +@code{nndiary} is a back end very similar to @code{nnml} (@pxref{Mail
 +Spool}).  Actually, it could appear as a mix of @code{nnml} and
 +@code{nndraft}.  If you know @code{nnml}, you're already familiar with
 +the message storing scheme of @code{nndiary}: one file per message, one
 +directory per group.
  
 -@item nneething-include-files
 -@vindex nneething-include-files
 -Regexp saying what files to include in the group.  If this variable is
 -non-@code{nil}, only files matching this regexp will be included.
 +  Before anything, there is one requirement to be able to run
 +@code{nndiary} properly: you @emph{must} use the group timestamp feature
 +of Gnus.  This adds a timestamp to each group's parameters.  @ref{Group
 +Timestamp} to see how it's done.
  
 -@item nneething-map-file
 -@vindex nneething-map-file
 -Name of the map files.
 -@end table
 +@menu
 +* Diary Messages::              What makes a message valid for nndiary.
 +* Running NNDiary::             NNDiary has two modes of operation.
 +* Customizing NNDiary::         Bells and whistles.
 +@end menu
  
 +@node Diary Messages
 +@subsubsection Diary Messages
 +@cindex nndiary messages
 +@cindex nndiary mails
  
 -@node Document Groups
 -@subsection Document Groups
 -@cindex nndoc
 -@cindex documentation group
 -@cindex help group
 +@code{nndiary} messages are just normal ones, except for the mandatory
 +presence of 7 special headers.  These headers are of the form
 +@code{X-Diary-<something>}, @code{<something>} being one of
 +@code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year},
 +@code{Time-Zone} and @code{Dow}.  @code{Dom} means ``Day of Month'', and
 +@code{dow} means ``Day of Week''.  These headers actually behave like
 +crontab specifications and define the event date(s):
  
 -@code{nndoc} is a cute little thing that will let you read a single file
 -as a newsgroup.  Several files types are supported:
 +@itemize @bullet
 +@item
 +For all headers except the @code{Time-Zone} one, a header value is
 +either a star (meaning all possible values), or a list of fields
 +(separated by a comma).
 +@item
 +A field is either an integer, or a range.
 +@item
 +A range is two integers separated by a dash.
 +@item
 +Possible integer values are 0--59 for @code{Minute}, 0--23 for
 +@code{Hour}, 1--31 for @code{Dom}, 1--12 for @code{Month}, above 1971
 +for @code{Year} and 0--6 for @code{Dow} (0 meaning Sunday).
 +@item
 +As a special case, a star in either @code{Dom} or @code{Dow} doesn't
 +mean ``all possible values'', but ``use only the other field''.  Note
 +that if both are star'ed, the use of either one gives the same result.
 +@item
 +The @code{Time-Zone} header is special in that it can only have one
 +value (@code{GMT}, for instance).  A star doesn't mean ``all possible
 +values'' (because it makes no sense), but ``the current local time
 +zone''.  Most of the time, you'll be using a star here.  However, for a
 +list of available time zone values, see the variable
 +@code{nndiary-headers}.
 +@end itemize
  
 -@table @code
 -@cindex Babyl
 -@item babyl
 -The Babyl format.
 +As a concrete example, here are the diary headers to add to your message
 +for specifying ``Each Monday and each 1st of month, at 12:00, 20:00,
 +21:00, 22:00, 23:00 and 24:00, from 1999 to 2010'' (I'll let you find
 +what to do then):
  
 -@cindex mbox
 -@cindex Unix mbox
 -@item mbox
 -The standard Unix mbox file.
 +@example
 +X-Diary-Minute: 0
 +X-Diary-Hour: 12, 20-24
 +X-Diary-Dom: 1
 +X-Diary-Month: *
 +X-Diary-Year: 1999-2010
 +X-Diary-Dow: 1
 +X-Diary-Time-Zone: *
 +@end example
  
 -@cindex MMDF mail box
 -@item mmdf
 -The MMDF mail box format.
 +@node Running NNDiary
 +@subsubsection Running NNDiary
 +@cindex running nndiary
 +@cindex nndiary operation modes
  
 -@item news
 -Several news articles appended into a file.
 +@code{nndiary} has two modes of operation: ``traditional'' (the default)
 +and ``autonomous''.  In traditional mode, @code{nndiary} does not get new
 +mail by itself.  You have to move (@kbd{B m}) or copy (@kbd{B c}) mails
 +from your primary mail back end to nndiary groups in order to handle them
 +as diary messages.  In autonomous mode, @code{nndiary} retrieves its own
 +mail and handles it independently from your primary mail back end.
  
 -@cindex rnews batch files
 -@item rnews
 -The rnews batch transport format.
 +One should note that Gnus is not inherently designed to allow several
 +``master'' mail back ends at the same time.  However, this does make
 +sense with @code{nndiary}: you really want to send and receive diary
 +messages to your diary groups directly.  So, @code{nndiary} supports
 +being sort of a ``second primary mail back end'' (to my knowledge, it is
 +the only back end offering this feature).  However, there is a limitation
 +(which I hope to fix some day): respooling doesn't work in autonomous
 +mode.
  
 -@item nsmail
 -Netscape mail boxes.
 +In order to use @code{nndiary} in autonomous mode, you have several
 +things to do:
  
 -@item mime-parts
 -@acronym{MIME} multipart messages.
 +@itemize @bullet
 +@item
 +Allow @code{nndiary} to retrieve new mail by itself.  Put the following
 +line in your @file{~/.gnus.el} file:
  
 -@item standard-digest
 -The standard (RFC 1153) digest format.
 +@lisp
 +(setq nndiary-get-new-mail t)
 +@end lisp
 +@item
 +You must arrange for diary messages (those containing @code{X-Diary-*}
 +headers) to be split in a private folder @emph{before} Gnus treat them.
 +Again, this is needed because Gnus cannot (yet ?) properly handle
 +multiple primary mail back ends.  Getting those messages from a separate
 +source will compensate this misfeature to some extent.
  
 -@item mime-digest
 -A @acronym{MIME} digest of messages.
 +As an example, here's my procmailrc entry to store diary files in
 +@file{~/.nndiary} (the default @code{nndiary} mail source file):
  
 -@item lanl-gov-announce
 -Announcement messages from LANL Gov Announce.
 +@example
 +:0 HD :
 +* ^X-Diary
 +.nndiary
 +@end example
 +@end itemize
  
 -@cindex forwarded messages
 -@item rfc822-forward
 -A message forwarded according to RFC822.
 +Once this is done, you might want to customize the following two options
 +that affect the diary mail retrieval and splitting processes:
  
 -@item outlook
 -The Outlook mail box.
 +@defvar nndiary-mail-sources
 +This is the diary-specific replacement for the standard
 +@code{mail-sources} variable.  It obeys the same syntax, and defaults to
 +@code{(file :path "~/.nndiary")}.
 +@end defvar
  
 -@item oe-dbx
 -The Outlook Express dbx mail box.
 +@defvar nndiary-split-methods
 +This is the diary-specific replacement for the standard
 +@code{nnmail-split-methods} variable.  It obeys the same syntax.
 +@end defvar
  
 -@item exim-bounce
 -A bounce message from the Exim MTA.
 +  Finally, you may add a permanent @code{nndiary} virtual server
 +(something like @code{(nndiary "diary")} should do) to your
 +@code{gnus-secondary-select-methods}.
  
 -@item forward
 -A message forwarded according to informal rules.
 +  Hopefully, almost everything (see the TODO section in
 +@file{nndiary.el}) will work as expected when you restart Gnus: in
 +autonomous mode, typing @kbd{g} and @kbd{M-g} in the group buffer, will
 +also get your new diary mails and split them according to your
 +diary-specific rules, @kbd{F} will find your new diary groups etc.
  
 -@item rfc934
 -An RFC934-forwarded message.
 +@node Customizing NNDiary
 +@subsubsection Customizing NNDiary
 +@cindex customizing nndiary
 +@cindex nndiary customization
  
 -@item mailman
 -A mailman digest.
 +Now that @code{nndiary} is up and running, it's time to customize it.
 +The custom group is called @code{nndiary} (no, really ?!).  You should
 +browse it to figure out which options you'd like to tweak.  The following
 +two variables are probably the only ones you will want to change:
  
 -@item clari-briefs
 -A digest of Clarinet brief news items.
 +@defvar nndiary-reminders
 +This is the list of times when you want to be reminded of your
 +appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
 +before and that's it).  Remember that ``being reminded'' means that the
 +diary message will pop up as brand new and unread again when you get new
 +mail.
 +@end defvar
  
 -@item slack-digest
 -Non-standard digest format---matches most things, but does it badly.
 +@defvar nndiary-week-starts-on-monday
 +Rather self-explanatory.  Otherwise, Sunday is assumed (this is the
 +default).
 +@end defvar
  
 -@item mail-in-mail
 -The last resort.
 -@end table
  
 -You can also use the special ``file type'' @code{guess}, which means
 -that @code{nndoc} will try to guess what file type it is looking at.
 -@code{digest} means that @code{nndoc} should guess what digest type the
 -file is.
 +@node The Gnus Diary Library
 +@subsection The Gnus Diary Library
 +@cindex gnus-diary
 +@cindex the gnus diary library
  
 -@code{nndoc} will not try to change the file or insert any extra headers into
 -it---it will simply, like, let you use the file as the basis for a
 -group.  And that's it.
 +Using @code{nndiary} manually (I mean, writing the headers by hand and
 +so on) would be rather boring.  Fortunately, there is a library called
 +@code{gnus-diary} written on top of @code{nndiary}, that does many
 +useful things for you.
  
 -If you have some old archived articles that you want to insert into your
 -new & spiffy Gnus mail back end, @code{nndoc} can probably help you with
 -that.  Say you have an old @file{RMAIL} file with mail that you now want
 -to split into your new @code{nnml} groups.  You look at that file using
 -@code{nndoc} (using the @kbd{G f} command in the group buffer
 -(@pxref{Foreign Groups})), set the process mark on all the articles in
 -the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r})
 -using @code{nnml}.  If all goes well, all the mail in the @file{RMAIL}
 -file is now also stored in lots of @code{nnml} directories, and you can
 -delete that pesky @file{RMAIL} file.  If you have the guts!
 +  In order to use it, add the following line to your @file{~/.gnus.el} file:
  
 -Virtual server variables:
 +@lisp
 +(require 'gnus-diary)
 +@end lisp
  
 -@table @code
 -@item nndoc-article-type
 -@vindex nndoc-article-type
 -This should be one of @code{mbox}, @code{babyl}, @code{digest},
 -@code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934},
 -@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest},
 -@code{slack-digest}, @code{clari-briefs}, @code{nsmail}, @code{outlook},
 -@code{oe-dbx}, @code{mailman}, and @code{mail-in-mail} or @code{guess}.
 +  Also, you shouldn't use any @code{gnus-user-format-function-[d|D]}
 +(@pxref{Summary Buffer Lines}).  @code{gnus-diary} provides both of these
 +(sorry if you used them before).
  
 -@item nndoc-post-type
 -@vindex nndoc-post-type
 -This variable says whether Gnus is to consider the group a news group or
 -a mail group.  There are two valid values:  @code{mail} (the default)
 -and @code{news}.
 -@end table
  
  @menu
 -* Document Server Internals::   How to add your own document types.
 +* Diary Summary Line Format::           A nicer summary buffer line format.
 +* Diary Articles Sorting::              A nicer way to sort messages.
 +* Diary Headers Generation::            Not doing it manually.
 +* Diary Group Parameters::              Not handling them manually.
  @end menu
  
 +@node Diary Summary Line Format
 +@subsubsection Diary Summary Line Format
 +@cindex diary summary buffer line
 +@cindex diary summary line format
  
 -@node Document Server Internals
 -@subsubsection Document Server Internals
 +Displaying diary messages in standard summary line format (usually
 +something like @samp{From Joe: Subject}) is pretty useless.  Most of
 +the time, you're the one who wrote the message, and you mostly want to
 +see the event's date.
  
 -Adding new document types to be recognized by @code{nndoc} isn't
 -difficult.  You just have to whip up a definition of what the document
 -looks like, write a predicate function to recognize that document type,
 -and then hook into @code{nndoc}.
 +  @code{gnus-diary} provides two supplemental user formats to be used in
 +summary line formats.  @code{D} corresponds to a formatted time string
 +for the next occurrence of the event (e.g. ``Sat, Sep 22 01, 12:00''),
 +while @code{d} corresponds to an approximative remaining time until the
 +next occurrence of the event (e.g. ``in 6 months, 1 week'').
  
 -First, here's an example document type definition:
 +  For example, here's how Joe's birthday is displayed in my
 +@code{nndiary+diary:birthdays} summary buffer (note that the message is
 +expirable, but will never be deleted, as it specifies a periodic event):
  
  @example
 -(mmdf
 - (article-begin .  "^\^A\^A\^A\^A\n")
 - (body-end .  "^\^A\^A\^A\^A\n"))
 +   E  Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week)
  @end example
  
 -The definition is simply a unique @dfn{name} followed by a series of
 -regexp pseudo-variable settings.  Below are the possible
 -variables---don't be daunted by the number of variables; most document
 -types can be defined with very few settings:
 -
 -@table @code
 -@item first-article
 -If present, @code{nndoc} will skip past all text until it finds
 -something that match this regexp.  All text before this will be
 -totally ignored.
 -
 -@item article-begin
 -This setting has to be present in all document type definitions.  It
 -says what the beginning of each article looks like.  To do more
 -complicated things that cannot be dealt with a simple regexp, you can
 -use @code{article-begin-function} instead of this.
 -
 -@item article-begin-function
 -If present, this should be a function that moves point to the beginning
 -of each article.  This setting overrides @code{article-begin}.
 -
 -@item head-begin
 -If present, this should be a regexp that matches the head of the
 -article.  To do more complicated things that cannot be dealt with a
 -simple regexp, you can use @code{head-begin-function} instead of this.
 -
 -@item head-begin-function
 -If present, this should be a function that moves point to the head of
 -the article.  This setting overrides @code{head-begin}.
 -
 -@item head-end
 -This should match the end of the head of the article.  It defaults to
 -@samp{^$}---the empty line.
 -
 -@item body-begin
 -This should match the beginning of the body of the article.  It defaults
 -to @samp{^\n}.  To do more complicated things that cannot be dealt with
 -a simple regexp, you can use @code{body-begin-function} instead of this.
 -
 -@item body-begin-function
 -If present, this function should move point to the beginning of the body
 -of the article.  This setting overrides @code{body-begin}.
 -
 -@item body-end
 -If present, this should match the end of the body of the article.  To do
 -more complicated things that cannot be dealt with a simple regexp, you
 -can use @code{body-end-function} instead of this.
 +In order to get something like the above, you would normally add the
 +following line to your diary groups'parameters:
  
 -@item body-end-function
 -If present, this function should move point to the end of the body of
 -the article.  This setting overrides @code{body-end}.
 +@lisp
 +(gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n")
 +@end lisp
  
 -@item file-begin
 -If present, this should match the beginning of the file.  All text
 -before this regexp will be totally ignored.
 +However, @code{gnus-diary} does it automatically (@pxref{Diary Group
 +Parameters}).  You can however customize the provided summary line format
 +with the following user options:
  
 -@item file-end
 -If present, this should match the end of the file.  All text after this
 -regexp will be totally ignored.
 +@defvar gnus-diary-summary-line-format
 +Defines the summary line format used for diary groups (@pxref{Summary
 +Buffer Lines}).  @code{gnus-diary} uses it to automatically update the
 +diary groups'parameters.
 +@end defvar
  
 -@end table
 +@defvar gnus-diary-time-format
 +Defines the format to display dates in diary summary buffers.  This is
 +used by the @code{D} user format.  See the docstring for details.
 +@end defvar
  
 -So, using these variables @code{nndoc} is able to dissect a document
 -file into a series of articles, each with a head and a body.  However, a
 -few more variables are needed since not all document types are all that
 -news-like---variables needed to transform the head or the body into
 -something that's palatable for Gnus:
 +@defvar gnus-diary-delay-format-function
 +Defines the format function to use for displaying delays (remaining
 +times) in diary summary buffers.  This is used by the @code{d} user
 +format.  There are currently built-in functions for English and French;
 +you can also define your own.  See the docstring for details.
 +@end defvar
  
 -@table @code
 -@item prepare-body-function
 -If present, this function will be called when requesting an article.  It
 -will be called with point at the start of the body, and is useful if the
 -document has encoded some parts of its contents.
 +@node Diary Articles Sorting
 +@subsubsection Diary Articles Sorting
 +@cindex diary articles sorting
 +@cindex diary summary lines sorting
 +@findex gnus-summary-sort-by-schedule
 +@findex gnus-thread-sort-by-schedule
 +@findex gnus-article-sort-by-schedule
  
 -@item article-transform-function
 -If present, this function is called when requesting an article.  It's
 -meant to be used for more wide-ranging transformation of both head and
 -body of the article.
 +@code{gnus-diary} provides new sorting functions (@pxref{Sorting the
 +Summary Buffer} ) called @code{gnus-summary-sort-by-schedule},
 +@code{gnus-thread-sort-by-schedule} and
 +@code{gnus-article-sort-by-schedule}.  These functions let you organize
 +your diary summary buffers from the closest event to the farthest one.
  
 -@item generate-head-function
 -If present, this function is called to generate a head that Gnus can
 -understand.  It is called with the article number as a parameter, and is
 -expected to generate a nice head for the article in question.  It is
 -called when requesting the headers of all articles.
 +@code{gnus-diary} automatically installs
 +@code{gnus-summary-sort-by-schedule} as a menu item in the summary
 +buffer's ``sort'' menu, and the two others as the primary (hence
 +default) sorting functions in the group parameters (@pxref{Diary Group
 +Parameters}).
  
 -@item generate-article-function
 -If present, this function is called to generate an entire article that
 -Gnus can understand.  It is called with the article number as a
 -parameter when requesting all articles.
 +@node Diary Headers Generation
 +@subsubsection Diary Headers Generation
 +@cindex diary headers generation
 +@findex gnus-diary-check-message
  
 -@item dissection-function
 -If present, this function is called to dissect a document by itself,
 -overriding @code{first-article}, @code{article-begin},
 -@code{article-begin-function}, @code{head-begin},
 -@code{head-begin-function}, @code{head-end}, @code{body-begin},
 -@code{body-begin-function}, @code{body-end}, @code{body-end-function},
 -@code{file-begin}, and @code{file-end}.
 +@code{gnus-diary} provides a function called
 +@code{gnus-diary-check-message} to help you handle the @code{X-Diary-*}
 +headers.  This function ensures that the current message contains all the
 +required diary headers, and prompts you for values or corrections if
 +needed.
  
 -@end table
 +  This function is hooked into the @code{nndiary} back end, so that
 +moving or copying an article to a diary group will trigger it
 +automatically.  It is also bound to @kbd{C-c C-f d} in
 +@code{message-mode} and @code{article-edit-mode} in order to ease the
 +process of converting a usual mail to a diary one.
  
 -Let's look at the most complicated example I can come up with---standard
 -digests:
 +  This function takes a prefix argument which will force prompting of
 +all diary headers, regardless of their presence or validity.  That way,
 +you can very easily reschedule an already valid diary message, for
 +instance.
  
 -@example
 -(standard-digest
 - (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+"))
 - (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+"))
 - (prepare-body-function . nndoc-unquote-dashes)
 - (body-end-function . nndoc-digest-body-end)
 - (head-end . "^ ?$")
 - (body-begin . "^ ?\n")
 - (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$")
 - (subtype digest guess))
 -@end example
 +@node Diary Group Parameters
 +@subsubsection Diary Group Parameters
 +@cindex diary group parameters
  
 -We see that all text before a 70-width line of dashes is ignored; all
 -text after a line that starts with that @samp{^End of} is also ignored;
 -each article begins with a 30-width line of dashes; the line separating
 -the head from the body may contain a single space; and that the body is
 -run through @code{nndoc-unquote-dashes} before being delivered.
 +When you create a new diary group, or visit one, @code{gnus-diary}
 +automatically checks your group parameters and if needed, sets the
 +summary line format to the diary-specific value, installs the
 +diary-specific sorting functions, and also adds the different
 +@code{X-Diary-*} headers to the group's posting-style.  It is then easier
 +to send a diary message, because if you use @kbd{C-u a} or @kbd{C-u m}
 +on a diary group to prepare a message, these headers will be inserted
 +automatically (although not filled with proper values yet).
  
 -To hook your own document definition into @code{nndoc}, use the
 -@code{nndoc-add-type} function.  It takes two parameters---the first
 -is the definition itself and the second (optional) parameter says
 -where in the document type definition alist to put this definition.
 -The alist is traversed sequentially, and
 -@code{nndoc-@var{type}-type-p} is called for a given type @var{type}.
 -So @code{nndoc-mmdf-type-p} is called to see whether a document is of
 -@code{mmdf} type, and so on.  These type predicates should return
 -@code{nil} if the document is not of the correct type; @code{t} if it
 -is of the correct type; and a number if the document might be of the
 -correct type.  A high number means high probability; a low number
 -means low probability with @samp{0} being the lowest valid number.
 +@node Sending or Not Sending
 +@subsection Sending or Not Sending
  
 +Well, assuming you've read all of the above, here are two final notes on
 +mail sending with @code{nndiary}:
  
 -@node SOUP
 -@subsection SOUP
 -@cindex SOUP
 -@cindex offline
 +@itemize @bullet
 +@item
 +@code{nndiary} is a @emph{real} mail back end.  You really send real diary
 +messsages for real.  This means for instance that you can give
 +appointments to anybody (provided they use Gnus and @code{nndiary}) by
 +sending the diary message to them as well.
 +@item
 +However, since @code{nndiary} also has a @code{request-post} method, you
 +can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the
 +message won't actually be sent; just stored locally in the group. This
 +comes in very handy for private appointments.
 +@end itemize
  
 -In the PC world people often talk about ``offline'' newsreaders.  These
 -are thingies that are combined reader/news transport monstrosities.
 -With built-in modem programs.  Yecchh!
 +@node Gnus Unplugged
 +@section Gnus Unplugged
 +@cindex offline
 +@cindex unplugged
 +@cindex agent
 +@cindex Gnus agent
 +@cindex Gnus unplugged
  
 -Of course, us Unix Weenie types of human beans use things like
 -@code{uucp} and, like, @code{nntpd} and set up proper news and mail
 -transport things like Ghod intended.  And then we just use normal
 -newsreaders.
 +In olden times (ca. February '88), people used to run their newsreaders
 +on big machines with permanent connections to the net.  News transport
 +was dealt with by news servers, and all the newsreaders had to do was to
 +read news.  Believe it or not.
  
 -However, it can sometimes be convenient to do something that's a bit
 -easier on the brain if you have a very slow modem, and you're not really
 -that interested in doing things properly.
 +Nowadays most people read news and mail at home, and use some sort of
 +modem to connect to the net.  To avoid running up huge phone bills, it
 +would be nice to have a way to slurp down all the news and mail, hang up
 +the phone, read for several hours, and then upload any responses you
 +have to make.  And then you repeat the procedure.
  
 -A file format called @sc{soup} has been developed for transporting news
 -and mail from servers to home machines and back again.  It can be a bit
 -fiddly.
 +Of course, you can use news servers for doing this as well.  I've used
 +@code{inn} together with @code{slurp}, @code{pop} and @code{sendmail}
 +for some years, but doing that's a bore.  Moving the news server
 +functionality up to the newsreader makes sense if you're the only person
 +reading news on a machine.
  
 -First some terminology:
 +Setting up Gnus as an ``offline'' newsreader is quite simple.  In
 +fact, you don't have to configure anything as the agent is now enabled
 +by default (@pxref{Agent Variables, gnus-agent}).
  
 -@table @dfn
 +Of course, to use it as such, you have to learn a few new commands.
  
 -@item server
 -This is the machine that is connected to the outside world and where you
 -get news and/or mail from.
 +@menu
 +* Agent Basics::                How it all is supposed to work.
 +* Agent Categories::            How to tell the Gnus Agent what to download.
 +* Agent Commands::              New commands for all the buffers.
 +* Agent Visuals::               Ways that the agent may effect your summary buffer.
 +* Agent as Cache::              The Agent is a big cache too.
 +* Agent Expiry::                How to make old articles go away.
 +* Agent Regeneration::          How to recover from lost connections and other accidents.
 +* Agent and flags::             How the Agent maintains flags.
 +* Agent and IMAP::              How to use the Agent with @acronym{IMAP}.
 +* Outgoing Messages::           What happens when you post/mail something?
 +* Agent Variables::             Customizing is fun.
 +* Example Setup::               An example @file{~/.gnus.el} file for offline people.
 +* Batching Agents::             How to fetch news from a @code{cron} job.
 +* Agent Caveats::               What you think it'll do and what it does.
 +@end menu
  
 -@item home machine
 -This is the machine that you want to do the actual reading and responding
 -on.  It is typically not connected to the rest of the world in any way.
  
 -@item packet
 -Something that contains messages and/or commands.  There are two kinds
 -of packets:
 +@node Agent Basics
 +@subsection Agent Basics
  
 -@table @dfn
 -@item message packets
 -These are packets made at the server, and typically contain lots of
 -messages for you to read.  These are called @file{SoupoutX.tgz} by
 -default, where @var{x} is a number.
 +First, let's get some terminology out of the way.
  
 -@item response packets
 -These are packets made at the home machine, and typically contains
 -replies that you've written.  These are called @file{SoupinX.tgz} by
 -default, where @var{x} is a number.
 +The Gnus Agent is said to be @dfn{unplugged} when you have severed the
 +connection to the net (and notified the Agent that this is the case).
 +When the connection to the net is up again (and Gnus knows this), the
 +Agent is @dfn{plugged}.
  
 -@end table
 +The @dfn{local} machine is the one you're running on, and which isn't
 +connected to the net continuously.
  
 -@end table
 +@dfn{Downloading} means fetching things from the net to your local
 +machine.  @dfn{Uploading} is doing the opposite.
  
 +You know that Gnus gives you all the opportunity you'd ever want for
 +shooting yourself in the foot.  Some people call it flexibility.  Gnus
 +is also customizable to a great extent, which means that the user has a
 +say on how Gnus behaves.  Other newsreaders might unconditionally shoot
 +you in your foot, but with Gnus, you have a choice!
  
 -@enumerate
 +Gnus is never really in plugged or unplugged state.  Rather, it applies
 +that state to each server individually.  This means that some servers
 +can be plugged while others can be unplugged.  Additionally, some
 +servers can be ignored by the Agent altogether (which means that
 +they're kinda like plugged always).
  
 -@item
 -You log in on the server and create a @sc{soup} packet.  You can either
 -use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
 -can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
 -s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
 +So when you unplug the Agent and then wonder why is Gnus opening a
 +connection to the Net, the next step to do is to look whether all
 +servers are agentized.  If there is an unagentized server, you found
 +the culprit.
  
 -@item
 -You transfer the packet home.  Rail, boat, car or modem will do fine.
 +Another thing is the @dfn{offline} state.  Sometimes, servers aren't
 +reachable.  When Gnus notices this, it asks you whether you want the
 +server to be switched to offline state.  If you say yes, then the
 +server will behave somewhat as if it was unplugged, except that Gnus
 +will ask you whether you want to switch it back online again.
  
 -@item
 -You put the packet in your home directory.
 +Let's take a typical Gnus session using the Agent.
  
 -@item
 -You fire up Gnus on your home machine using the @code{nnsoup} back end as
 -the native or secondary server.
 +@itemize @bullet
  
  @item
 -You read articles and mail and answer and followup to the things you
 -want (@pxref{SOUP Replies}).
 +@findex gnus-unplugged
 +You start Gnus with @code{gnus-unplugged}.  This brings up the Gnus
 +Agent in a disconnected state.  You can read all the news that you have
 +already fetched while in this mode.
  
  @item
 -You do the @kbd{G s r} command to pack these replies into a @sc{soup}
 -packet.
 +You then decide to see whether any new news has arrived.  You connect
 +your machine to the net (using PPP or whatever), and then hit @kbd{J j}
 +to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail
 +as usual.  To check for new mail in unplugged mode (@pxref{Mail
 +Source Specifiers}).
  
  @item
 -You transfer this packet to the server.
 +You can then read the new news immediately, or you can download the
 +news onto your local machine.  If you want to do the latter, you press
 +@kbd{g} to check if there are any new news and then @kbd{J s} to fetch
 +all the eligible articles in all the groups.  (To let Gnus know which
 +articles you want to download, @pxref{Agent Categories}).
  
  @item
 -You use Gnus to mail this packet out with the @kbd{G s s} command.
 +After fetching the articles, you press @kbd{J j} to make Gnus become
 +unplugged again, and you shut down the PPP thing (or whatever).  And
 +then you read the news offline.
  
  @item
 -You then repeat until you die.
 -
 -@end enumerate
 -
 -So you basically have a bipartite system---you use @code{nnsoup} for
 -reading and Gnus for packing/sending these @sc{soup} packets.
 -
 -@menu
 -* SOUP Commands::               Commands for creating and sending @sc{soup} packets
 -* SOUP Groups::                 A back end for reading @sc{soup} packets.
 -* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 -@end menu
 -
 -
 -@node SOUP Commands
 -@subsubsection SOUP Commands
 -
 -These are commands for creating and manipulating @sc{soup} packets.
 +And then you go to step 2.
 +@end itemize
  
 -@table @kbd
 -@item G s b
 -@kindex G s b (Group)
 -@findex gnus-group-brew-soup
 -Pack all unread articles in the current group
 -(@code{gnus-group-brew-soup}).  This command understands the
 -process/prefix convention.
 +Here are some things you should do the first time (or so) that you use
 +the Agent.
  
 -@item G s w
 -@kindex G s w (Group)
 -@findex gnus-soup-save-areas
 -Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
 -
 -@item G s s
 -@kindex G s s (Group)
 -@findex gnus-soup-send-replies
 -Send all replies from the replies packet
 -(@code{gnus-soup-send-replies}).
 -
 -@item G s p
 -@kindex G s p (Group)
 -@findex gnus-soup-pack-packet
 -Pack all files into a @sc{soup} packet (@code{gnus-soup-pack-packet}).
 -
 -@item G s r
 -@kindex G s r (Group)
 -@findex nnsoup-pack-replies
 -Pack all replies into a replies packet (@code{nnsoup-pack-replies}).
 -
 -@item O s
 -@kindex O s (Summary)
 -@findex gnus-soup-add-article
 -This summary-mode command adds the current article to a @sc{soup} packet
 -(@code{gnus-soup-add-article}).  It understands the process/prefix
 -convention (@pxref{Process/Prefix}).
 +@itemize @bullet
  
 -@end table
 +@item
 +Decide which servers should be covered by the Agent.  If you have a mail
 +back end, it would probably be nonsensical to have it covered by the
 +Agent.  Go to the server buffer (@kbd{^} in the group buffer) and press
 +@kbd{J a} on the server (or servers) that you wish to have covered by the
 +Agent (@pxref{Server Agent Commands}), or @kbd{J r} on automatically
 +added servers you do not wish to have covered by the Agent.  By default,
 +all @code{nntp} and @code{nnimap} servers in @code{gnus-select-method} and
 +@code{gnus-secondary-select-methods} are agentized.
  
 +@item
 +Decide on download policy.  It's fairly simple once you decide whether
 +you are going to use agent categories, topic parameters, and/or group
 +parameters to implement your policy.  If you're new to gnus, it
 +is probably best to start with a category, @xref{Agent Categories}.
  
 -There are a few variables to customize where Gnus will put all these
 -thingies:
 +Both topic parameters (@pxref{Topic Parameters}) and agent categories
 +(@pxref{Agent Categories}) provide for setting a policy that applies
 +to multiple groups.  Which you use is entirely up to you.  Topic
 +parameters do override categories so, if you mix the two, you'll have
 +to take that into account.  If you have a few groups that deviate from
 +your policy, you can use group parameters (@pxref{Group Parameters}) to
 +configure them.
  
 -@table @code
 +@item
 +Uhm@dots{} that's it.
 +@end itemize
  
 -@item gnus-soup-directory
 -@vindex gnus-soup-directory
 -Directory where Gnus will save intermediate files while composing
 -@sc{soup} packets.  The default is @file{~/SoupBrew/}.
  
 -@item gnus-soup-replies-directory
 -@vindex gnus-soup-replies-directory
 -This is what Gnus will use as a temporary directory while sending our
 -reply packets.  @file{~/SoupBrew/SoupReplies/} is the default.
 +@node Agent Categories
 +@subsection Agent Categories
  
 -@item gnus-soup-prefix-file
 -@vindex gnus-soup-prefix-file
 -Name of the file where Gnus stores the last used prefix.  The default is
 -@samp{gnus-prefix}.
 +One of the main reasons to integrate the news transport layer into the
 +newsreader is to allow greater control over what articles to download.
 +There's not much point in downloading huge amounts of articles, just to
 +find out that you're not interested in reading any of them.  It's better
 +to be somewhat more conservative in choosing what to download, and then
 +mark the articles for downloading manually if it should turn out that
 +you're interested in the articles anyway.
  
 -@item gnus-soup-packer
 -@vindex gnus-soup-packer
 -A format string command for packing a @sc{soup} packet.  The default is
 -@samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}.
 +One of the more effective methods for controlling what is to be
 +downloaded is to create a @dfn{category} and then assign some (or all)
 +groups to this category.  Groups that do not belong in any other
 +category belong to the @code{default} category.  Gnus has its own
 +buffer for creating and managing categories.
  
 -@item gnus-soup-unpacker
 -@vindex gnus-soup-unpacker
 -Format string command for unpacking a @sc{soup} packet.  The default is
 -@samp{gunzip -c %s | tar xvf -}.
 +If you prefer, you can also use group parameters (@pxref{Group
 +Parameters}) and topic parameters (@pxref{Topic Parameters}) for an
 +alternative approach to controlling the agent.  The only real
 +difference is that categories are specific to the agent (so there is
 +less to learn) while group and topic parameters include the kitchen
 +sink.
  
 -@item gnus-soup-packet-directory
 -@vindex gnus-soup-packet-directory
 -Where Gnus will look for reply packets.  The default is @file{~/}.
 +Since you can set agent parameters in several different places we have
 +a rule to decide which source to believe.  This rule specifies that
 +the parameter sources are checked in the following order: group
 +parameters, topic parameters, agent category, and finally customizable
 +variables.  So you can mix all of these sources to produce a wide range
 +of behavior, just don't blame me if you don't remember where you put
 +your settings.
  
 -@item gnus-soup-packet-regexp
 -@vindex gnus-soup-packet-regexp
 -Regular expression matching @sc{soup} reply packets in
 -@code{gnus-soup-packet-directory}.
 +@menu
 +* Category Syntax::             What a category looks like.
 +* Category Buffer::             A buffer for maintaining categories.
 +* Category Variables::          Customize'r'Us.
 +@end menu
  
 -@end table
  
 +@node Category Syntax
 +@subsubsection Category Syntax
  
 -@node SOUP Groups
 -@subsubsection SOUP Groups
 -@cindex nnsoup
 +A category consists of a name, the list of groups belonging to the
 +category, and a number of optional parameters that override the
 +customizable variables.  The complete list of agent parameters are
 +listed below.
  
 -@code{nnsoup} is the back end for reading @sc{soup} packets.  It will
 -read incoming packets, unpack them, and put them in a directory where
 -you can read them at leisure.
 +@cindex Agent Parameters
 +@table @code
 +@item agent-groups
 +The list of groups that are in this category.
  
 -These are the variables you can use to customize its behavior:
 +@item agent-predicate
 +A predicate which (generally) gives a rough outline of which articles
 +are eligible for downloading; and
  
 -@table @code
 +@item agent-score
 +a score rule which (generally) gives you a finer granularity when
 +deciding what articles to download.  (Note that this @dfn{download
 +score} is not necessarily related to normal scores.)
  
 -@item nnsoup-tmp-directory
 -@vindex nnsoup-tmp-directory
 -When @code{nnsoup} unpacks a @sc{soup} packet, it does it in this
 -directory.  (@file{/tmp/} by default.)
 +@item agent-enable-expiration
 +a boolean indicating whether the agent should expire old articles in
 +this group.  Most groups should be expired to conserve disk space.  In
 +fact, its probably safe to say that the gnus.* hierarchy contains the
 +only groups that should not be expired.
  
 -@item nnsoup-directory
 -@vindex nnsoup-directory
 -@code{nnsoup} then moves each message and index file to this directory.
 -The default is @file{~/SOUP/}.
 +@item agent-days-until-old
 +an integer indicating the number of days that the agent should wait
 +before deciding that a read article is safe to expire.
  
 -@item nnsoup-replies-directory
 -@vindex nnsoup-replies-directory
 -All replies will be stored in this directory before being packed into a
 -reply packet.  The default is @file{~/SOUP/replies/}.
 +@item agent-low-score
 +an integer that overrides the value of @code{gnus-agent-low-score}.
  
 -@item nnsoup-replies-format-type
 -@vindex nnsoup-replies-format-type
 -The @sc{soup} format of the replies packets.  The default is @samp{?n}
 -(rnews), and I don't think you should touch that variable.  I probably
 -shouldn't even have documented it.  Drats!  Too late!
 +@item agent-high-score
 +an integer that overrides the value of @code{gnus-agent-high-score}.
  
 -@item nnsoup-replies-index-type
 -@vindex nnsoup-replies-index-type
 -The index type of the replies packet.  The default is @samp{?n}, which
 -means ``none''.  Don't fiddle with this one either!
 +@item agent-short-article
 +an integer that overrides the value of
 +@code{gnus-agent-short-article}.
  
 -@item nnsoup-active-file
 -@vindex nnsoup-active-file
 -Where @code{nnsoup} stores lots of information.  This is not an ``active
 -file'' in the @code{nntp} sense; it's an Emacs Lisp file.  If you lose
 -this file or mess it up in any way, you're dead.  The default is
 -@file{~/SOUP/active}.
 +@item agent-long-article
 +an integer that overrides the value of @code{gnus-agent-long-article}.
  
 -@item nnsoup-packer
 -@vindex nnsoup-packer
 -Format string command for packing a reply @sc{soup} packet.  The default
 -is @samp{tar cf - %s | gzip > $HOME/Soupin%d.tgz}.
 +@item agent-enable-undownloaded-faces
 +a symbol indicating whether the summary buffer should display
 +undownloaded articles using the @code{gnus-summary-*-undownloaded-face}
 +faces.  Any symbol other than @code{nil} will enable the use of
 +undownloaded faces.
 +@end table
  
 -@item nnsoup-unpacker
 -@vindex nnsoup-unpacker
 -Format string command for unpacking incoming @sc{soup} packets.  The
 -default is @samp{gunzip -c %s | tar xvf -}.
 +The name of a category can not be changed once the category has been
 +created.
  
 -@item nnsoup-packet-directory
 -@vindex nnsoup-packet-directory
 -Where @code{nnsoup} will look for incoming packets.  The default is
 -@file{~/}.
 +Each category maintains a list of groups that are exclusive members of
 +that category.  The exclusivity rule is automatically enforced, add a
 +group to a new category and it is automatically removed from its old
 +category.
  
 -@item nnsoup-packet-regexp
 -@vindex nnsoup-packet-regexp
 -Regular expression matching incoming @sc{soup} packets.  The default is
 -@samp{Soupout}.
 +A predicate in its simplest form can be a single predicate such as
 +@code{true} or @code{false}.  These two will download every available
 +article or nothing respectively.  In the case of these two special
 +predicates an additional score rule is superfluous.
  
 -@item nnsoup-always-save
 -@vindex nnsoup-always-save
 -If non-@code{nil}, save the replies buffer after each posted message.
 +Predicates of @code{high} or @code{low} download articles in respect of
 +their scores in relationship to @code{gnus-agent-high-score} and
 +@code{gnus-agent-low-score} as described below.
  
 -@end table
 +To gain even finer control of what is to be regarded eligible for
 +download a predicate can consist of a number of predicates with logical
 +operators sprinkled in between.
  
 +Perhaps some examples are in order.
  
 -@node SOUP Replies
 -@subsubsection SOUP Replies
 +Here's a simple predicate.  (It's the default predicate, in fact, used
 +for all groups that don't belong to any other category.)
  
 -Just using @code{nnsoup} won't mean that your postings and mailings end
 -up in @sc{soup} reply packets automagically.  You have to work a bit
 -more for that to happen.
 +@lisp
 +short
 +@end lisp
  
 -@findex nnsoup-set-variables
 -The @code{nnsoup-set-variables} command will set the appropriate
 -variables to ensure that all your followups and replies end up in the
 -@sc{soup} system.
 +Quite simple, eh?  This predicate is true if and only if the article is
 +short (for some value of ``short'').
  
 -In specific, this is what it does:
 +Here's a more complex predicate:
  
  @lisp
 -(setq message-send-news-function 'nnsoup-request-post)
 -(setq message-send-mail-function 'nnsoup-request-mail)
 +(or high
 +    (and
 +     (not low)
 +     (not long)))
  @end lisp
  
 -And that's it, really.  If you only want news to go into the @sc{soup}
 -system you just use the first line.  If you only want mail to be
 -@sc{soup}ed you use the second.
 +This means that an article should be downloaded if it has a high score,
 +or if the score is not low and the article is not long.  You get the
 +drift.
  
 +The available logical operators are @code{or}, @code{and} and
 +@code{not}.  (If you prefer, you can use the more ``C''-ish operators
 +@samp{|}, @code{&} and @code{!} instead.)
  
 -@node Mail-To-News Gateways
 -@subsection Mail-To-News Gateways
 -@cindex mail-to-news gateways
 -@cindex gateways
 +The following predicates are pre-defined, but if none of these fit what
 +you want to do, you can write your own.
  
 -If your local @code{nntp} server doesn't allow posting, for some reason
 -or other, you can post using one of the numerous mail-to-news gateways.
 -The @code{nngateway} back end provides the interface.
 +When evaluating each of these predicates, the named constant will be
 +bound to the value determined by calling
 +@code{gnus-agent-find-parameter} on the appropriate parameter.  For
 +example, gnus-agent-short-article will be bound to
 +@code{(gnus-agent-find-parameter group 'agent-short-article)}.  This
 +means that you can specify a predicate in your category then tune that
 +predicate to individual groups.
  
 -Note that you can't read anything from this back end---it can only be
 -used to post with.
 +@table @code
 +@item short
 +True if the article is shorter than @code{gnus-agent-short-article}
 +lines; default 100.
  
 -Server variables:
 +@item long
 +True if the article is longer than @code{gnus-agent-long-article}
 +lines; default 200.
  
 -@table @code
 -@item nngateway-address
 -@vindex nngateway-address
 -This is the address of the mail-to-news gateway.
 +@item low
 +True if the article has a download score less than
 +@code{gnus-agent-low-score}; default 0.
  
 -@item nngateway-header-transformation
 -@vindex nngateway-header-transformation
 -News headers often have to be transformed in some odd way or other
 -for the mail-to-news gateway to accept it.  This variable says what
 -transformation should be called, and defaults to
 -@code{nngateway-simple-header-transformation}.  The function is called
 -narrowed to the headers to be transformed and with one parameter---the
 -gateway address.
 +@item high
 +True if the article has a download score greater than
 +@code{gnus-agent-high-score}; default 0.
  
 -This default function just inserts a new @code{To} header based on the
 -@code{Newsgroups} header and the gateway address.
 -For instance, an article with this @code{Newsgroups} header:
 +@item spam
 +True if the Gnus Agent guesses that the article is spam.  The
 +heuristics may change over time, but at present it just computes a
 +checksum and sees whether articles match.
  
 -@example
 -Newsgroups: alt.religion.emacs
 -@end example
 +@item true
 +Always true.
  
 -will get this @code{To} header inserted:
 +@item false
 +Always false.
 +@end table
  
 -@example
 -To: alt-religion-emacs@@GATEWAY
 -@end example
 +If you want to create your own predicate function, here's what you have
 +to know:  The functions are called with no parameters, but the
 +@code{gnus-headers} and @code{gnus-score} dynamic variables are bound to
 +useful values.
  
 -The following pre-defined functions exist:
 +For example, you could decide that you don't want to download articles
 +that were posted more than a certain number of days ago (e.g. posted
 +more than @code{gnus-agent-expire-days} ago) you might write a function
 +something along the lines of the following:
  
 -@findex nngateway-simple-header-transformation
 -@table @code
 +@lisp
 +(defun my-article-old-p ()
 +  "Say whether an article is old."
 +  (< (time-to-days (date-to-time (mail-header-date gnus-headers)))
 +     (- (time-to-days (current-time)) gnus-agent-expire-days)))
 +@end lisp
  
 -@item nngateway-simple-header-transformation
 -Creates a @code{To} header that looks like
 -@var{newsgroup}@@@code{nngateway-address}.
 +with the predicate then defined as:
  
 -@findex nngateway-mail2news-header-transformation
 +@lisp
 +(not my-article-old-p)
 +@end lisp
  
 -@item nngateway-mail2news-header-transformation
 -Creates a @code{To} header that looks like
 -@code{nngateway-address}.
 -@end table
 +or you could append your predicate to the predefined
 +@code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or
 +wherever.
  
 -@end table
 +@lisp
 +(require 'gnus-agent)
 +(setq  gnus-category-predicate-alist
 +  (append gnus-category-predicate-alist
 +         '((old . my-article-old-p))))
 +@end lisp
  
 -Here's an example:
 +and simply specify your predicate as:
  
  @lisp
 -(setq gnus-post-method
 -      '(nngateway
 -        "mail2news@@replay.com"
 -        (nngateway-header-transformation
 -         nngateway-mail2news-header-transformation)))
 +(not old)
  @end lisp
  
 -So, to use this, simply say something like:
 +If/when using something like the above, be aware that there are many
 +misconfigured systems/mailers out there and so an article's date is not
 +always a reliable indication of when it was posted.  Hell, some people
 +just don't give a damn.
 +
 +The above predicates apply to @emph{all} the groups which belong to the
 +category.  However, if you wish to have a specific predicate for an
 +individual group within a category, or you're just too lazy to set up a
 +new category, you can enter a group's individual predicate in its group
 +parameters like so:
  
  @lisp
 -(setq gnus-post-method '(nngateway "GATEWAY.ADDRESS"))
 +(agent-predicate . short)
  @end lisp
  
 +This is the group/topic parameter equivalent of the agent category default.
 +Note that when specifying a single word predicate like this, the
 +@code{agent-predicate} specification must be in dotted pair notation.
  
 +The equivalent of the longer example from above would be:
  
 -@node Combined Groups
 -@section Combined Groups
 +@lisp
 +(agent-predicate or high (and (not low) (not long)))
 +@end lisp
  
 -Gnus allows combining a mixture of all the other group types into bigger
 -groups.
 +The outer parenthesis required in the category specification are not
 +entered here as, not being in dotted pair notation, the value of the
 +predicate is assumed to be a list.
  
 -@menu
 -* Virtual Groups::              Combining articles from many groups.
 -* Kibozed Groups::              Looking through parts of the newsfeed for articles.
 -@end menu
  
 +Now, the syntax of the download score is the same as the syntax of
 +normal score files, except that all elements that require actually
 +seeing the article itself are verboten.  This means that only the
 +following headers can be scored on: @code{Subject}, @code{From},
 +@code{Date}, @code{Message-ID}, @code{References}, @code{Chars},
 +@code{Lines}, and @code{Xref}.
  
 -@node Virtual Groups
 -@subsection Virtual Groups
 -@cindex nnvirtual
 -@cindex virtual groups
 -@cindex merging groups
 +As with predicates, the specification of the @code{download score rule}
 +to use in respect of a group can be in either the category definition if
 +it's to be applicable to all groups in therein, or a group's parameters
 +if it's to be specific to that group.
  
 -An @dfn{nnvirtual group} is really nothing more than a collection of
 -other groups.
 +In both of these places the @code{download score rule} can take one of
 +three forms:
  
 -For instance, if you are tired of reading many small groups, you can
 -put them all in one big group, and then grow tired of reading one
 -big, unwieldy group.  The joys of computing!
 +@enumerate
 +@item
 +Score rule
  
 -You specify @code{nnvirtual} as the method.  The address should be a
 -regexp to match component groups.
 +This has the same syntax as a normal Gnus score file except only a
 +subset of scoring keywords are available as mentioned above.
  
 -All marks in the virtual group will stick to the articles in the
 -component groups.  So if you tick an article in a virtual group, the
 -article will also be ticked in the component group from whence it
 -came.  (And vice versa---marks from the component groups will also be
 -shown in the virtual group.).  To create an empty virtual group, run
 -@kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer
 -and edit the method regexp with @kbd{M-e}
 -(@code{gnus-group-edit-group-method})
 +example:
 +
 +@itemize @bullet
 +@item
 +Category specification
 +
 +@lisp
 +(("from"
 +       ("Lars Ingebrigtsen" 1000000 nil s))
 +("lines"
 +       (500 -100 nil <)))
 +@end lisp
  
 -Here's an example @code{nnvirtual} method that collects all Andrea Dworkin
 -newsgroups into one, big, happy newsgroup:
 +@item
 +Group/Topic Parameter specification
  
  @lisp
 -(nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*")
 +(agent-score ("from"
 +                   ("Lars Ingebrigtsen" 1000000 nil s))
 +             ("lines"
 +                   (500 -100 nil <)))
  @end lisp
  
 -The component groups can be native or foreign; everything should work
 -smoothly, but if your computer explodes, it was probably my fault.
 -
 -Collecting the same group from several servers might actually be a good
 -idea if users have set the Distribution header to limit distribution.
 -If you would like to read @samp{soc.motss} both from a server in Japan
 -and a server in Norway, you could use the following as the group regexp:
 +Again, note the omission of the outermost parenthesis here.
 +@end itemize
  
 -@example
 -"^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$"
 -@end example
 +@item
 +Agent score file
  
 -(Remember, though, that if you're creating the group with @kbd{G m}, you
 -shouldn't double the backslashes, and you should leave off the quote
 -characters at the beginning and the end of the string.)
 +These score files must @emph{only} contain the permitted scoring
 +keywords stated above.
  
 -This should work kinda smoothly---all articles from both groups should
 -end up in this one, and there should be no duplicates.  Threading (and
 -the rest) will still work as usual, but there might be problems with the
 -sequence of articles.  Sorting on date might be an option here
 -(@pxref{Selecting a Group}).
 +example:
  
 -One limitation, however---all groups included in a virtual
 -group have to be alive (i.e., subscribed or unsubscribed).  Killed or
 -zombie groups can't be component groups for @code{nnvirtual} groups.
 +@itemize @bullet
 +@item
 +Category specification
  
 -@vindex nnvirtual-always-rescan
 -If the @code{nnvirtual-always-rescan} variable is non-@code{nil} (which
 -is the default), @code{nnvirtual} will always scan groups for unread
 -articles when entering a virtual group.  If this variable is @code{nil}
 -and you read articles in a component group after the virtual group has
 -been activated, the read articles from the component group will show up
 -when you enter the virtual group.  You'll also see this effect if you
 -have two virtual groups that have a component group in common.  If
 -that's the case, you should set this variable to @code{t}.  Or you can
 -just tap @code{M-g} on the virtual group every time before you enter
 -it---it'll have much the same effect.
 +@lisp
 +("~/News/agent.SCORE")
 +@end lisp
  
 -@code{nnvirtual} can have both mail and news groups as component groups.
 -When responding to articles in @code{nnvirtual} groups, @code{nnvirtual}
 -has to ask the back end of the component group the article comes from
 -whether it is a news or mail back end.  However, when you do a @kbd{^},
 -there is typically no sure way for the component back end to know this,
 -and in that case @code{nnvirtual} tells Gnus that the article came from a
 -not-news back end.  (Just to be on the safe side.)
 +or perhaps
  
 -@kbd{C-c C-n} in the message buffer will insert the @code{Newsgroups}
 -line from the article you respond to in these cases.
 +@lisp
 +("~/News/agent.SCORE" "~/News/agent.group.SCORE")
 +@end lisp
  
 -@code{nnvirtual} groups do not inherit anything but articles and marks
 -from component groups---group parameters, for instance, are not
 -inherited.
 +@item
 +Group Parameter specification
  
 +@lisp
 +(agent-score "~/News/agent.SCORE")
 +@end lisp
  
 -@node Kibozed Groups
 -@subsection Kibozed Groups
 -@cindex nnkiboze
 -@cindex kibozing
 +Additional score files can be specified as above.  Need I say anything
 +about parenthesis?
 +@end itemize
  
 -@dfn{Kibozing} is defined by the @acronym{OED} as ``grepping through
 -(parts of) the news feed''.  @code{nnkiboze} is a back end that will
 -do this for you.  Oh joy!  Now you can grind any @acronym{NNTP} server
 -down to a halt with useless requests!  Oh happiness!
 +@item
 +Use @code{normal} score files
  
 -@kindex G k (Group)
 -To create a kibozed group, use the @kbd{G k} command in the group
 -buffer.
 +If you don't want to maintain two sets of scoring rules for a group, and
 +your desired @code{downloading} criteria for a group are the same as your
 +@code{reading} criteria then you can tell the agent to refer to your
 +@code{normal} score files when deciding what to download.
  
 -The address field of the @code{nnkiboze} method is, as with
 -@code{nnvirtual}, a regexp to match groups to be ``included'' in the
 -@code{nnkiboze} group.  That's where most similarities between
 -@code{nnkiboze} and @code{nnvirtual} end.
 +These directives in either the category definition or a group's
 +parameters will cause the agent to read in all the applicable score
 +files for a group, @emph{filtering out} those sections that do not
 +relate to one of the permitted subset of scoring keywords.
  
 -In addition to this regexp detailing component groups, an
 -@code{nnkiboze} group must have a score file to say what articles are
 -to be included in the group (@pxref{Scoring}).
 +@itemize @bullet
 +@item
 +Category Specification
  
 -@kindex M-x nnkiboze-generate-groups
 -@findex nnkiboze-generate-groups
 -You must run @kbd{M-x nnkiboze-generate-groups} after creating the
 -@code{nnkiboze} groups you want to have.  This command will take time.
 -Lots of time.  Oodles and oodles of time.  Gnus has to fetch the
 -headers from all the articles in all the component groups and run them
 -through the scoring process to determine if there are any articles in
 -the groups that are to be part of the @code{nnkiboze} groups.
 +@lisp
 +file
 +@end lisp
  
 -Please limit the number of component groups by using restrictive
 -regexps.  Otherwise your sysadmin may become annoyed with you, and the
 -@acronym{NNTP} site may throw you off and never let you back in again.
 -Stranger things have happened.
 +@item
 +Group Parameter specification
  
 -@code{nnkiboze} component groups do not have to be alive---they can be dead,
 -and they can be foreign.  No restrictions.
 +@lisp
 +(agent-score . file)
 +@end lisp
 +@end itemize
 +@end enumerate
  
 -@vindex nnkiboze-directory
 -The generation of an @code{nnkiboze} group means writing two files in
 -@code{nnkiboze-directory}, which is @file{~/News/kiboze/} by default.
 -One contains the @acronym{NOV} header lines for all the articles in
 -the group, and the other is an additional @file{.newsrc} file to store
 -information on what groups have been searched through to find
 -component articles.
 +@node Category Buffer
 +@subsubsection Category Buffer
  
 -Articles marked as read in the @code{nnkiboze} group will have
 -their @acronym{NOV} lines removed from the @acronym{NOV} file.
 +You'd normally do all category maintenance from the category buffer.
 +When you enter it for the first time (with the @kbd{J c} command from
 +the group buffer), you'll only see the @code{default} category.
  
 +The following commands are available in this buffer:
  
 -@node Email Based Diary
 -@section Email Based Diary
 -@cindex diary
 -@cindex email based diary
 -@cindex calendar
 +@table @kbd
 +@item q
 +@kindex q (Category)
 +@findex gnus-category-exit
 +Return to the group buffer (@code{gnus-category-exit}).
  
 -This section describes a special mail back end called @code{nndiary},
 -and its companion library @code{gnus-diary}.  It is ``special'' in the
 -sense that it is not meant to be one of the standard alternatives for
 -reading mail with Gnus.  See @ref{Choosing a Mail Back End} for that.
 -Instead, it is used to treat @emph{some} of your mails in a special way,
 -namely, as event reminders.
 +@item e
 +@kindex e (Category)
 +@findex gnus-category-customize-category
 +Use a customization buffer to set all of the selected category's
 +parameters at one time (@code{gnus-category-customize-category}).
  
 -Here is a typical scenario:
 +@item k
 +@kindex k (Category)
 +@findex gnus-category-kill
 +Kill the current category (@code{gnus-category-kill}).
  
 -@itemize @bullet
 -@item
 -You've got a date with Andy Mc Dowell or Bruce Willis (select according
 -to your sexual preference) in one month.  You don't want to forget it.
 -@item
 -So you send a ``reminder'' message (actually, a diary one) to yourself.
 -@item
 -You forget all about it and keep on getting and reading new mail, as usual.
 -@item
 -From time to time, as you type `g' in the group buffer and as the date
 -is getting closer, the message will pop up again to remind you of your
 -appointment, just as if it were new and unread.
 -@item
 -Read your ``new'' messages, this one included, and start dreaming again
 -of the night you're gonna have.
 -@item
 -Once the date is over (you actually fell asleep just after dinner), the
 -message will be automatically deleted if it is marked as expirable.
 -@end itemize
 +@item c
 +@kindex c (Category)
 +@findex gnus-category-copy
 +Copy the current category (@code{gnus-category-copy}).
  
 -The Gnus Diary back end has the ability to handle regular appointments
 -(that wouldn't ever be deleted) as well as punctual ones, operates as a
 -real mail back end and is configurable in many ways.  All of this is
 -explained in the sections below.
 +@item a
 +@kindex a (Category)
 +@findex gnus-category-add
 +Add a new category (@code{gnus-category-add}).
  
 -@menu
 -* The NNDiary Back End::        Basic setup and usage.
 -* The Gnus Diary Library::      Utility toolkit on top of nndiary.
 -* Sending or Not Sending::      A final note on sending diary messages.
 -@end menu
 +@item p
 +@kindex p (Category)
 +@findex gnus-category-edit-predicate
 +Edit the predicate of the current category
 +(@code{gnus-category-edit-predicate}).
  
 +@item g
 +@kindex g (Category)
 +@findex gnus-category-edit-groups
 +Edit the list of groups belonging to the current category
 +(@code{gnus-category-edit-groups}).
  
 -@node The NNDiary Back End
 -@subsection The NNDiary Back End
 -@cindex nndiary
 -@cindex the nndiary back end
 +@item s
 +@kindex s (Category)
 +@findex gnus-category-edit-score
 +Edit the download score rule of the current category
 +(@code{gnus-category-edit-score}).
  
 -@code{nndiary} is a back end very similar to @code{nnml} (@pxref{Mail
 -Spool}).  Actually, it could appear as a mix of @code{nnml} and
 -@code{nndraft}.  If you know @code{nnml}, you're already familiar with
 -the message storing scheme of @code{nndiary}: one file per message, one
 -directory per group.
 +@item l
 +@kindex l (Category)
 +@findex gnus-category-list
 +List all the categories (@code{gnus-category-list}).
 +@end table
  
 -  Before anything, there is one requirement to be able to run
 -@code{nndiary} properly: you @emph{must} use the group timestamp feature
 -of Gnus.  This adds a timestamp to each group's parameters.  @ref{Group
 -Timestamp} to see how it's done.
  
 -@menu
 -* Diary Messages::              What makes a message valid for nndiary.
 -* Running NNDiary::             NNDiary has two modes of operation.
 -* Customizing NNDiary::         Bells and whistles.
 -@end menu
 +@node Category Variables
 +@subsubsection Category Variables
  
 -@node Diary Messages
 -@subsubsection Diary Messages
 -@cindex nndiary messages
 -@cindex nndiary mails
 +@table @code
 +@item gnus-category-mode-hook
 +@vindex gnus-category-mode-hook
 +Hook run in category buffers.
  
 -@code{nndiary} messages are just normal ones, except for the mandatory
 -presence of 7 special headers.  These headers are of the form
 -@code{X-Diary-<something>}, @code{<something>} being one of
 -@code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year},
 -@code{Time-Zone} and @code{Dow}.  @code{Dom} means ``Day of Month'', and
 -@code{dow} means ``Day of Week''.  These headers actually behave like
 -crontab specifications and define the event date(s):
 +@item gnus-category-line-format
 +@vindex gnus-category-line-format
 +Format of the lines in the category buffer (@pxref{Formatting
 +Variables}).  Valid elements are:
  
 -@itemize @bullet
 -@item
 -For all headers except the @code{Time-Zone} one, a header value is
 -either a star (meaning all possible values), or a list of fields
 -(separated by a comma).
 -@item
 -A field is either an integer, or a range.
 -@item
 -A range is two integers separated by a dash.
 -@item
 -Possible integer values are 0--59 for @code{Minute}, 0--23 for
 -@code{Hour}, 1--31 for @code{Dom}, 1--12 for @code{Month}, above 1971
 -for @code{Year} and 0--6 for @code{Dow} (0 meaning Sunday).
 -@item
 -As a special case, a star in either @code{Dom} or @code{Dow} doesn't
 -mean ``all possible values'', but ``use only the other field''.  Note
 -that if both are star'ed, the use of either one gives the same result.
 -@item
 -The @code{Time-Zone} header is special in that it can only have one
 -value (@code{GMT}, for instance).  A star doesn't mean ``all possible
 -values'' (because it makes no sense), but ``the current local time
 -zone''.  Most of the time, you'll be using a star here.  However, for a
 -list of available time zone values, see the variable
 -@code{nndiary-headers}.
 -@end itemize
 +@table @samp
 +@item c
 +The name of the category.
  
 -As a concrete example, here are the diary headers to add to your message
 -for specifying ``Each Monday and each 1st of month, at 12:00, 20:00,
 -21:00, 22:00, 23:00 and 24:00, from 1999 to 2010'' (I'll let you find
 -what to do then):
 +@item g
 +The number of groups in the category.
 +@end table
  
 -@example
 -X-Diary-Minute: 0
 -X-Diary-Hour: 12, 20-24
 -X-Diary-Dom: 1
 -X-Diary-Month: *
 -X-Diary-Year: 1999-2010
 -X-Diary-Dow: 1
 -X-Diary-Time-Zone: *
 -@end example
 +@item gnus-category-mode-line-format
 +@vindex gnus-category-mode-line-format
 +Format of the category mode line (@pxref{Mode Line Formatting}).
  
 -@node Running NNDiary
 -@subsubsection Running NNDiary
 -@cindex running nndiary
 -@cindex nndiary operation modes
 +@item gnus-agent-short-article
 +@vindex gnus-agent-short-article
 +Articles that have fewer lines than this are short.  Default 100.
  
 -@code{nndiary} has two modes of operation: ``traditional'' (the default)
 -and ``autonomous''.  In traditional mode, @code{nndiary} does not get new
 -mail by itself.  You have to move (@kbd{B m}) or copy (@kbd{B c}) mails
 -from your primary mail back end to nndiary groups in order to handle them
 -as diary messages.  In autonomous mode, @code{nndiary} retrieves its own
 -mail and handles it independently from your primary mail back end.
 +@item gnus-agent-long-article
 +@vindex gnus-agent-long-article
 +Articles that have more lines than this are long.  Default 200.
  
 -One should note that Gnus is not inherently designed to allow several
 -``master'' mail back ends at the same time.  However, this does make
 -sense with @code{nndiary}: you really want to send and receive diary
 -messages to your diary groups directly.  So, @code{nndiary} supports
 -being sort of a ``second primary mail back end'' (to my knowledge, it is
 -the only back end offering this feature).  However, there is a limitation
 -(which I hope to fix some day): respooling doesn't work in autonomous
 -mode.
 +@item gnus-agent-low-score
 +@vindex gnus-agent-low-score
 +Articles that have a score lower than this have a low score.  Default
 +0.
  
 -In order to use @code{nndiary} in autonomous mode, you have several
 -things to do:
 +@item gnus-agent-high-score
 +@vindex gnus-agent-high-score
 +Articles that have a score higher than this have a high score.  Default
 +0.
  
 -@itemize @bullet
 -@item
 -Allow @code{nndiary} to retrieve new mail by itself.  Put the following
 -line in your @file{~/.gnus.el} file:
 +@item gnus-agent-expire-days
 +@vindex gnus-agent-expire-days
 +The number of days that a @samp{read} article must stay in the agent's
 +local disk before becoming eligible for expiration (While the name is
 +the same, this doesn't mean expiring the article on the server.  It
 +just means deleting the local copy of the article).  What is also
 +important to understand is that the counter starts with the time the
 +article was written to the local disk and not the time the article was
 +read.
 +Default 7.
  
 -@lisp
 -(setq nndiary-get-new-mail t)
 -@end lisp
 -@item
 -You must arrange for diary messages (those containing @code{X-Diary-*}
 -headers) to be split in a private folder @emph{before} Gnus treat them.
 -Again, this is needed because Gnus cannot (yet ?) properly handle
 -multiple primary mail back ends.  Getting those messages from a separate
 -source will compensate this misfeature to some extent.
 +@item gnus-agent-enable-expiration
 +@vindex gnus-agent-enable-expiration
 +Determines whether articles in a group are, by default, expired or
 +retained indefinitely.  The default is @code{ENABLE} which means that
 +you'll have to disable expiration when desired.  On the other hand,
 +you could set this to @code{DISABLE}.  In that case, you would then
 +have to enable expiration in selected groups.
  
 -As an example, here's my procmailrc entry to store diary files in
 -@file{~/.nndiary} (the default @code{nndiary} mail source file):
 +@end table
  
 -@example
 -:0 HD :
 -* ^X-Diary
 -.nndiary
 -@end example
 -@end itemize
  
 -Once this is done, you might want to customize the following two options
 -that affect the diary mail retrieval and splitting processes:
 +@node Agent Commands
 +@subsection Agent Commands
 +@findex gnus-agent-toggle-plugged
 +@kindex J j (Agent)
  
 -@defvar nndiary-mail-sources
 -This is the diary-specific replacement for the standard
 -@code{mail-sources} variable.  It obeys the same syntax, and defaults to
 -@code{(file :path "~/.nndiary")}.
 -@end defvar
 +All the Gnus Agent commands are on the @kbd{J} submap.  The @kbd{J j}
 +(@code{gnus-agent-toggle-plugged}) command works in all modes, and
 +toggles the plugged/unplugged state of the Gnus Agent.
  
 -@defvar nndiary-split-methods
 -This is the diary-specific replacement for the standard
 -@code{nnmail-split-methods} variable.  It obeys the same syntax.
 -@end defvar
  
 -  Finally, you may add a permanent @code{nndiary} virtual server
 -(something like @code{(nndiary "diary")} should do) to your
 -@code{gnus-secondary-select-methods}.
 +@menu
 +* Group Agent Commands::        Configure groups and fetch their contents.
 +* Summary Agent Commands::      Manually select then fetch specific articles.
 +* Server Agent Commands::       Select the servers that are supported by the agent.
 +@end menu
  
 -  Hopefully, almost everything (see the TODO section in
 -@file{nndiary.el}) will work as expected when you restart Gnus: in
 -autonomous mode, typing @kbd{g} and @kbd{M-g} in the group buffer, will
 -also get your new diary mails and split them according to your
 -diary-specific rules, @kbd{F} will find your new diary groups etc.
  
 -@node Customizing NNDiary
 -@subsubsection Customizing NNDiary
 -@cindex customizing nndiary
 -@cindex nndiary customization
  
 -Now that @code{nndiary} is up and running, it's time to customize it.
 -The custom group is called @code{nndiary} (no, really ?!).  You should
 -browse it to figure out which options you'd like to tweak.  The following
 -two variables are probably the only ones you will want to change:
  
 -@defvar nndiary-reminders
 -This is the list of times when you want to be reminded of your
 -appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
 -before and that's it).  Remember that ``being reminded'' means that the
 -diary message will pop up as brand new and unread again when you get new
 -mail.
 -@end defvar
 +@node Group Agent Commands
 +@subsubsection Group Agent Commands
  
 -@defvar nndiary-week-starts-on-monday
 -Rather self-explanatory.  Otherwise, Sunday is assumed (this is the
 -default).
 -@end defvar
 +@table @kbd
 +@item J u
 +@kindex J u (Agent Group)
 +@findex gnus-agent-fetch-groups
 +Fetch all eligible articles in the current group
 +(@code{gnus-agent-fetch-groups}).
  
 +@item J c
 +@kindex J c (Agent Group)
 +@findex gnus-enter-category-buffer
 +Enter the Agent category buffer (@code{gnus-enter-category-buffer}).
  
 -@node The Gnus Diary Library
 -@subsection The Gnus Diary Library
 -@cindex gnus-diary
 -@cindex the gnus diary library
 +@item J s
 +@kindex J s (Agent Group)
 +@findex gnus-agent-fetch-session
 +Fetch all eligible articles in all groups
 +(@code{gnus-agent-fetch-session}).
  
 -Using @code{nndiary} manually (I mean, writing the headers by hand and
 -so on) would be rather boring.  Fortunately, there is a library called
 -@code{gnus-diary} written on top of @code{nndiary}, that does many
 -useful things for you.
 +@item J S
 +@kindex J S (Agent Group)
 +@findex gnus-group-send-queue
 +Send all sendable messages in the queue group
 +(@code{gnus-group-send-queue}).  @xref{Drafts}.
  
 -  In order to use it, add the following line to your @file{~/.gnus.el} file:
 +@item J a
 +@kindex J a (Agent Group)
 +@findex gnus-agent-add-group
 +Add the current group to an Agent category
 +(@code{gnus-agent-add-group}).  This command understands the
 +process/prefix convention (@pxref{Process/Prefix}).
  
 -@lisp
 -(require 'gnus-diary)
 -@end lisp
 +@item J r
 +@kindex J r (Agent Group)
 +@findex gnus-agent-remove-group
 +Remove the current group from its category, if any
 +(@code{gnus-agent-remove-group}).  This command understands the
 +process/prefix convention (@pxref{Process/Prefix}).
  
 -  Also, you shouldn't use any @code{gnus-user-format-function-[d|D]}
 -(@pxref{Summary Buffer Lines}).  @code{gnus-diary} provides both of these
 -(sorry if you used them before).
 +@item J Y
 +@kindex J Y (Agent Group)
 +@findex gnus-agent-synchronize-flags
 +Synchronize flags changed while unplugged with remote server, if any.
  
  
 -@menu
 -* Diary Summary Line Format::           A nicer summary buffer line format.
 -* Diary Articles Sorting::              A nicer way to sort messages.
 -* Diary Headers Generation::            Not doing it manually.
 -* Diary Group Parameters::              Not handling them manually.
 -@end menu
 +@end table
  
 -@node Diary Summary Line Format
 -@subsubsection Diary Summary Line Format
 -@cindex diary summary buffer line
 -@cindex diary summary line format
  
 -Displaying diary messages in standard summary line format (usually
 -something like @samp{From Joe: Subject}) is pretty useless.  Most of
 -the time, you're the one who wrote the message, and you mostly want to
 -see the event's date.
 +@node Summary Agent Commands
 +@subsubsection Summary Agent Commands
  
 -  @code{gnus-diary} provides two supplemental user formats to be used in
 -summary line formats.  @code{D} corresponds to a formatted time string
 -for the next occurrence of the event (e.g. ``Sat, Sep 22 01, 12:00''),
 -while @code{d} corresponds to an approximative remaining time until the
 -next occurrence of the event (e.g. ``in 6 months, 1 week'').
 +@table @kbd
 +@item J #
 +@kindex J # (Agent Summary)
 +@findex gnus-agent-mark-article
 +Mark the article for downloading (@code{gnus-agent-mark-article}).
  
 -  For example, here's how Joe's birthday is displayed in my
 -@code{nndiary+diary:birthdays} summary buffer (note that the message is
 -expirable, but will never be deleted, as it specifies a periodic event):
 +@item J M-#
 +@kindex J M-# (Agent Summary)
 +@findex gnus-agent-unmark-article
 +Remove the downloading mark from the article
 +(@code{gnus-agent-unmark-article}).
  
 -@example
 -   E  Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week)
 -@end example
 +@cindex %
 +@item @@
 +@kindex @@ (Agent Summary)
 +@findex gnus-agent-toggle-mark
 +Toggle whether to download the article
 +(@code{gnus-agent-toggle-mark}).  The download mark is @samp{%} by
 +default.
  
 -In order to get something like the above, you would normally add the
 -following line to your diary groups'parameters:
 +@item J c
 +@kindex J c (Agent Summary)
 +@findex gnus-agent-catchup
 +Mark all articles as read (@code{gnus-agent-catchup}) that are neither cached, downloaded, nor downloadable.
  
 -@lisp
 -(gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n")
 -@end lisp
 +@item J S
 +@kindex J S (Agent Summary)
 +@findex gnus-agent-fetch-group
 +Download all eligible (@pxref{Agent Categories}) articles in this group.
 +(@code{gnus-agent-fetch-group}).
  
 -However, @code{gnus-diary} does it automatically (@pxref{Diary Group
 -Parameters}).  You can however customize the provided summary line format
 -with the following user options:
 +@item J s
 +@kindex J s (Agent Summary)
 +@findex gnus-agent-summary-fetch-series
 +Download all processable articles in this group.
 +(@code{gnus-agent-summary-fetch-series}).
  
 -@defvar gnus-diary-summary-line-format
 -Defines the summary line format used for diary groups (@pxref{Summary
 -Buffer Lines}).  @code{gnus-diary} uses it to automatically update the
 -diary groups'parameters.
 -@end defvar
 +@item J u
 +@kindex J u (Agent Summary)
 +@findex gnus-agent-summary-fetch-group
 +Download all downloadable articles in the current group
 +(@code{gnus-agent-summary-fetch-group}).
  
 -@defvar gnus-diary-time-format
 -Defines the format to display dates in diary summary buffers.  This is
 -used by the @code{D} user format.  See the docstring for details.
 -@end defvar
 +@end table
  
 -@defvar gnus-diary-delay-format-function
 -Defines the format function to use for displaying delays (remaining
 -times) in diary summary buffers.  This is used by the @code{d} user
 -format.  There are currently built-in functions for English and French;
 -you can also define your own.  See the docstring for details.
 -@end defvar
  
 -@node Diary Articles Sorting
 -@subsubsection Diary Articles Sorting
 -@cindex diary articles sorting
 -@cindex diary summary lines sorting
 -@findex gnus-summary-sort-by-schedule
 -@findex gnus-thread-sort-by-schedule
 -@findex gnus-article-sort-by-schedule
 +@node Server Agent Commands
 +@subsubsection Server Agent Commands
  
 -@code{gnus-diary} provides new sorting functions (@pxref{Sorting the
 -Summary Buffer} ) called @code{gnus-summary-sort-by-schedule},
 -@code{gnus-thread-sort-by-schedule} and
 -@code{gnus-article-sort-by-schedule}.  These functions let you organize
 -your diary summary buffers from the closest event to the farthest one.
 +@table @kbd
 +@item J a
 +@kindex J a (Agent Server)
 +@findex gnus-agent-add-server
 +Add the current server to the list of servers covered by the Gnus Agent
 +(@code{gnus-agent-add-server}).
  
 -@code{gnus-diary} automatically installs
 -@code{gnus-summary-sort-by-schedule} as a menu item in the summary
 -buffer's ``sort'' menu, and the two others as the primary (hence
 -default) sorting functions in the group parameters (@pxref{Diary Group
 -Parameters}).
 +@item J r
 +@kindex J r (Agent Server)
 +@findex gnus-agent-remove-server
 +Remove the current server from the list of servers covered by the Gnus
 +Agent (@code{gnus-agent-remove-server}).
  
 -@node Diary Headers Generation
 -@subsubsection Diary Headers Generation
 -@cindex diary headers generation
 -@findex gnus-diary-check-message
 +@end table
  
 -@code{gnus-diary} provides a function called
 -@code{gnus-diary-check-message} to help you handle the @code{X-Diary-*}
 -headers.  This function ensures that the current message contains all the
 -required diary headers, and prompts you for values or corrections if
 -needed.
  
 -  This function is hooked into the @code{nndiary} back end, so that
 -moving or copying an article to a diary group will trigger it
 -automatically.  It is also bound to @kbd{C-c C-f d} in
 -@code{message-mode} and @code{article-edit-mode} in order to ease the
 -process of converting a usual mail to a diary one.
 +@node Agent Visuals
 +@subsection Agent Visuals
  
 -  This function takes a prefix argument which will force prompting of
 -all diary headers, regardless of their presence or validity.  That way,
 -you can very easily reschedule an already valid diary message, for
 -instance.
 +If you open a summary while unplugged and, Gnus knows from the group's
 +active range that there are more articles than the headers currently
 +stored in the Agent, you may see some articles whose subject looks
 +something like @samp{[Undownloaded article #####]}.  These are
 +placeholders for the missing headers.  Aside from setting a mark,
 +there is not much that can be done with one of these placeholders.
 +When Gnus finally gets a chance to fetch the group's headers, the
 +placeholders will automatically be replaced by the actual headers.
 +You can configure the summary buffer's maneuvering to skip over the
 +placeholders if you care (See @code{gnus-auto-goto-ignores}).
  
 -@node Diary Group Parameters
 -@subsubsection Diary Group Parameters
 -@cindex diary group parameters
 +While it may be obvious to all, the only headers and articles
 +available while unplugged are those headers and articles that were
 +fetched into the Agent while previously plugged.  To put it another
 +way, ``If you forget to fetch something while plugged, you might have a
 +less than satisfying unplugged session''.  For this reason, the Agent
 +adds two visual effects to your summary buffer.  These effects display
 +the download status of each article so that you always know which
 +articles will be available when unplugged.
  
 -When you create a new diary group, or visit one, @code{gnus-diary}
 -automatically checks your group parameters and if needed, sets the
 -summary line format to the diary-specific value, installs the
 -diary-specific sorting functions, and also adds the different
 -@code{X-Diary-*} headers to the group's posting-style.  It is then easier
 -to send a diary message, because if you use @kbd{C-u a} or @kbd{C-u m}
 -on a diary group to prepare a message, these headers will be inserted
 -automatically (although not filled with proper values yet).
 +The first visual effect is the @samp{%O} spec.  If you customize
 +@code{gnus-summary-line-format} to include this specifier, you will add
 +a single character field that indicates an article's download status.
 +Articles that have been fetched into either the Agent or the Cache,
 +will display @code{gnus-downloaded-mark} (defaults to @samp{+}).  All
 +other articles will display @code{gnus-undownloaded-mark} (defaults to
 +@samp{-}).  If you open a group that has not been agentized, a space
 +(@samp{ }) will be displayed.
  
 -@node Sending or Not Sending
 -@subsection Sending or Not Sending
 +The second visual effect are the undownloaded faces.  The faces, there
 +are three indicating the article's score (low, normal, high), seem to
 +result in a love/hate response from many Gnus users.  The problem is
 +that the face selection is controlled by a list of condition tests and
 +face names (See @code{gnus-summary-highlight}).  Each condition is
 +tested in the order in which it appears in the list so early
 +conditions have precedence over later conditions.  All of this means
 +that, if you tick an undownloaded article, the article will continue
 +to be displayed in the undownloaded face rather than the ticked face.
  
 -Well, assuming you've read all of the above, here are two final notes on
 -mail sending with @code{nndiary}:
 +If you use the Agent as a cache (to avoid downloading the same article
 +each time you visit it or to minimize your connection time), the
 +undownloaded face will probably seem like a good idea.  The reason
 +being that you do all of our work (marking, reading, deleting) with
 +downloaded articles so the normal faces always appear.  For those
 +users using the agent to improve online performance by caching the NOV
 +database (most users since 5.10.2), the undownloaded faces may appear
 +to be an absolutely horrible idea.  The issue being that, since none
 +of their articles have been fetched into the Agent, all of the
 +normal faces will be obscured by the undownloaded faces.
  
 -@itemize @bullet
 -@item
 -@code{nndiary} is a @emph{real} mail back end.  You really send real diary
 -messsages for real.  This means for instance that you can give
 -appointments to anybody (provided they use Gnus and @code{nndiary}) by
 -sending the diary message to them as well.
 -@item
 -However, since @code{nndiary} also has a @code{request-post} method, you
 -can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the
 -message won't actually be sent; just stored locally in the group. This
 -comes in very handy for private appointments.
 -@end itemize
 +If you would like to use the undownloaded faces, you must enable the
 +undownloaded faces by setting the @code{agent-enable-undownloaded-faces}
 +group parameter to @code{t}.  This parameter, like all other agent
 +parameters, may be set on an Agent Category (@pxref{Agent Categories}),
 +a Group Topic (@pxref{Topic Parameters}), or an individual group
 +(@pxref{Group Parameters}).
  
 -@node Gnus Unplugged
 -@section Gnus Unplugged
 -@cindex offline
 -@cindex unplugged
 -@cindex agent
 -@cindex Gnus agent
 -@cindex Gnus unplugged
 +The one problem common to all users using the agent is how quickly it
 +can consume disk space.  If you using the agent on many groups, it is
 +even more difficult to effectively recover disk space.  One solution
 +is the @samp{%F} format available in @code{gnus-group-line-format}.
 +This format will display the actual disk space used by articles
 +fetched into both the agent and cache.  By knowing which groups use
 +the most space, users know where to focus their efforts when ``agent
 +expiring'' articles.
  
 -In olden times (ca. February '88), people used to run their newsreaders
 -on big machines with permanent connections to the net.  News transport
 -was dealt with by news servers, and all the newsreaders had to do was to
 -read news.  Believe it or not.
 +@node Agent as Cache
 +@subsection Agent as Cache
  
 -Nowadays most people read news and mail at home, and use some sort of
 -modem to connect to the net.  To avoid running up huge phone bills, it
 -would be nice to have a way to slurp down all the news and mail, hang up
 -the phone, read for several hours, and then upload any responses you
 -have to make.  And then you repeat the procedure.
 +When Gnus is plugged, it is not efficient to download headers or
 +articles from the server again, if they are already stored in the
 +Agent.  So, Gnus normally only downloads headers once, and stores them
 +in the Agent.  These headers are later used when generating the summary
 +buffer, regardless of whether you are plugged or unplugged.  Articles
 +are not cached in the Agent by default though (that would potentially
 +consume lots of disk space), but if you have already downloaded an
 +article into the Agent, Gnus will not download the article from the
 +server again but use the locally stored copy instead.
  
 -Of course, you can use news servers for doing this as well.  I've used
 -@code{inn} together with @code{slurp}, @code{pop} and @code{sendmail}
 -for some years, but doing that's a bore.  Moving the news server
 -functionality up to the newsreader makes sense if you're the only person
 -reading news on a machine.
 +If you so desire, you can configure the agent (see @code{gnus-agent-cache}
 +@pxref{Agent Variables}) to always download headers and articles while
 +plugged.  Gnus will almost certainly be slower, but it will be kept
 +synchronized with the server.  That last point probably won't make any
 +sense if you are using a nntp or nnimap back end.
  
 -Setting up Gnus as an ``offline'' newsreader is quite simple.  In
 -fact, you don't have to configure anything as the agent is now enabled
 -by default (@pxref{Agent Variables, gnus-agent}).
 +@node Agent Expiry
 +@subsection Agent Expiry
  
 -Of course, to use it as such, you have to learn a few new commands.
 +@vindex gnus-agent-expire-days
 +@findex gnus-agent-expire
 +@kindex M-x gnus-agent-expire
 +@kindex M-x gnus-agent-expire-group
 +@findex gnus-agent-expire-group
 +@cindex agent expiry
 +@cindex Gnus agent expiry
 +@cindex expiry, in Gnus agent
  
 -@menu
 -* Agent Basics::                How it all is supposed to work.
 -* Agent Categories::            How to tell the Gnus Agent what to download.
 -* Agent Commands::              New commands for all the buffers.
 -* Agent Visuals::               Ways that the agent may effect your summary buffer.
 -* Agent as Cache::              The Agent is a big cache too.
 -* Agent Expiry::                How to make old articles go away.
 -* Agent Regeneration::          How to recover from lost connections and other accidents.
 -* Agent and flags::             How the Agent maintains flags.
 -* Agent and IMAP::              How to use the Agent with @acronym{IMAP}.
 -* Outgoing Messages::           What happens when you post/mail something?
 -* Agent Variables::             Customizing is fun.
 -* Example Setup::               An example @file{~/.gnus.el} file for offline people.
 -* Batching Agents::             How to fetch news from a @code{cron} job.
 -* Agent Caveats::               What you think it'll do and what it does.
 -@end menu
 +The Agent back end, @code{nnagent}, doesn't handle expiry.  Well, at
 +least it doesn't handle it like other back ends.  Instead, there are
 +special @code{gnus-agent-expire} and @code{gnus-agent-expire-group}
 +commands that will expire all read articles that are older than
 +@code{gnus-agent-expire-days} days.  They can be run whenever you feel
 +that you're running out of space.  Neither are particularly fast or
 +efficient, and it's not a particularly good idea to interrupt them (with
 +@kbd{C-g} or anything else) once you've started one of them.
  
 +Note that other functions, e.g. @code{gnus-request-expire-articles},
 +might run @code{gnus-agent-expire} for you to keep the agent
 +synchronized with the group.
  
 -@node Agent Basics
 -@subsection Agent Basics
 +The agent parameter @code{agent-enable-expiration} may be used to
 +prevent expiration in selected groups.
 +
 +@vindex gnus-agent-expire-all
 +If @code{gnus-agent-expire-all} is non-@code{nil}, the agent
 +expiration commands will expire all articles---unread, read, ticked
 +and dormant.  If @code{nil} (which is the default), only read articles
 +are eligible for expiry, and unread, ticked and dormant articles will
 +be kept indefinitely.
  
 -First, let's get some terminology out of the way.
 +If you find that some articles eligible for expiry are never expired,
 +perhaps some Gnus Agent files are corrupted.  There's are special
 +commands, @code{gnus-agent-regenerate} and
 +@code{gnus-agent-regenerate-group}, to fix possible problems.
  
 -The Gnus Agent is said to be @dfn{unplugged} when you have severed the
 -connection to the net (and notified the Agent that this is the case).
 -When the connection to the net is up again (and Gnus knows this), the
 -Agent is @dfn{plugged}.
 +@node Agent Regeneration
 +@subsection Agent Regeneration
  
 -The @dfn{local} machine is the one you're running on, and which isn't
 -connected to the net continuously.
 +@cindex agent regeneration
 +@cindex Gnus agent regeneration
 +@cindex regeneration
  
 -@dfn{Downloading} means fetching things from the net to your local
 -machine.  @dfn{Uploading} is doing the opposite.
 +The local data structures used by @code{nnagent} may become corrupted
 +due to certain exceptional conditions.  When this happens,
 +@code{nnagent} functionality may degrade or even fail.  The solution
 +to this problem is to repair the local data structures by removing all
 +internal inconsistencies.
  
 -You know that Gnus gives you all the opportunity you'd ever want for
 -shooting yourself in the foot.  Some people call it flexibility.  Gnus
 -is also customizable to a great extent, which means that the user has a
 -say on how Gnus behaves.  Other newsreaders might unconditionally shoot
 -you in your foot, but with Gnus, you have a choice!
 +For example, if your connection to your server is lost while
 +downloaded articles into the agent, the local data structures will not
 +know about articles successfully downloaded prior to the connection
 +failure.  Running @code{gnus-agent-regenerate} or
 +@code{gnus-agent-regenerate-group} will update the data structures
 +such that you don't need to download these articles a second time.
  
 -Gnus is never really in plugged or unplugged state.  Rather, it applies
 -that state to each server individually.  This means that some servers
 -can be plugged while others can be unplugged.  Additionally, some
 -servers can be ignored by the Agent altogether (which means that
 -they're kinda like plugged always).
 +@findex gnus-agent-regenerate
 +@kindex M-x gnus-agent-regenerate
 +The command @code{gnus-agent-regenerate} will perform
 +@code{gnus-agent-regenerate-group} on every agentized group.  While
 +you can run @code{gnus-agent-regenerate} in any buffer, it is strongly
 +recommended that you first close all summary buffers.
  
 -So when you unplug the Agent and then wonder why is Gnus opening a
 -connection to the Net, the next step to do is to look whether all
 -servers are agentized.  If there is an unagentized server, you found
 -the culprit.
 +@findex gnus-agent-regenerate-group
 +@kindex M-x gnus-agent-regenerate-group
 +The command @code{gnus-agent-regenerate-group} uses the local copies
 +of individual articles to repair the local @acronym{NOV}(header) database.  It
 +then updates the internal data structures that document which articles
 +are stored locally.  An optional argument will mark articles in the
 +agent as unread.
  
 -Another thing is the @dfn{offline} state.  Sometimes, servers aren't
 -reachable.  When Gnus notices this, it asks you whether you want the
 -server to be switched to offline state.  If you say yes, then the
 -server will behave somewhat as if it was unplugged, except that Gnus
 -will ask you whether you want to switch it back online again.
 +@node Agent and flags
 +@subsection Agent and flags
  
 -Let's take a typical Gnus session using the Agent.
 +The Agent works with any Gnus back end including those, such as
 +nnimap, that store flags (read, ticked, etc) on the server.  Sadly,
 +the Agent does not actually know which backends keep their flags in
 +the backend server rather than in @file{.newsrc}.  This means that the
 +Agent, while unplugged or disconnected, will always record all changes
 +to the flags in its own files.
  
 -@itemize @bullet
 +When you plug back in, Gnus will then check to see if you have any
 +changed any flags and ask if you wish to synchronize these with the
 +server.  This behavior is customizable by @code{gnus-agent-synchronize-flags}.
  
 -@item
 -@findex gnus-unplugged
 -You start Gnus with @code{gnus-unplugged}.  This brings up the Gnus
 -Agent in a disconnected state.  You can read all the news that you have
 -already fetched while in this mode.
 +@vindex gnus-agent-synchronize-flags
 +If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
 +never automatically synchronize flags.  If it is @code{ask}, which is
 +the default, the Agent will check if you made any changes and if so
 +ask if you wish to synchronize these when you re-connect.  If it has
 +any other value, all flags will be synchronized automatically.
  
 -@item
 -You then decide to see whether any new news has arrived.  You connect
 -your machine to the net (using PPP or whatever), and then hit @kbd{J j}
 -to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail
 -as usual.  To check for new mail in unplugged mode (@pxref{Mail
 -Source Specifiers}).
 +If you do not wish to synchronize flags automatically when you
 +re-connect, you can do it manually with the
 +@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y}
 +in the group buffer.
  
 -@item
 -You can then read the new news immediately, or you can download the
 -news onto your local machine.  If you want to do the latter, you press
 -@kbd{g} to check if there are any new news and then @kbd{J s} to fetch
 -all the eligible articles in all the groups.  (To let Gnus know which
 -articles you want to download, @pxref{Agent Categories}).
 +Technical note: the synchronization algorithm does not work by ``pushing''
 +all local flags to the server, but rather by incrementally updated the
 +server view of flags by changing only those flags that were changed by
 +the user.  Thus, if you set one flag on an article, quit the group then
 +re-select the group and remove the flag; the flag will be set and
 +removed from the server when you ``synchronize''.  The queued flag
 +operations can be found in the per-server @code{flags} file in the Agent
 +directory.  It's emptied when you synchronize flags.
  
 -@item
 -After fetching the articles, you press @kbd{J j} to make Gnus become
 -unplugged again, and you shut down the PPP thing (or whatever).  And
 -then you read the news offline.
 +@node Agent and IMAP
 +@subsection Agent and IMAP
  
 -@item
 -And then you go to step 2.
 -@end itemize
 +The Agent works with any Gnus back end, including nnimap.  However,
 +since there are some conceptual differences between @acronym{NNTP} and
 +@acronym{IMAP}, this section (should) provide you with some information to
 +make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client.
  
 -Here are some things you should do the first time (or so) that you use
 -the Agent.
 +Some things are currently not implemented in the Agent that you'd might
 +expect from a disconnected @acronym{IMAP} client, including:
  
  @itemize @bullet
  
  @item
 -Decide which servers should be covered by the Agent.  If you have a mail
 -back end, it would probably be nonsensical to have it covered by the
 -Agent.  Go to the server buffer (@kbd{^} in the group buffer) and press
 -@kbd{J a} on the server (or servers) that you wish to have covered by the
 -Agent (@pxref{Server Agent Commands}), or @kbd{J r} on automatically
 -added servers you do not wish to have covered by the Agent.  By default,
 -all @code{nntp} and @code{nnimap} servers in @code{gnus-select-method} and
 -@code{gnus-secondary-select-methods} are agentized.
 +Copying/moving articles into nnimap groups when unplugged.
  
  @item
 -Decide on download policy.  It's fairly simple once you decide whether
 -you are going to use agent categories, topic parameters, and/or group
 -parameters to implement your policy.  If you're new to gnus, it
 -is probably best to start with a category, @xref{Agent Categories}.
 -
 -Both topic parameters (@pxref{Topic Parameters}) and agent categories
 -(@pxref{Agent Categories}) provide for setting a policy that applies
 -to multiple groups.  Which you use is entirely up to you.  Topic
 -parameters do override categories so, if you mix the two, you'll have
 -to take that into account.  If you have a few groups that deviate from
 -your policy, you can use group parameters (@pxref{Group Parameters}) to
 -configure them.
 +Creating/deleting nnimap groups when unplugged.
  
 -@item
 -Uhm@dots{} that's it.
  @end itemize
  
 +@node Outgoing Messages
 +@subsection Outgoing Messages
  
 -@node Agent Categories
 -@subsection Agent Categories
 +By default, when Gnus is unplugged, all outgoing messages (both mail
 +and news) are stored in the draft group ``queue'' (@pxref{Drafts}).
 +You can view them there after posting, and edit them at will.
  
 -One of the main reasons to integrate the news transport layer into the
 -newsreader is to allow greater control over what articles to download.
 -There's not much point in downloading huge amounts of articles, just to
 -find out that you're not interested in reading any of them.  It's better
 -to be somewhat more conservative in choosing what to download, and then
 -mark the articles for downloading manually if it should turn out that
 -you're interested in the articles anyway.
 +You can control the circumstances under which outgoing mail is queued
 +(see @code{gnus-agent-queue-mail}, @pxref{Agent Variables}).  Outgoing
 +news is always queued when Gnus is unplugged, and never otherwise.
  
 -One of the more effective methods for controlling what is to be
 -downloaded is to create a @dfn{category} and then assign some (or all)
 -groups to this category.  Groups that do not belong in any other
 -category belong to the @code{default} category.  Gnus has its own
 -buffer for creating and managing categories.
 +You can send the messages either from the draft group with the special
 +commands available there, or you can use the @kbd{J S} command in the
 +group buffer to send all the sendable messages in the draft group.
 +Posting news will only work when Gnus is plugged, but you can send
 +mail at any time.
  
 -If you prefer, you can also use group parameters (@pxref{Group
 -Parameters}) and topic parameters (@pxref{Topic Parameters}) for an
 -alternative approach to controlling the agent.  The only real
 -difference is that categories are specific to the agent (so there is
 -less to learn) while group and topic parameters include the kitchen
 -sink.
 +If sending mail while unplugged does not work for you and you worry
 +about hitting @kbd{J S} by accident when unplugged, you can have Gnus
 +ask you to confirm your action (see
 +@code{gnus-agent-prompt-send-queue}, @pxref{Agent Variables}).
  
 -Since you can set agent parameters in several different places we have
 -a rule to decide which source to believe.  This rule specifies that
 -the parameter sources are checked in the following order: group
 -parameters, topic parameters, agent category, and finally customizable
 -variables.  So you can mix all of these sources to produce a wide range
 -of behavior, just don't blame me if you don't remember where you put
 -your settings.
 +@node Agent Variables
 +@subsection Agent Variables
  
 -@menu
 -* Category Syntax::             What a category looks like.
 -* Category Buffer::             A buffer for maintaining categories.
 -* Category Variables::          Customize'r'Us.
 -@end menu
 +@table @code
 +@item gnus-agent
 +@vindex gnus-agent
 +Is the agent enabled?  The default is @code{t}.  When first enabled,
 +the agent will use @code{gnus-agent-auto-agentize-methods} to
 +automatically mark some back ends as agentized.  You may change which
 +back ends are agentized using the agent commands in the server buffer.
  
 +To enter the server buffer, use the @kbd{^}
 +(@code{gnus-group-enter-server-mode}) command in the group buffer.
  
 -@node Category Syntax
 -@subsubsection Category Syntax
  
 -A category consists of a name, the list of groups belonging to the
 -category, and a number of optional parameters that override the
 -customizable variables.  The complete list of agent parameters are
 -listed below.
 +@item gnus-agent-directory
 +@vindex gnus-agent-directory
 +Where the Gnus Agent will store its files.  The default is
 +@file{~/News/agent/}.
  
 -@cindex Agent Parameters
 -@table @code
 -@item agent-groups
 -The list of groups that are in this category.
 +@item gnus-agent-handle-level
 +@vindex gnus-agent-handle-level
 +Groups on levels (@pxref{Group Levels}) higher than this variable will
 +be ignored by the Agent.  The default is @code{gnus-level-subscribed},
 +which means that only subscribed group will be considered by the Agent
 +by default.
  
 -@item agent-predicate
 -A predicate which (generally) gives a rough outline of which articles
 -are eligible for downloading; and
 +@item gnus-agent-plugged-hook
 +@vindex gnus-agent-plugged-hook
 +Hook run when connecting to the network.
  
 -@item agent-score
 -a score rule which (generally) gives you a finer granularity when
 -deciding what articles to download.  (Note that this @dfn{download
 -score} is not necessarily related to normal scores.)
 +@item gnus-agent-unplugged-hook
 +@vindex gnus-agent-unplugged-hook
 +Hook run when disconnecting from the network.
  
 -@item agent-enable-expiration
 -a boolean indicating whether the agent should expire old articles in
 -this group.  Most groups should be expired to conserve disk space.  In
 -fact, its probably safe to say that the gnus.* hierarchy contains the
 -only groups that should not be expired.
 +@item gnus-agent-fetched-hook
 +@vindex gnus-agent-fetched-hook
 +Hook run when finished fetching articles.
  
 -@item agent-days-until-old
 -an integer indicating the number of days that the agent should wait
 -before deciding that a read article is safe to expire.
 +@item gnus-agent-cache
 +@vindex gnus-agent-cache
 +Variable to control whether use the locally stored @acronym{NOV} and
 +articles when plugged, e.g. essentially using the Agent as a cache.
 +The default is non-@code{nil}, which means to use the Agent as a cache.
  
 -@item agent-low-score
 -an integer that overrides the value of @code{gnus-agent-low-score}.
 +@item gnus-agent-go-online
 +@vindex gnus-agent-go-online
 +If @code{gnus-agent-go-online} is @code{nil}, the Agent will never
 +automatically switch offline servers into online status.  If it is
 +@code{ask}, the default, the Agent will ask if you wish to switch
 +offline servers into online status when you re-connect.  If it has any
 +other value, all offline servers will be automatically switched into
 +online status.
  
 -@item agent-high-score
 -an integer that overrides the value of @code{gnus-agent-high-score}.
 +@item gnus-agent-mark-unread-after-downloaded
 +@vindex gnus-agent-mark-unread-after-downloaded
 +If @code{gnus-agent-mark-unread-after-downloaded} is non-@code{nil},
 +mark articles as unread after downloading.  This is usually a safe
 +thing to do as the newly downloaded article has obviously not been
 +read.  The default is @code{t}.
  
 -@item agent-short-article
 -an integer that overrides the value of
 -@code{gnus-agent-short-article}.
 +@item gnus-agent-synchronize-flags
 +@vindex gnus-agent-synchronize-flags
 +If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
 +never automatically synchronize flags.  If it is @code{ask}, which is
 +the default, the Agent will check if you made any changes and if so
 +ask if you wish to synchronize these when you re-connect.  If it has
 +any other value, all flags will be synchronized automatically.
  
 -@item agent-long-article
 -an integer that overrides the value of @code{gnus-agent-long-article}.
 +@item gnus-agent-consider-all-articles
 +@vindex gnus-agent-consider-all-articles
 +If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the
 +agent will let the agent predicate decide whether articles need to be
 +downloaded or not, for all articles.  When @code{nil}, the default,
 +the agent will only let the predicate decide whether unread articles
 +are downloaded or not.  If you enable this, you may also want to look
 +into the agent expiry settings (@pxref{Category Variables}), so that
 +the agent doesn't download articles which the agent will later expire,
 +over and over again.
  
 -@item agent-enable-undownloaded-faces
 -a symbol indicating whether the summary buffer should display
 -undownloaded articles using the @code{gnus-summary-*-undownloaded-face}
 -faces.  Any symbol other than @code{nil} will enable the use of
 -undownloaded faces.
 -@end table
 +@item gnus-agent-max-fetch-size
 +@vindex gnus-agent-max-fetch-size
 +The agent fetches articles into a temporary buffer prior to parsing
 +them into individual files.  To avoid exceeding the max. buffer size,
 +the agent alternates between fetching and parsing until all articles
 +have been fetched.  @code{gnus-agent-max-fetch-size} provides a size
 +limit to control how often the cycling occurs.  A large value improves
 +performance.  A small value minimizes the time lost should the
 +connection be lost while fetching (You may need to run
 +@code{gnus-agent-regenerate-group} to update the group's state.
 +However, all articles parsed prior to losing the connection will be
 +available while unplugged).  The default is 10M so it is unusual to
 +see any cycling.
  
 -The name of a category can not be changed once the category has been
 -created.
 +@item gnus-server-unopen-status
 +@vindex gnus-server-unopen-status
 +Perhaps not an Agent variable, but closely related to the Agent, this
 +variable says what will happen if Gnus cannot open a server.  If the
 +Agent is enabled, the default, @code{nil}, makes Gnus ask the user
 +whether to deny the server or whether to unplug the agent.  If the
 +Agent is disabled, Gnus always simply deny the server.  Other choices
 +for this variable include @code{denied} and @code{offline} the latter
 +is only valid if the Agent is used.
  
 -Each category maintains a list of groups that are exclusive members of
 -that category.  The exclusivity rule is automatically enforced, add a
 -group to a new category and it is automatically removed from its old
 -category.
 +@item gnus-auto-goto-ignores
 +@vindex gnus-auto-goto-ignores
 +Another variable that isn't an Agent variable, yet so closely related
 +that most will look for it here, this variable tells the summary
 +buffer how to maneuver around undownloaded (only headers stored in the
 +agent) and unfetched (neither article nor headers stored) articles.
  
 -A predicate in its simplest form can be a single predicate such as
 -@code{true} or @code{false}.  These two will download every available
 -article or nothing respectively.  In the case of these two special
 -predicates an additional score rule is superfluous.
 +The valid values are @code{nil} (maneuver to any article),
 +@code{undownloaded} (maneuvering while unplugged ignores articles that
 +have not been fetched), @code{always-undownloaded} (maneuvering always
 +ignores articles that have not been fetched), @code{unfetched}
 +(maneuvering ignores articles whose headers have not been fetched).
  
 -Predicates of @code{high} or @code{low} download articles in respect of
 -their scores in relationship to @code{gnus-agent-high-score} and
 -@code{gnus-agent-low-score} as described below.
 +@item gnus-agent-queue-mail
 +@vindex gnus-agent-queue-mail
 +When @code{gnus-agent-queue-mail} is @code{always}, Gnus will always
 +queue mail rather than sending it straight away.  When @code{t}, Gnus
 +will queue mail when unplugged only.  When @code{nil}, never queue
 +mail.  The default is @code{t}.
  
 -To gain even finer control of what is to be regarded eligible for
 -download a predicate can consist of a number of predicates with logical
 -operators sprinkled in between.
 +@item gnus-agent-prompt-send-queue
 +@vindex gnus-agent-prompt-send-queue
 +When @code{gnus-agent-prompt-send-queue} is non-@code{nil} Gnus will
 +prompt you to confirm that you really wish to proceed if you hit
 +@kbd{J S} while unplugged.  The default is @code{nil}.
  
 -Perhaps some examples are in order.
 +@item gnus-agent-auto-agentize-methods
 +@vindex gnus-agent-auto-agentize-methods
 +If you have never used the Agent before (or more technically, if
 +@file{~/News/agent/lib/servers} does not exist), Gnus will
 +automatically agentize a few servers for you.  This variable control
 +which back ends should be auto-agentized.  It is typically only useful
 +to agentize remote back ends.  The auto-agentizing has the same effect
 +as running @kbd{J a} on the servers (@pxref{Server Agent Commands}).
 +If the file exist, you must manage the servers manually by adding or
 +removing them, this variable is only applicable the first time you
 +start Gnus.  The default is @samp{(nntp nnimap)}.
  
 -Here's a simple predicate.  (It's the default predicate, in fact, used
 -for all groups that don't belong to any other category.)
 +@end table
  
 -@lisp
 -short
 -@end lisp
  
 -Quite simple, eh?  This predicate is true if and only if the article is
 -short (for some value of ``short'').
 +@node Example Setup
 +@subsection Example Setup
  
 -Here's a more complex predicate:
 +If you don't want to read this manual, and you have a fairly standard
 +setup, you may be able to use something like the following as your
 +@file{~/.gnus.el} file to get started.
  
  @lisp
 -(or high
 -    (and
 -     (not low)
 -     (not long)))
 -@end lisp
 +;; @r{Define how Gnus is to fetch news.  We do this over @acronym{NNTP}}
 +;; @r{from your ISP's server.}
 +(setq gnus-select-method '(nntp "news.your-isp.com"))
  
 -This means that an article should be downloaded if it has a high score,
 -or if the score is not low and the article is not long.  You get the
 -drift.
 +;; @r{Define how Gnus is to read your mail.  We read mail from}
 +;; @r{your ISP's @acronym{POP} server.}
 +(setq mail-sources '((pop :server "pop.your-isp.com")))
  
 -The available logical operators are @code{or}, @code{and} and
 -@code{not}.  (If you prefer, you can use the more ``C''-ish operators
 -@samp{|}, @code{&} and @code{!} instead.)
 +;; @r{Say how Gnus is to store the mail.  We use nnml groups.}
 +(setq gnus-secondary-select-methods '((nnml "")))
  
 -The following predicates are pre-defined, but if none of these fit what
 -you want to do, you can write your own.
 +;; @r{Make Gnus into an offline newsreader.}
 +;; (gnus-agentize) ; @r{The obsolete setting.}
 +;; (setq gnus-agent t) ; @r{Now the default.}
 +@end lisp
  
 -When evaluating each of these predicates, the named constant will be
 -bound to the value determined by calling
 -@code{gnus-agent-find-parameter} on the appropriate parameter.  For
 -example, gnus-agent-short-article will be bound to
 -@code{(gnus-agent-find-parameter group 'agent-short-article)}.  This
 -means that you can specify a predicate in your category then tune that
 -predicate to individual groups.
 +That should be it, basically.  Put that in your @file{~/.gnus.el} file,
 +edit to suit your needs, start up PPP (or whatever), and type @kbd{M-x
 +gnus}.
  
 -@table @code
 -@item short
 -True if the article is shorter than @code{gnus-agent-short-article}
 -lines; default 100.
 +If this is the first time you've run Gnus, you will be subscribed
 +automatically to a few default newsgroups.  You'll probably want to
 +subscribe to more groups, and to do that, you have to query the
 +@acronym{NNTP} server for a complete list of groups with the @kbd{A A}
 +command.  This usually takes quite a while, but you only have to do it
 +once.
  
 -@item long
 -True if the article is longer than @code{gnus-agent-long-article}
 -lines; default 200.
 +After reading and parsing a while, you'll be presented with a list of
 +groups.  Subscribe to the ones you want to read with the @kbd{u}
 +command.  @kbd{l} to make all the killed groups disappear after you've
 +subscribe to all the groups you want to read.  (@kbd{A k} will bring
 +back all the killed groups.)
  
 -@item low
 -True if the article has a download score less than
 -@code{gnus-agent-low-score}; default 0.
 +You can now read the groups at once, or you can download the articles
 +with the @kbd{J s} command.  And then read the rest of this manual to
 +find out which of the other gazillion things you want to customize.
  
 -@item high
 -True if the article has a download score greater than
 -@code{gnus-agent-high-score}; default 0.
  
 -@item spam
 -True if the Gnus Agent guesses that the article is spam.  The
 -heuristics may change over time, but at present it just computes a
 -checksum and sees whether articles match.
 +@node Batching Agents
 +@subsection Batching Agents
 +@findex gnus-agent-batch
  
 -@item true
 -Always true.
 +Having the Gnus Agent fetch articles (and post whatever messages you've
 +written) is quite easy once you've gotten things set up properly.  The
 +following shell script will do everything that is necessary:
  
 -@item false
 -Always false.
 -@end table
 +You can run a complete batch command from the command line with the
 +following incantation:
  
 -If you want to create your own predicate function, here's what you have
 -to know:  The functions are called with no parameters, but the
 -@code{gnus-headers} and @code{gnus-score} dynamic variables are bound to
 -useful values.
 +@example
 +#!/bin/sh
 +emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1
 +@end example
  
 -For example, you could decide that you don't want to download articles
 -that were posted more than a certain number of days ago (e.g. posted
 -more than @code{gnus-agent-expire-days} ago) you might write a function
 -something along the lines of the following:
  
 -@lisp
 -(defun my-article-old-p ()
 -  "Say whether an article is old."
 -  (< (time-to-days (date-to-time (mail-header-date gnus-headers)))
 -     (- (time-to-days (current-time)) gnus-agent-expire-days)))
 -@end lisp
 +@node Agent Caveats
 +@subsection Agent Caveats
  
 -with the predicate then defined as:
 +The Gnus Agent doesn't seem to work like most other offline
 +newsreaders.  Here are some common questions that some imaginary people
 +may ask:
  
 -@lisp
 -(not my-article-old-p)
 -@end lisp
 +@table @dfn
 +@item If I read an article while plugged, do they get entered into the Agent?
  
 -or you could append your predicate to the predefined
 -@code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or
 -wherever.
 +@strong{No}.  If you want this behavior, add
 +@code{gnus-agent-fetch-selected-article} to
 +@code{gnus-select-article-hook}.
  
 -@lisp
 -(require 'gnus-agent)
 -(setq  gnus-category-predicate-alist
 -  (append gnus-category-predicate-alist
 -         '((old . my-article-old-p))))
 -@end lisp
 +@item If I read an article while plugged, and the article already exists in
 +the Agent, will it get downloaded once more?
  
 -and simply specify your predicate as:
 +@strong{No}, unless @code{gnus-agent-cache} is @code{nil}.
  
 -@lisp
 -(not old)
 -@end lisp
 +@end table
  
 -If/when using something like the above, be aware that there are many
 -misconfigured systems/mailers out there and so an article's date is not
 -always a reliable indication of when it was posted.  Hell, some people
 -just don't give a damn.
 +In short, when Gnus is unplugged, it only looks into the locally stored
 +articles; when it's plugged, it talks to your ISP and may also use the
 +locally stored articles.
  
 -The above predicates apply to @emph{all} the groups which belong to the
 -category.  However, if you wish to have a specific predicate for an
 -individual group within a category, or you're just too lazy to set up a
 -new category, you can enter a group's individual predicate in its group
 -parameters like so:
  
 -@lisp
 -(agent-predicate . short)
 -@end lisp
 +@node Scoring
 +@chapter Scoring
 +@cindex scoring
  
 -This is the group/topic parameter equivalent of the agent category default.
 -Note that when specifying a single word predicate like this, the
 -@code{agent-predicate} specification must be in dotted pair notation.
 +Other people use @dfn{kill files}, but we here at Gnus Towers like
 +scoring better than killing, so we'd rather switch than fight.  They do
 +something completely different as well, so sit up straight and pay
 +attention!
  
 -The equivalent of the longer example from above would be:
 +@vindex gnus-summary-mark-below
 +All articles have a default score (@code{gnus-summary-default-score}),
 +which is 0 by default.  This score may be raised or lowered either
 +interactively or by score files.  Articles that have a score lower than
 +@code{gnus-summary-mark-below} are marked as read.
  
 -@lisp
 -(agent-predicate or high (and (not low) (not long)))
 -@end lisp
 +Gnus will read any @dfn{score files} that apply to the current group
 +before generating the summary buffer.
  
 -The outer parenthesis required in the category specification are not
 -entered here as, not being in dotted pair notation, the value of the
 -predicate is assumed to be a list.
 +There are several commands in the summary buffer that insert score
 +entries based on the current article.  You can, for instance, ask Gnus to
 +lower or increase the score of all articles with a certain subject.
  
 +There are two sorts of scoring entries: Permanent and temporary.
 +Temporary score entries are self-expiring entries.  Any entries that are
 +temporary and have not been used for, say, a week, will be removed
 +silently to help keep the sizes of the score files down.
  
 -Now, the syntax of the download score is the same as the syntax of
 -normal score files, except that all elements that require actually
 -seeing the article itself are verboten.  This means that only the
 -following headers can be scored on: @code{Subject}, @code{From},
 -@code{Date}, @code{Message-ID}, @code{References}, @code{Chars},
 -@code{Lines}, and @code{Xref}.
 +@menu
 +* Summary Score Commands::      Adding score entries for the current group.
 +* Group Score Commands::        General score commands.
 +* Score Variables::             Customize your scoring.  (My, what terminology).
 +* Score File Format::           What a score file may contain.
 +* Score File Editing::          You can edit score files by hand as well.
 +* Adaptive Scoring::            Big Sister Gnus knows what you read.
 +* Home Score File::             How to say where new score entries are to go.
 +* Followups To Yourself::       Having Gnus notice when people answer you.
 +* Scoring On Other Headers::    Scoring on non-standard headers.
 +* Scoring Tips::                How to score effectively.
 +* Reverse Scoring::             That problem child of old is not problem.
 +* Global Score Files::          Earth-spanning, ear-splitting score files.
 +* Kill Files::                  They are still here, but they can be ignored.
 +* Converting Kill Files::       Translating kill files to score files.
 +* Advanced Scoring::            Using logical expressions to build score rules.
 +* Score Decays::                It can be useful to let scores wither away.
 +@end menu
  
 -As with predicates, the specification of the @code{download score rule}
 -to use in respect of a group can be in either the category definition if
 -it's to be applicable to all groups in therein, or a group's parameters
 -if it's to be specific to that group.
  
 -In both of these places the @code{download score rule} can take one of
 -three forms:
 +@node Summary Score Commands
 +@section Summary Score Commands
 +@cindex score commands
  
 -@enumerate
 -@item
 -Score rule
 +The score commands that alter score entries do not actually modify real
 +score files.  That would be too inefficient.  Gnus maintains a cache of
 +previously loaded score files, one of which is considered the
 +@dfn{current score file alist}.  The score commands simply insert
 +entries into this list, and upon group exit, this list is saved.
  
 -This has the same syntax as a normal Gnus score file except only a
 -subset of scoring keywords are available as mentioned above.
 +The current score file is by default the group's local score file, even
 +if no such score file actually exists.  To insert score commands into
 +some other score file (e.g. @file{all.SCORE}), you must first make this
 +score file the current one.
  
 -example:
 +General score commands that don't actually change the score file:
  
 -@itemize @bullet
 -@item
 -Category specification
 +@table @kbd
  
 -@lisp
 -(("from"
 -       ("Lars Ingebrigtsen" 1000000 nil s))
 -("lines"
 -       (500 -100 nil <)))
 -@end lisp
 +@item V s
 +@kindex V s (Summary)
 +@findex gnus-summary-set-score
 +Set the score of the current article (@code{gnus-summary-set-score}).
  
 -@item
 -Group/Topic Parameter specification
 +@item V S
 +@kindex V S (Summary)
 +@findex gnus-summary-current-score
 +Display the score of the current article
 +(@code{gnus-summary-current-score}).
  
 -@lisp
 -(agent-score ("from"
 -                   ("Lars Ingebrigtsen" 1000000 nil s))
 -             ("lines"
 -                   (500 -100 nil <)))
 -@end lisp
 +@item V t
 +@kindex V t (Summary)
 +@findex gnus-score-find-trace
 +Display all score rules that have been used on the current article
 +(@code{gnus-score-find-trace}).  In the @code{*Score Trace*} buffer, you
 +may type @kbd{e} to edit score file corresponding to the score rule on
 +current line and @kbd{f} to format (@code{gnus-score-pretty-print}) the
 +score file and edit it.
  
 -Again, note the omission of the outermost parenthesis here.
 -@end itemize
 +@item V w
 +@kindex V w (Summary)
 +@findex gnus-score-find-favourite-words
 +List words used in scoring (@code{gnus-score-find-favourite-words}).
  
 -@item
 -Agent score file
 +@item V R
 +@kindex V R (Summary)
 +@findex gnus-summary-rescore
 +Run the current summary through the scoring process
 +(@code{gnus-summary-rescore}).  This might be useful if you're playing
 +around with your score files behind Gnus' back and want to see the
 +effect you're having.
  
 -These score files must @emph{only} contain the permitted scoring
 -keywords stated above.
 +@item V c
 +@kindex V c (Summary)
 +@findex gnus-score-change-score-file
 +Make a different score file the current
 +(@code{gnus-score-change-score-file}).
  
 -example:
 +@item V e
 +@kindex V e (Summary)
 +@findex gnus-score-edit-current-scores
 +Edit the current score file (@code{gnus-score-edit-current-scores}).
 +You will be popped into a @code{gnus-score-mode} buffer (@pxref{Score
 +File Editing}).
  
 -@itemize @bullet
 -@item
 -Category specification
 +@item V f
 +@kindex V f (Summary)
 +@findex gnus-score-edit-file
 +Edit a score file and make this score file the current one
 +(@code{gnus-score-edit-file}).
  
 -@lisp
 -("~/News/agent.SCORE")
 -@end lisp
 +@item V F
 +@kindex V F (Summary)
 +@findex gnus-score-flush-cache
 +Flush the score cache (@code{gnus-score-flush-cache}).  This is useful
 +after editing score files.
  
 -or perhaps
 +@item V C
 +@kindex V C (Summary)
 +@findex gnus-score-customize
 +Customize a score file in a visually pleasing manner
 +(@code{gnus-score-customize}).
  
 -@lisp
 -("~/News/agent.SCORE" "~/News/agent.group.SCORE")
 -@end lisp
 +@end table
  
 -@item
 -Group Parameter specification
 +The rest of these commands modify the local score file.
  
 -@lisp
 -(agent-score "~/News/agent.SCORE")
 -@end lisp
 +@table @kbd
  
 -Additional score files can be specified as above.  Need I say anything
 -about parenthesis?
 -@end itemize
 +@item V m
 +@kindex V m (Summary)
 +@findex gnus-score-set-mark-below
 +Prompt for a score, and mark all articles with a score below this as
 +read (@code{gnus-score-set-mark-below}).
  
 -@item
 -Use @code{normal} score files
 +@item V x
 +@kindex V x (Summary)
 +@findex gnus-score-set-expunge-below
 +Prompt for a score, and add a score rule to the current score file to
 +expunge all articles below this score
 +(@code{gnus-score-set-expunge-below}).
 +@end table
  
 -If you don't want to maintain two sets of scoring rules for a group, and
 -your desired @code{downloading} criteria for a group are the same as your
 -@code{reading} criteria then you can tell the agent to refer to your
 -@code{normal} score files when deciding what to download.
 +The keystrokes for actually making score entries follow a very regular
 +pattern, so there's no need to list all the commands.  (Hundreds of
 +them.)
  
 -These directives in either the category definition or a group's
 -parameters will cause the agent to read in all the applicable score
 -files for a group, @emph{filtering out} those sections that do not
 -relate to one of the permitted subset of scoring keywords.
 +@findex gnus-summary-increase-score
 +@findex gnus-summary-lower-score
  
 -@itemize @bullet
 +@enumerate
  @item
 -Category Specification
 -
 -@lisp
 -file
 -@end lisp
 -
 +The first key is either @kbd{I} (upper case i) for increasing the score
 +or @kbd{L} for lowering the score.
  @item
 -Group Parameter specification
 +The second key says what header you want to score on.  The following
 +keys are available:
 +@table @kbd
  
 -@lisp
 -(agent-score . file)
 -@end lisp
 -@end itemize
 -@end enumerate
 +@item a
 +Score on the author name.
  
 -@node Category Buffer
 -@subsubsection Category Buffer
 +@item s
 +Score on the subject line.
 +
 +@item x
 +Score on the @code{Xref} line---i.e., the cross-posting line.
  
 -You'd normally do all category maintenance from the category buffer.
 -When you enter it for the first time (with the @kbd{J c} command from
 -the group buffer), you'll only see the @code{default} category.
 +@item r
 +Score on the @code{References} line.
  
 -The following commands are available in this buffer:
 +@item d
 +Score on the date.
  
 -@table @kbd
 -@item q
 -@kindex q (Category)
 -@findex gnus-category-exit
 -Return to the group buffer (@code{gnus-category-exit}).
 +@item l
 +Score on the number of lines.
 +
 +@item i
 +Score on the @code{Message-ID} header.
  
  @item e
 -@kindex e (Category)
 -@findex gnus-category-customize-category
 -Use a customization buffer to set all of the selected category's
 -parameters at one time (@code{gnus-category-customize-category}).
 +Score on an ``extra'' header, that is, one of those in gnus-extra-headers,
 +if your @acronym{NNTP} server tracks additional header data in overviews.
  
 -@item k
 -@kindex k (Category)
 -@findex gnus-category-kill
 -Kill the current category (@code{gnus-category-kill}).
 +@item f
 +Score on followups---this matches the author name, and adds scores to
 +the followups to this author.  (Using this key leads to the creation of
 +@file{ADAPT} files.)
  
 -@item c
 -@kindex c (Category)
 -@findex gnus-category-copy
 -Copy the current category (@code{gnus-category-copy}).
 +@item b
 +Score on the body.
  
 -@item a
 -@kindex a (Category)
 -@findex gnus-category-add
 -Add a new category (@code{gnus-category-add}).
 +@item h
 +Score on the head.
  
 -@item p
 -@kindex p (Category)
 -@findex gnus-category-edit-predicate
 -Edit the predicate of the current category
 -(@code{gnus-category-edit-predicate}).
 +@item t
 +Score on thread.  (Using this key leads to the creation of @file{ADAPT}
 +files.)
  
 -@item g
 -@kindex g (Category)
 -@findex gnus-category-edit-groups
 -Edit the list of groups belonging to the current category
 -(@code{gnus-category-edit-groups}).
 +@end table
  
 -@item s
 -@kindex s (Category)
 -@findex gnus-category-edit-score
 -Edit the download score rule of the current category
 -(@code{gnus-category-edit-score}).
 +@item
 +The third key is the match type.  Which match types are valid depends on
 +what headers you are scoring on.
  
 -@item l
 -@kindex l (Category)
 -@findex gnus-category-list
 -List all the categories (@code{gnus-category-list}).
 -@end table
 +@table @code
  
 +@item strings
  
 -@node Category Variables
 -@subsubsection Category Variables
 +@table @kbd
  
 -@table @code
 -@item gnus-category-mode-hook
 -@vindex gnus-category-mode-hook
 -Hook run in category buffers.
 +@item e
 +Exact matching.
  
 -@item gnus-category-line-format
 -@vindex gnus-category-line-format
 -Format of the lines in the category buffer (@pxref{Formatting
 -Variables}).  Valid elements are:
 +@item s
 +Substring matching.
  
 -@table @samp
 -@item c
 -The name of the category.
 +@item f
 +Fuzzy matching (@pxref{Fuzzy Matching}).
  
 -@item g
 -The number of groups in the category.
 +@item r
 +Regexp matching
  @end table
  
 -@item gnus-category-mode-line-format
 -@vindex gnus-category-mode-line-format
 -Format of the category mode line (@pxref{Mode Line Formatting}).
 +@item date
 +@table @kbd
  
 -@item gnus-agent-short-article
 -@vindex gnus-agent-short-article
 -Articles that have fewer lines than this are short.  Default 100.
 +@item b
 +Before date.
  
 -@item gnus-agent-long-article
 -@vindex gnus-agent-long-article
 -Articles that have more lines than this are long.  Default 200.
 +@item a
 +After date.
  
 -@item gnus-agent-low-score
 -@vindex gnus-agent-low-score
 -Articles that have a score lower than this have a low score.  Default
 -0.
 +@item n
 +This date.
 +@end table
  
 -@item gnus-agent-high-score
 -@vindex gnus-agent-high-score
 -Articles that have a score higher than this have a high score.  Default
 -0.
 +@item number
 +@table @kbd
  
 -@item gnus-agent-expire-days
 -@vindex gnus-agent-expire-days
 -The number of days that a @samp{read} article must stay in the agent's
 -local disk before becoming eligible for expiration (While the name is
 -the same, this doesn't mean expiring the article on the server.  It
 -just means deleting the local copy of the article).  What is also
 -important to understand is that the counter starts with the time the
 -article was written to the local disk and not the time the article was
 -read.
 -Default 7.
 +@item <
 +Less than number.
  
 -@item gnus-agent-enable-expiration
 -@vindex gnus-agent-enable-expiration
 -Determines whether articles in a group are, by default, expired or
 -retained indefinitely.  The default is @code{ENABLE} which means that
 -you'll have to disable expiration when desired.  On the other hand,
 -you could set this to @code{DISABLE}.  In that case, you would then
 -have to enable expiration in selected groups.
 +@item =
 +Equal to number.
  
 +@item >
 +Greater than number.
 +@end table
  @end table
  
 +@item
 +The fourth and usually final key says whether this is a temporary (i.e.,
 +expiring) score entry, or a permanent (i.e., non-expiring) score entry,
 +or whether it is to be done immediately, without adding to the score
 +file.
 +@table @kbd
  
 -@node Agent Commands
 -@subsection Agent Commands
 -@findex gnus-agent-toggle-plugged
 -@kindex J j (Agent)
 +@item t
 +Temporary score entry.
  
 -All the Gnus Agent commands are on the @kbd{J} submap.  The @kbd{J j}
 -(@code{gnus-agent-toggle-plugged}) command works in all modes, and
 -toggles the plugged/unplugged state of the Gnus Agent.
 +@item p
 +Permanent score entry.
  
 +@item i
 +Immediately scoring.
 +@end table
  
 -@menu
 -* Group Agent Commands::        Configure groups and fetch their contents.
 -* Summary Agent Commands::      Manually select then fetch specific articles.
 -* Server Agent Commands::       Select the servers that are supported by the agent.
 -@end menu
 +@item
 +If you are scoring on `e' (extra) headers, you will then be prompted for
 +the header name on which you wish to score.  This must be a header named
 +in gnus-extra-headers, and @samp{TAB} completion is available.
  
 +@end enumerate
  
 +So, let's say you want to increase the score on the current author with
 +exact matching permanently: @kbd{I a e p}.  If you want to lower the
 +score based on the subject line, using substring matching, and make a
 +temporary score entry: @kbd{L s s t}.  Pretty easy.
  
 +To make things a bit more complicated, there are shortcuts.  If you use
 +a capital letter on either the second or third keys, Gnus will use
 +defaults for the remaining one or two keystrokes.  The defaults are
 +``substring'' and ``temporary''.  So @kbd{I A} is the same as @kbd{I a s
 +t}, and @kbd{I a R} is the same as @kbd{I a r t}.
  
 -@node Group Agent Commands
 -@subsubsection Group Agent Commands
 +These functions take both the numerical prefix and the symbolic prefix
 +(@pxref{Symbolic Prefixes}).  A numerical prefix says how much to lower
 +(or increase) the score of the article.  A symbolic prefix of @code{a}
 +says to use the @file{all.SCORE} file for the command instead of the
 +current score file.
  
 -@table @kbd
 -@item J u
 -@kindex J u (Agent Group)
 -@findex gnus-agent-fetch-groups
 -Fetch all eligible articles in the current group
 -(@code{gnus-agent-fetch-groups}).
 +@vindex gnus-score-mimic-keymap
 +The @code{gnus-score-mimic-keymap} says whether these commands will
 +pretend they are keymaps or not.
  
 -@item J c
 -@kindex J c (Agent Group)
 -@findex gnus-enter-category-buffer
 -Enter the Agent category buffer (@code{gnus-enter-category-buffer}).
  
 -@item J s
 -@kindex J s (Agent Group)
 -@findex gnus-agent-fetch-session
 -Fetch all eligible articles in all groups
 -(@code{gnus-agent-fetch-session}).
 +@node Group Score Commands
 +@section Group Score Commands
 +@cindex group score commands
  
 -@item J S
 -@kindex J S (Agent Group)
 -@findex gnus-group-send-queue
 -Send all sendable messages in the queue group
 -(@code{gnus-group-send-queue}).  @xref{Drafts}.
 +There aren't many of these as yet, I'm afraid.
  
 -@item J a
 -@kindex J a (Agent Group)
 -@findex gnus-agent-add-group
 -Add the current group to an Agent category
 -(@code{gnus-agent-add-group}).  This command understands the
 -process/prefix convention (@pxref{Process/Prefix}).
 +@table @kbd
  
 -@item J r
 -@kindex J r (Agent Group)
 -@findex gnus-agent-remove-group
 -Remove the current group from its category, if any
 -(@code{gnus-agent-remove-group}).  This command understands the
 -process/prefix convention (@pxref{Process/Prefix}).
 +@item W e
 +@kindex W e (Group)
 +@findex gnus-score-edit-all-score
 +Edit the apply-to-all-groups all.SCORE file.  You will be popped into
 +a @code{gnus-score-mode} buffer (@pxref{Score File Editing}).
  
 -@item J Y
 -@kindex J Y (Agent Group)
 -@findex gnus-agent-synchronize-flags
 -Synchronize flags changed while unplugged with remote server, if any.
 +@item W f
 +@kindex W f (Group)
 +@findex gnus-score-flush-cache
 +Gnus maintains a cache of score alists to avoid having to reload them
 +all the time.  This command will flush the cache
 +(@code{gnus-score-flush-cache}).
 +
 +@end table
  
 +You can do scoring from the command line by saying something like:
 +
 +@findex gnus-batch-score
 +@cindex batch scoring
 +@example
 +$ emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score
 +@end example
  
 -@end table
  
 +@node Score Variables
 +@section Score Variables
 +@cindex score variables
  
 -@node Summary Agent Commands
 -@subsubsection Summary Agent Commands
 +@table @code
  
 -@table @kbd
 -@item J #
 -@kindex J # (Agent Summary)
 -@findex gnus-agent-mark-article
 -Mark the article for downloading (@code{gnus-agent-mark-article}).
 +@item gnus-use-scoring
 +@vindex gnus-use-scoring
 +If @code{nil}, Gnus will not check for score files, and will not, in
 +general, do any score-related work.  This is @code{t} by default.
  
 -@item J M-#
 -@kindex J M-# (Agent Summary)
 -@findex gnus-agent-unmark-article
 -Remove the downloading mark from the article
 -(@code{gnus-agent-unmark-article}).
 +@item gnus-kill-killed
 +@vindex gnus-kill-killed
 +If this variable is @code{nil}, Gnus will never apply score files to
 +articles that have already been through the kill process.  While this
 +may save you lots of time, it also means that if you apply a kill file
 +to a group, and then change the kill file and want to run it over you
 +group again to kill more articles, it won't work.  You have to set this
 +variable to @code{t} to do that.  (It is @code{t} by default.)
  
 -@cindex %
 -@item @@
 -@kindex @@ (Agent Summary)
 -@findex gnus-agent-toggle-mark
 -Toggle whether to download the article
 -(@code{gnus-agent-toggle-mark}).  The download mark is @samp{%} by
 -default.
 +@item gnus-kill-files-directory
 +@vindex gnus-kill-files-directory
 +All kill and score files will be stored in this directory, which is
 +initialized from the @env{SAVEDIR} environment variable by default.
 +This is @file{~/News/} by default.
  
 -@item J c
 -@kindex J c (Agent Summary)
 -@findex gnus-agent-catchup
 -Mark all articles as read (@code{gnus-agent-catchup}) that are neither cached, downloaded, nor downloadable.
 +@item gnus-score-file-suffix
 +@vindex gnus-score-file-suffix
 +Suffix to add to the group name to arrive at the score file name
 +(@file{SCORE} by default.)
  
 -@item J S
 -@kindex J S (Agent Summary)
 -@findex gnus-agent-fetch-group
 -Download all eligible (@pxref{Agent Categories}) articles in this group.
 -(@code{gnus-agent-fetch-group}).
 +@item gnus-score-uncacheable-files
 +@vindex gnus-score-uncacheable-files
 +@cindex score cache
 +All score files are normally cached to avoid excessive re-loading of
 +score files.  However, this might make your Emacs grow big and
 +bloated, so this regexp can be used to weed out score files unlikely
 +to be needed again.  It would be a bad idea to deny caching of
 +@file{all.SCORE}, while it might be a good idea to not cache
 +@file{comp.infosystems.www.authoring.misc.ADAPT}.  In fact, this
 +variable is @samp{ADAPT$} by default, so no adaptive score files will
 +be cached.
  
 -@item J s
 -@kindex J s (Agent Summary)
 -@findex gnus-agent-summary-fetch-series
 -Download all processable articles in this group.
 -(@code{gnus-agent-summary-fetch-series}).
 +@item gnus-save-score
 +@vindex gnus-save-score
 +If you have really complicated score files, and do lots of batch
 +scoring, then you might set this variable to @code{t}.  This will make
 +Gnus save the scores into the @file{.newsrc.eld} file.
  
 -@item J u
 -@kindex J u (Agent Summary)
 -@findex gnus-agent-summary-fetch-group
 -Download all downloadable articles in the current group
 -(@code{gnus-agent-summary-fetch-group}).
 +If you do not set this to @code{t}, then manual scores (like those set
 +with @kbd{V s} (@code{gnus-summary-set-score})) will not be preserved
 +across group visits.
  
 -@end table
 +@item gnus-score-interactive-default-score
 +@vindex gnus-score-interactive-default-score
 +Score used by all the interactive raise/lower commands to raise/lower
 +score with.  Default is 1000, which may seem excessive, but this is to
 +ensure that the adaptive scoring scheme gets enough room to play with.
 +We don't want the small changes from the adaptive scoring to overwrite
 +manually entered data.
  
 +@item gnus-summary-default-score
 +@vindex gnus-summary-default-score
 +Default score of an article, which is 0 by default.
  
 -@node Server Agent Commands
 -@subsubsection Server Agent Commands
 +@item gnus-summary-expunge-below
 +@vindex gnus-summary-expunge-below
 +Don't display the summary lines of articles that have scores lower than
 +this variable.  This is @code{nil} by default, which means that no
 +articles will be hidden.  This variable is local to the summary buffers,
 +and has to be set from @code{gnus-summary-mode-hook}.
  
 -@table @kbd
 -@item J a
 -@kindex J a (Agent Server)
 -@findex gnus-agent-add-server
 -Add the current server to the list of servers covered by the Gnus Agent
 -(@code{gnus-agent-add-server}).
 +@item gnus-score-over-mark
 +@vindex gnus-score-over-mark
 +Mark (in the third column) used for articles with a score over the
 +default.  Default is @samp{+}.
  
 -@item J r
 -@kindex J r (Agent Server)
 -@findex gnus-agent-remove-server
 -Remove the current server from the list of servers covered by the Gnus
 -Agent (@code{gnus-agent-remove-server}).
 +@item gnus-score-below-mark
 +@vindex gnus-score-below-mark
 +Mark (in the third column) used for articles with a score below the
 +default.  Default is @samp{-}.
  
 -@end table
 +@item gnus-score-find-score-files-function
 +@vindex gnus-score-find-score-files-function
 +Function used to find score files for the current group.  This function
 +is called with the name of the group as the argument.
  
 +Predefined functions available are:
 +@table @code
  
 -@node Agent Visuals
 -@subsection Agent Visuals
 +@item gnus-score-find-single
 +@findex gnus-score-find-single
 +Only apply the group's own score file.
  
 -If you open a summary while unplugged and, Gnus knows from the group's
 -active range that there are more articles than the headers currently
 -stored in the Agent, you may see some articles whose subject looks
 -something like @samp{[Undownloaded article #####]}.  These are
 -placeholders for the missing headers.  Aside from setting a mark,
 -there is not much that can be done with one of these placeholders.
 -When Gnus finally gets a chance to fetch the group's headers, the
 -placeholders will automatically be replaced by the actual headers.
 -You can configure the summary buffer's maneuvering to skip over the
 -placeholders if you care (See @code{gnus-auto-goto-ignores}).
 +@item gnus-score-find-bnews
 +@findex gnus-score-find-bnews
 +Apply all score files that match, using bnews syntax.  This is the
 +default.  If the current group is @samp{gnu.emacs.gnus}, for instance,
 +@file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and
 +@file{gnu.all.SCORE} would all apply.  In short, the instances of
 +@samp{all} in the score file names are translated into @samp{.*}, and
 +then a regexp match is done.
  
 -While it may be obvious to all, the only headers and articles
 -available while unplugged are those headers and articles that were
 -fetched into the Agent while previously plugged.  To put it another
 -way, ``If you forget to fetch something while plugged, you might have a
 -less than satisfying unplugged session''.  For this reason, the Agent
 -adds two visual effects to your summary buffer.  These effects display
 -the download status of each article so that you always know which
 -articles will be available when unplugged.
 +This means that if you have some score entries that you want to apply to
 +all groups, then you put those entries in the @file{all.SCORE} file.
  
 -The first visual effect is the @samp{%O} spec.  If you customize
 -@code{gnus-summary-line-format} to include this specifier, you will add
 -a single character field that indicates an article's download status.
 -Articles that have been fetched into either the Agent or the Cache,
 -will display @code{gnus-downloaded-mark} (defaults to @samp{+}).  All
 -other articles will display @code{gnus-undownloaded-mark} (defaults to
 -@samp{-}).  If you open a group that has not been agentized, a space
 -(@samp{ }) will be displayed.
 +The score files are applied in a semi-random order, although Gnus will
 +try to apply the more general score files before the more specific score
 +files.  It does this by looking at the number of elements in the score
 +file names---discarding the @samp{all} elements.
  
 -The second visual effect are the undownloaded faces.  The faces, there
 -are three indicating the article's score (low, normal, high), seem to
 -result in a love/hate response from many Gnus users.  The problem is
 -that the face selection is controlled by a list of condition tests and
 -face names (See @code{gnus-summary-highlight}).  Each condition is
 -tested in the order in which it appears in the list so early
 -conditions have precedence over later conditions.  All of this means
 -that, if you tick an undownloaded article, the article will continue
 -to be displayed in the undownloaded face rather than the ticked face.
 +@item gnus-score-find-hierarchical
 +@findex gnus-score-find-hierarchical
 +Apply all score files from all the parent groups.  This means that you
 +can't have score files like @file{all.SCORE}, but you can have
 +@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE} for each
 +server.
  
 -If you use the Agent as a cache (to avoid downloading the same article
 -each time you visit it or to minimize your connection time), the
 -undownloaded face will probably seem like a good idea.  The reason
 -being that you do all of our work (marking, reading, deleting) with
 -downloaded articles so the normal faces always appear.  For those
 -users using the agent to improve online performance by caching the NOV
 -database (most users since 5.10.2), the undownloaded faces may appear
 -to be an absolutely horrible idea.  The issue being that, since none
 -of their articles have been fetched into the Agent, all of the
 -normal faces will be obscured by the undownloaded faces.
 +@end table
 +This variable can also be a list of functions.  In that case, all
 +these functions will be called with the group name as argument, and
 +all the returned lists of score files will be applied.  These
 +functions can also return lists of lists of score alists directly.  In
 +that case, the functions that return these non-file score alists
 +should probably be placed before the ``real'' score file functions, to
 +ensure that the last score file returned is the local score file.
 +Phu.
  
 -If you would like to use the undownloaded faces, you must enable the
 -undownloaded faces by setting the @code{agent-enable-undownloaded-faces}
 -group parameter to @code{t}.  This parameter, like all other agent
 -parameters, may be set on an Agent Category (@pxref{Agent Categories}),
 -a Group Topic (@pxref{Topic Parameters}), or an individual group
 -(@pxref{Group Parameters}).
 +For example, to do hierarchical scoring but use a non-server-specific
 +overall score file, you could use the value
 +@example
 +(list (lambda (group) ("all.SCORE"))
 +      'gnus-score-find-hierarchical)
 +@end example
  
 -The one problem common to all users using the agent is how quickly it
 -can consume disk space.  If you using the agent on many groups, it is
 -even more difficult to effectively recover disk space.  One solution
 -is the @samp{%F} format available in @code{gnus-group-line-format}.
 -This format will display the actual disk space used by articles
 -fetched into both the agent and cache.  By knowing which groups use
 -the most space, users know where to focus their efforts when ``agent
 -expiring'' articles.
 +@item gnus-score-expiry-days
 +@vindex gnus-score-expiry-days
 +This variable says how many days should pass before an unused score file
 +entry is expired.  If this variable is @code{nil}, no score file entries
 +are expired.  It's 7 by default.
  
 -@node Agent as Cache
 -@subsection Agent as Cache
 +@item gnus-update-score-entry-dates
 +@vindex gnus-update-score-entry-dates
 +If this variable is non-@code{nil}, temporary score entries that have
 +been triggered (matched) will have their dates updated.  (This is how Gnus
 +controls expiry---all non-matched-entries will become too old while
 +matched entries will stay fresh and young.)  However, if you set this
 +variable to @code{nil}, even matched entries will grow old and will
 +have to face that oh-so grim reaper.
  
 -When Gnus is plugged, it is not efficient to download headers or
 -articles from the server again, if they are already stored in the
 -Agent.  So, Gnus normally only downloads headers once, and stores them
 -in the Agent.  These headers are later used when generating the summary
 -buffer, regardless of whether you are plugged or unplugged.  Articles
 -are not cached in the Agent by default though (that would potentially
 -consume lots of disk space), but if you have already downloaded an
 -article into the Agent, Gnus will not download the article from the
 -server again but use the locally stored copy instead.
 +@item gnus-score-after-write-file-function
 +@vindex gnus-score-after-write-file-function
 +Function called with the name of the score file just written.
  
 -If you so desire, you can configure the agent (see @code{gnus-agent-cache}
 -@pxref{Agent Variables}) to always download headers and articles while
 -plugged.  Gnus will almost certainly be slower, but it will be kept
 -synchronized with the server.  That last point probably won't make any
 -sense if you are using a nntp or nnimap back end.
 +@item gnus-score-thread-simplify
 +@vindex gnus-score-thread-simplify
 +If this variable is non-@code{nil}, article subjects will be
 +simplified for subject scoring purposes in the same manner as with
 +threading---according to the current value of
 +@code{gnus-simplify-subject-functions}.  If the scoring entry uses
 +@code{substring} or @code{exact} matching, the match will also be
 +simplified in this manner.
  
 -@node Agent Expiry
 -@subsection Agent Expiry
 +@end table
  
 -@vindex gnus-agent-expire-days
 -@findex gnus-agent-expire
 -@kindex M-x gnus-agent-expire
 -@kindex M-x gnus-agent-expire-group
 -@findex gnus-agent-expire-group
 -@cindex agent expiry
 -@cindex Gnus agent expiry
 -@cindex expiry, in Gnus agent
  
 -The Agent back end, @code{nnagent}, doesn't handle expiry.  Well, at
 -least it doesn't handle it like other back ends.  Instead, there are
 -special @code{gnus-agent-expire} and @code{gnus-agent-expire-group}
 -commands that will expire all read articles that are older than
 -@code{gnus-agent-expire-days} days.  They can be run whenever you feel
 -that you're running out of space.  Neither are particularly fast or
 -efficient, and it's not a particularly good idea to interrupt them (with
 -@kbd{C-g} or anything else) once you've started one of them.
 +@node Score File Format
 +@section Score File Format
 +@cindex score file format
  
 -Note that other functions, e.g. @code{gnus-request-expire-articles},
 -might run @code{gnus-agent-expire} for you to keep the agent
 -synchronized with the group.
 +A score file is an @code{emacs-lisp} file that normally contains just a
 +single form.  Casual users are not expected to edit these files;
 +everything can be changed from the summary buffer.
  
 -The agent parameter @code{agent-enable-expiration} may be used to
 -prevent expiration in selected groups.
 +Anyway, if you'd like to dig into it yourself, here's an example:
  
 -@vindex gnus-agent-expire-all
 -If @code{gnus-agent-expire-all} is non-@code{nil}, the agent
 -expiration commands will expire all articles---unread, read, ticked
 -and dormant.  If @code{nil} (which is the default), only read articles
 -are eligible for expiry, and unread, ticked and dormant articles will
 -be kept indefinitely.
 +@lisp
 +(("from"
 +  ("Lars Ingebrigtsen" -10000)
 +  ("Per Abrahamsen")
 +  ("larsi\\|lmi" -50000 nil R))
 + ("subject"
 +  ("Ding is Badd" nil 728373))
 + ("xref"
 +  ("alt.politics" -1000 728372 s))
 + ("lines"
 +  (2 -100 nil <))
 + (mark 0)
 + (expunge -1000)
 + (mark-and-expunge -10)
 + (read-only nil)
 + (orphan -10)
 + (adapt t)
 + (files "/hom/larsi/News/gnu.SCORE")
 + (exclude-files "all.SCORE")
 + (local (gnus-newsgroup-auto-expire t)
 +        (gnus-summary-make-false-root empty))
 + (eval (ding)))
 +@end lisp
  
 -If you find that some articles eligible for expiry are never expired,
 -perhaps some Gnus Agent files are corrupted.  There's are special
 -commands, @code{gnus-agent-regenerate} and
 -@code{gnus-agent-regenerate-group}, to fix possible problems.
 +This example demonstrates most score file elements.  @xref{Advanced
 +Scoring}, for a different approach.
  
 -@node Agent Regeneration
 -@subsection Agent Regeneration
 +Even though this looks much like Lisp code, nothing here is actually
 +@code{eval}ed.  The Lisp reader is used to read this form, though, so it
 +has to be valid syntactically, if not semantically.
  
 -@cindex agent regeneration
 -@cindex Gnus agent regeneration
 -@cindex regeneration
 +Six keys are supported by this alist:
  
 -The local data structures used by @code{nnagent} may become corrupted
 -due to certain exceptional conditions.  When this happens,
 -@code{nnagent} functionality may degrade or even fail.  The solution
 -to this problem is to repair the local data structures by removing all
 -internal inconsistencies.
 +@table @code
  
 -For example, if your connection to your server is lost while
 -downloaded articles into the agent, the local data structures will not
 -know about articles successfully downloaded prior to the connection
 -failure.  Running @code{gnus-agent-regenerate} or
 -@code{gnus-agent-regenerate-group} will update the data structures
 -such that you don't need to download these articles a second time.
 +@item STRING
 +If the key is a string, it is the name of the header to perform the
 +match on.  Scoring can only be performed on these eight headers:
 +@code{From}, @code{Subject}, @code{References}, @code{Message-ID},
 +@code{Xref}, @code{Lines}, @code{Chars} and @code{Date}.  In addition to
 +these headers, there are three strings to tell Gnus to fetch the entire
 +article and do the match on larger parts of the article: @code{Body}
 +will perform the match on the body of the article, @code{Head} will
 +perform the match on the head of the article, and @code{All} will
 +perform the match on the entire article.  Note that using any of these
 +last three keys will slow down group entry @emph{considerably}.  The
 +final ``header'' you can score on is @code{Followup}.  These score
 +entries will result in new score entries being added for all follow-ups
 +to articles that matches these score entries.
  
 -@findex gnus-agent-regenerate
 -@kindex M-x gnus-agent-regenerate
 -The command @code{gnus-agent-regenerate} will perform
 -@code{gnus-agent-regenerate-group} on every agentized group.  While
 -you can run @code{gnus-agent-regenerate} in any buffer, it is strongly
 -recommended that you first close all summary buffers.
 +Following this key is an arbitrary number of score entries, where each
 +score entry has one to four elements.
 +@enumerate
  
 -@findex gnus-agent-regenerate-group
 -@kindex M-x gnus-agent-regenerate-group
 -The command @code{gnus-agent-regenerate-group} uses the local copies
 -of individual articles to repair the local @acronym{NOV}(header) database.  It
 -then updates the internal data structures that document which articles
 -are stored locally.  An optional argument will mark articles in the
 -agent as unread.
 +@item
 +The first element is the @dfn{match element}.  On most headers this will
 +be a string, but on the Lines and Chars headers, this must be an
 +integer.
  
 -@node Agent and flags
 -@subsection Agent and flags
 +@item
 +If the second element is present, it should be a number---the @dfn{score
 +element}.  This number should be an integer in the neginf to posinf
 +interval.  This number is added to the score of the article if the match
 +is successful.  If this element is not present, the
 +@code{gnus-score-interactive-default-score} number will be used
 +instead.  This is 1000 by default.
  
 -The Agent works with any Gnus back end including those, such as
 -nnimap, that store flags (read, ticked, etc) on the server.  Sadly,
 -the Agent does not actually know which backends keep their flags in
 -the backend server rather than in @file{.newsrc}.  This means that the
 -Agent, while unplugged or disconnected, will always record all changes
 -to the flags in its own files.
 +@item
 +If the third element is present, it should be a number---the @dfn{date
 +element}.  This date says when the last time this score entry matched,
 +which provides a mechanism for expiring the score entries.  It this
 +element is not present, the score entry is permanent.  The date is
 +represented by the number of days since December 31, 1 BCE.
  
 -When you plug back in, Gnus will then check to see if you have any
 -changed any flags and ask if you wish to synchronize these with the
 -server.  This behavior is customizable by @code{gnus-agent-synchronize-flags}.
 +@item
 +If the fourth element is present, it should be a symbol---the @dfn{type
 +element}.  This element specifies what function should be used to see
 +whether this score entry matches the article.  What match types that can
 +be used depends on what header you wish to perform the match on.
 +@table @dfn
  
 -@vindex gnus-agent-synchronize-flags
 -If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
 -never automatically synchronize flags.  If it is @code{ask}, which is
 -the default, the Agent will check if you made any changes and if so
 -ask if you wish to synchronize these when you re-connect.  If it has
 -any other value, all flags will be synchronized automatically.
 +@item From, Subject, References, Xref, Message-ID
 +For most header types, there are the @code{r} and @code{R} (regexp), as
 +well as @code{s} and @code{S} (substring) types, and @code{e} and
 +@code{E} (exact match), and @code{w} (word match) types.  If this
 +element is not present, Gnus will assume that substring matching should
 +be used.  @code{R}, @code{S}, and @code{E} differ from the others in
 +that the matches will be done in a case-sensitive manner.  All these
 +one-letter types are really just abbreviations for the @code{regexp},
 +@code{string}, @code{exact}, and @code{word} types, which you can use
 +instead, if you feel like.
  
 -If you do not wish to synchronize flags automatically when you
 -re-connect, you can do it manually with the
 -@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y}
 -in the group buffer.
 +@item Extra
 +Just as for the standard string overview headers, if you are using
 +gnus-extra-headers, you can score on these headers' values.  In this
 +case, there is a 5th element in the score entry, being the name of the
 +header to be scored.  The following entry is useful in your
 +@file{all.SCORE} file in case of spam attacks from a single origin
 +host, if your @acronym{NNTP} server tracks @samp{NNTP-Posting-Host} in
 +overviews:
  
 -Technical note: the synchronization algorithm does not work by ``pushing''
 -all local flags to the server, but rather by incrementally updated the
 -server view of flags by changing only those flags that were changed by
 -the user.  Thus, if you set one flag on an article, quit the group then
 -re-select the group and remove the flag; the flag will be set and
 -removed from the server when you ``synchronize''.  The queued flag
 -operations can be found in the per-server @code{flags} file in the Agent
 -directory.  It's emptied when you synchronize flags.
 +@lisp
 +("111.222.333.444" -1000 nil s
 + "NNTP-Posting-Host")
 +@end lisp
  
 -@node Agent and IMAP
 -@subsection Agent and IMAP
 +@item Lines, Chars
 +These two headers use different match types: @code{<}, @code{>},
 +@code{=}, @code{>=} and @code{<=}.
  
 -The Agent works with any Gnus back end, including nnimap.  However,
 -since there are some conceptual differences between @acronym{NNTP} and
 -@acronym{IMAP}, this section (should) provide you with some information to
 -make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client.
 +These predicates are true if
  
 -Some things are currently not implemented in the Agent that you'd might
 -expect from a disconnected @acronym{IMAP} client, including:
 +@example
 +(PREDICATE HEADER MATCH)
 +@end example
  
 -@itemize @bullet
 +evaluates to non-@code{nil}.  For instance, the advanced match
 +@code{("lines" 4 <)} (@pxref{Advanced Scoring}) will result in the
 +following form:
  
 -@item
 -Copying/moving articles into nnimap groups when unplugged.
 +@lisp
 +(< header-value 4)
 +@end lisp
  
 -@item
 -Creating/deleting nnimap groups when unplugged.
 +Or to put it another way: When using @code{<} on @code{Lines} with 4 as
 +the match, we get the score added if the article has less than 4 lines.
 +(It's easy to get confused and think it's the other way around.  But
 +it's not.  I think.)
  
 -@end itemize
 +When matching on @code{Lines}, be careful because some back ends (like
 +@code{nndir}) do not generate @code{Lines} header, so every article ends
 +up being marked as having 0 lines.  This can lead to strange results if
 +you happen to lower score of the articles with few lines.
  
 -@node Outgoing Messages
 -@subsection Outgoing Messages
 +@item Date
 +For the Date header we have three kinda silly match types:
 +@code{before}, @code{at} and @code{after}.  I can't really imagine this
 +ever being useful, but, like, it would feel kinda silly not to provide
 +this function.  Just in case.  You never know.  Better safe than sorry.
 +Once burnt, twice shy.  Don't judge a book by its cover.  Never not have
 +sex on a first date.  (I have been told that at least one person, and I
 +quote, ``found this function indispensable'', however.)
  
 -By default, when Gnus is unplugged, all outgoing messages (both mail
 -and news) are stored in the draft group ``queue'' (@pxref{Drafts}).
 -You can view them there after posting, and edit them at will.
 +@cindex ISO8601
 +@cindex date
 +A more useful match type is @code{regexp}.  With it, you can match the
 +date string using a regular expression.  The date is normalized to
 +ISO8601 compact format first---@var{YYYYMMDD}@code{T}@var{HHMMSS}.  If
 +you want to match all articles that have been posted on April 1st in
 +every year, you could use @samp{....0401.........} as a match string,
 +for instance.  (Note that the date is kept in its original time zone, so
 +this will match articles that were posted when it was April 1st where
 +the article was posted from.  Time zones are such wholesome fun for the
 +whole family, eh?)
  
 -You can control the circumstances under which outgoing mail is queued
 -(see @code{gnus-agent-queue-mail}, @pxref{Agent Variables}).  Outgoing
 -news is always queued when Gnus is unplugged, and never otherwise.
 +@item Head, Body, All
 +These three match keys use the same match types as the @code{From} (etc)
 +header uses.
  
 -You can send the messages either from the draft group with the special
 -commands available there, or you can use the @kbd{J S} command in the
 -group buffer to send all the sendable messages in the draft group.
 -Posting news will only work when Gnus is plugged, but you can send
 -mail at any time.
 +@item Followup
 +This match key is somewhat special, in that it will match the
 +@code{From} header, and affect the score of not only the matching
 +articles, but also all followups to the matching articles.  This allows
 +you e.g. increase the score of followups to your own articles, or
 +decrease the score of followups to the articles of some known
 +trouble-maker.  Uses the same match types as the @code{From} header
 +uses.  (Using this match key will lead to creation of @file{ADAPT}
 +files.)
  
 -If sending mail while unplugged does not work for you and you worry
 -about hitting @kbd{J S} by accident when unplugged, you can have Gnus
 -ask you to confirm your action (see
 -@code{gnus-agent-prompt-send-queue}, @pxref{Agent Variables}).
 +@item Thread
 +This match key works along the same lines as the @code{Followup} match
 +key.  If you say that you want to score on a (sub-)thread started by an
 +article with a @code{Message-ID} @var{x}, then you add a @samp{thread}
 +match.  This will add a new @samp{thread} match for each article that
 +has @var{x} in its @code{References} header.  (These new @samp{thread}
 +matches will use the @code{Message-ID}s of these matching articles.)
 +This will ensure that you can raise/lower the score of an entire thread,
 +even though some articles in the thread may not have complete
 +@code{References} headers.  Note that using this may lead to
 +undeterministic scores of the articles in the thread.  (Using this match
 +key will lead to creation of @file{ADAPT} files.)
 +@end table
 +@end enumerate
  
 -@node Agent Variables
 -@subsection Agent Variables
 +@cindex score file atoms
 +@item mark
 +The value of this entry should be a number.  Any articles with a score
 +lower than this number will be marked as read.
  
 -@table @code
 -@item gnus-agent
 -@vindex gnus-agent
 -Is the agent enabled?  The default is @code{t}.  When first enabled,
 -the agent will use @code{gnus-agent-auto-agentize-methods} to
 -automatically mark some back ends as agentized.  You may change which
 -back ends are agentized using the agent commands in the server buffer.
 +@item expunge
 +The value of this entry should be a number.  Any articles with a score
 +lower than this number will be removed from the summary buffer.
  
 -To enter the server buffer, use the @kbd{^}
 -(@code{gnus-group-enter-server-mode}) command in the group buffer.
 +@item mark-and-expunge
 +The value of this entry should be a number.  Any articles with a score
 +lower than this number will be marked as read and removed from the
 +summary buffer.
  
 +@item thread-mark-and-expunge
 +The value of this entry should be a number.  All articles that belong to
 +a thread that has a total score below this number will be marked as read
 +and removed from the summary buffer.  @code{gnus-thread-score-function}
 +says how to compute the total score for a thread.
  
 -@item gnus-agent-directory
 -@vindex gnus-agent-directory
 -Where the Gnus Agent will store its files.  The default is
 -@file{~/News/agent/}.
 +@item files
 +The value of this entry should be any number of file names.  These files
 +are assumed to be score files as well, and will be loaded the same way
 +this one was.
  
 -@item gnus-agent-handle-level
 -@vindex gnus-agent-handle-level
 -Groups on levels (@pxref{Group Levels}) higher than this variable will
 -be ignored by the Agent.  The default is @code{gnus-level-subscribed},
 -which means that only subscribed group will be considered by the Agent
 -by default.
 +@item exclude-files
 +The clue of this entry should be any number of files.  These files will
 +not be loaded, even though they would normally be so, for some reason or
 +other.
  
 -@item gnus-agent-plugged-hook
 -@vindex gnus-agent-plugged-hook
 -Hook run when connecting to the network.
 +@item eval
 +The value of this entry will be @code{eval}ed.  This element will be
 +ignored when handling global score files.
  
 -@item gnus-agent-unplugged-hook
 -@vindex gnus-agent-unplugged-hook
 -Hook run when disconnecting from the network.
 +@item read-only
 +Read-only score files will not be updated or saved.  Global score files
 +should feature this atom (@pxref{Global Score Files}).  (Note:
 +@dfn{Global} here really means @dfn{global}; not your personal
 +apply-to-all-groups score files.)
  
 -@item gnus-agent-fetched-hook
 -@vindex gnus-agent-fetched-hook
 -Hook run when finished fetching articles.
 +@item orphan
 +The value of this entry should be a number.  Articles that do not have
 +parents will get this number added to their scores.  Imagine you follow
 +some high-volume newsgroup, like @samp{comp.lang.c}.  Most likely you
 +will only follow a few of the threads, also want to see any new threads.
  
 -@item gnus-agent-cache
 -@vindex gnus-agent-cache
 -Variable to control whether use the locally stored @acronym{NOV} and
 -articles when plugged, e.g. essentially using the Agent as a cache.
 -The default is non-@code{nil}, which means to use the Agent as a cache.
 +You can do this with the following two score file entries:
  
 -@item gnus-agent-go-online
 -@vindex gnus-agent-go-online
 -If @code{gnus-agent-go-online} is @code{nil}, the Agent will never
 -automatically switch offline servers into online status.  If it is
 -@code{ask}, the default, the Agent will ask if you wish to switch
 -offline servers into online status when you re-connect.  If it has any
 -other value, all offline servers will be automatically switched into
 -online status.
 +@example
 +        (orphan -500)
 +        (mark-and-expunge -100)
 +@end example
  
 -@item gnus-agent-mark-unread-after-downloaded
 -@vindex gnus-agent-mark-unread-after-downloaded
 -If @code{gnus-agent-mark-unread-after-downloaded} is non-@code{nil},
 -mark articles as unread after downloading.  This is usually a safe
 -thing to do as the newly downloaded article has obviously not been
 -read.  The default is @code{t}.
 +When you enter the group the first time, you will only see the new
 +threads.  You then raise the score of the threads that you find
 +interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{c y}) the
 +rest.  Next time you enter the group, you will see new articles in the
 +interesting threads, plus any new threads.
  
 -@item gnus-agent-synchronize-flags
 -@vindex gnus-agent-synchronize-flags
 -If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
 -never automatically synchronize flags.  If it is @code{ask}, which is
 -the default, the Agent will check if you made any changes and if so
 -ask if you wish to synchronize these when you re-connect.  If it has
 -any other value, all flags will be synchronized automatically.
 +I.e.---the orphan score atom is for high-volume groups where a few
 +interesting threads which can't be found automatically by ordinary
 +scoring rules exist.
  
 -@item gnus-agent-consider-all-articles
 -@vindex gnus-agent-consider-all-articles
 -If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the
 -agent will let the agent predicate decide whether articles need to be
 -downloaded or not, for all articles.  When @code{nil}, the default,
 -the agent will only let the predicate decide whether unread articles
 -are downloaded or not.  If you enable this, you may also want to look
 -into the agent expiry settings (@pxref{Category Variables}), so that
 -the agent doesn't download articles which the agent will later expire,
 -over and over again.
 +@item adapt
 +This entry controls the adaptive scoring.  If it is @code{t}, the
 +default adaptive scoring rules will be used.  If it is @code{ignore}, no
 +adaptive scoring will be performed on this group.  If it is a list, this
 +list will be used as the adaptive scoring rules.  If it isn't present,
 +or is something other than @code{t} or @code{ignore}, the default
 +adaptive scoring rules will be used.  If you want to use adaptive
 +scoring on most groups, you'd set @code{gnus-use-adaptive-scoring} to
 +@code{t}, and insert an @code{(adapt ignore)} in the groups where you do
 +not want adaptive scoring.  If you only want adaptive scoring in a few
 +groups, you'd set @code{gnus-use-adaptive-scoring} to @code{nil}, and
 +insert @code{(adapt t)} in the score files of the groups where you want
 +it.
  
 -@item gnus-agent-max-fetch-size
 -@vindex gnus-agent-max-fetch-size
 -The agent fetches articles into a temporary buffer prior to parsing
 -them into individual files.  To avoid exceeding the max. buffer size,
 -the agent alternates between fetching and parsing until all articles
 -have been fetched.  @code{gnus-agent-max-fetch-size} provides a size
 -limit to control how often the cycling occurs.  A large value improves
 -performance.  A small value minimizes the time lost should the
 -connection be lost while fetching (You may need to run
 -@code{gnus-agent-regenerate-group} to update the group's state.
 -However, all articles parsed prior to loosing the connection will be
 -available while unplugged).  The default is 10M so it is unusual to
 -see any cycling.
 +@item adapt-file
 +All adaptive score entries will go to the file named by this entry.  It
 +will also be applied when entering the group.  This atom might be handy
 +if you want to adapt on several groups at once, using the same adaptive
 +file for a number of groups.
  
 -@item gnus-server-unopen-status
 -@vindex gnus-server-unopen-status
 -Perhaps not an Agent variable, but closely related to the Agent, this
 -variable says what will happen if Gnus cannot open a server.  If the
 -Agent is enabled, the default, @code{nil}, makes Gnus ask the user
 -whether to deny the server or whether to unplug the agent.  If the
 -Agent is disabled, Gnus always simply deny the server.  Other choices
 -for this variable include @code{denied} and @code{offline} the latter
 -is only valid if the Agent is used.
 +@item local
 +@cindex local variables
 +The value of this entry should be a list of @code{(@var{var}
 +@var{value})} pairs.  Each @var{var} will be made buffer-local to the
 +current summary buffer, and set to the value specified.  This is a
 +convenient, if somewhat strange, way of setting variables in some
 +groups if you don't like hooks much.  Note that the @var{value} won't
 +be evaluated.
 +@end table
  
 -@item gnus-auto-goto-ignores
 -@vindex gnus-auto-goto-ignores
 -Another variable that isn't an Agent variable, yet so closely related
 -that most will look for it here, this variable tells the summary
 -buffer how to maneuver around undownloaded (only headers stored in the
 -agent) and unfetched (neither article nor headers stored) articles.
  
 -The valid values are @code{nil} (maneuver to any article),
 -@code{undownloaded} (maneuvering while unplugged ignores articles that
 -have not been fetched), @code{always-undownloaded} (maneuvering always
 -ignores articles that have not been fetched), @code{unfetched}
 -(maneuvering ignores articles whose headers have not been fetched).
 +@node Score File Editing
 +@section Score File Editing
  
 -@item gnus-agent-queue-mail
 -@vindex gnus-agent-queue-mail
 -When @code{gnus-agent-queue-mail} is @code{always}, Gnus will always
 -queue mail rather than sending it straight away.  When @code{t}, Gnus
 -will queue mail when unplugged only.  When @code{nil}, never queue
 -mail.  The default is @code{t}.
 +You normally enter all scoring commands from the summary buffer, but you
 +might feel the urge to edit them by hand as well, so we've supplied you
 +with a mode for that.
  
 -@item gnus-agent-prompt-send-queue
 -@vindex gnus-agent-prompt-send-queue
 -When @code{gnus-agent-prompt-send-queue} is non-@code{nil} Gnus will
 -prompt you to confirm that you really wish to proceed if you hit
 -@kbd{J S} while unplugged.  The default is @code{nil}.
 +It's simply a slightly customized @code{emacs-lisp} mode, with these
 +additional commands:
  
 -@item gnus-agent-auto-agentize-methods
 -@vindex gnus-agent-auto-agentize-methods
 -If you have never used the Agent before (or more technically, if
 -@file{~/News/agent/lib/servers} does not exist), Gnus will
 -automatically agentize a few servers for you.  This variable control
 -which back ends should be auto-agentized.  It is typically only useful
 -to agentize remote back ends.  The auto-agentizing has the same effect
 -as running @kbd{J a} on the servers (@pxref{Server Agent Commands}).
 -If the file exist, you must manage the servers manually by adding or
 -removing them, this variable is only applicable the first time you
 -start Gnus.  The default is @samp{(nntp nnimap)}.
 +@table @kbd
  
 -@end table
 +@item C-c C-c
 +@kindex C-c C-c (Score)
 +@findex gnus-score-edit-exit
 +Save the changes you have made and return to the summary buffer
 +(@code{gnus-score-edit-exit}).
  
 +@item C-c C-d
 +@kindex C-c C-d (Score)
 +@findex gnus-score-edit-insert-date
 +Insert the current date in numerical format
 +(@code{gnus-score-edit-insert-date}).  This is really the day number, if
 +you were wondering.
  
 -@node Example Setup
 -@subsection Example Setup
 +@item C-c C-p
 +@kindex C-c C-p (Score)
 +@findex gnus-score-pretty-print
 +The adaptive score files are saved in an unformatted fashion.  If you
 +intend to read one of these files, you want to @dfn{pretty print} it
 +first.  This command (@code{gnus-score-pretty-print}) does that for
 +you.
  
 -If you don't want to read this manual, and you have a fairly standard
 -setup, you may be able to use something like the following as your
 -@file{~/.gnus.el} file to get started.
 +@end table
  
 -@lisp
 -;; @r{Define how Gnus is to fetch news.  We do this over @acronym{NNTP}}
 -;; @r{from your ISP's server.}
 -(setq gnus-select-method '(nntp "news.your-isp.com"))
 +Type @kbd{M-x gnus-score-mode} to use this mode.
  
 -;; @r{Define how Gnus is to read your mail.  We read mail from}
 -;; @r{your ISP's @acronym{POP} server.}
 -(setq mail-sources '((pop :server "pop.your-isp.com")))
 +@vindex gnus-score-mode-hook
 +@code{gnus-score-menu-hook} is run in score mode buffers.
  
 -;; @r{Say how Gnus is to store the mail.  We use nnml groups.}
 -(setq gnus-secondary-select-methods '((nnml "")))
 +In the summary buffer you can use commands like @kbd{V f}, @kbd{V e} and
 +@kbd{V t} to begin editing score files.
  
 -;; @r{Make Gnus into an offline newsreader.}
 -;; (gnus-agentize) ; @r{The obsolete setting.}
 -;; (setq gnus-agent t) ; @r{Now the default.}
 -@end lisp
  
 -That should be it, basically.  Put that in your @file{~/.gnus.el} file,
 -edit to suit your needs, start up PPP (or whatever), and type @kbd{M-x
 -gnus}.
 +@node Adaptive Scoring
 +@section Adaptive Scoring
 +@cindex adaptive scoring
  
 -If this is the first time you've run Gnus, you will be subscribed
 -automatically to a few default newsgroups.  You'll probably want to
 -subscribe to more groups, and to do that, you have to query the
 -@acronym{NNTP} server for a complete list of groups with the @kbd{A A}
 -command.  This usually takes quite a while, but you only have to do it
 -once.
 +If all this scoring is getting you down, Gnus has a way of making it all
 +happen automatically---as if by magic.  Or rather, as if by artificial
 +stupidity, to be precise.
  
 -After reading and parsing a while, you'll be presented with a list of
 -groups.  Subscribe to the ones you want to read with the @kbd{u}
 -command.  @kbd{l} to make all the killed groups disappear after you've
 -subscribe to all the groups you want to read.  (@kbd{A k} will bring
 -back all the killed groups.)
 +@vindex gnus-use-adaptive-scoring
 +When you read an article, or mark an article as read, or kill an
 +article, you leave marks behind.  On exit from the group, Gnus can sniff
 +these marks and add score elements depending on what marks it finds.
 +You turn on this ability by setting @code{gnus-use-adaptive-scoring} to
 +@code{t} or @code{(line)}.  If you want score adaptively on separate
 +words appearing in the subjects, you should set this variable to
 +@code{(word)}.  If you want to use both adaptive methods, set this
 +variable to @code{(word line)}.
  
 -You can now read the groups at once, or you can download the articles
 -with the @kbd{J s} command.  And then read the rest of this manual to
 -find out which of the other gazillion things you want to customize.
 +@vindex gnus-default-adaptive-score-alist
 +To give you complete control over the scoring process, you can customize
 +the @code{gnus-default-adaptive-score-alist} variable.  For instance, it
 +might look something like this:
  
 +@lisp
 +(setq gnus-default-adaptive-score-alist
 +  '((gnus-unread-mark)
 +    (gnus-ticked-mark (from 4))
 +    (gnus-dormant-mark (from 5))
 +    (gnus-del-mark (from -4) (subject -1))
 +    (gnus-read-mark (from 4) (subject 2))
 +    (gnus-expirable-mark (from -1) (subject -1))
 +    (gnus-killed-mark (from -1) (subject -3))
 +    (gnus-kill-file-mark)
 +    (gnus-ancient-mark)
 +    (gnus-low-score-mark)
 +    (gnus-catchup-mark (from -1) (subject -1))))
 +@end lisp
  
 -@node Batching Agents
 -@subsection Batching Agents
 -@findex gnus-agent-batch
 +As you see, each element in this alist has a mark as a key (either a
 +variable name or a ``real'' mark---a character).  Following this key is
 +a arbitrary number of header/score pairs.  If there are no header/score
 +pairs following the key, no adaptive scoring will be done on articles
 +that have that key as the article mark.  For instance, articles with
 +@code{gnus-unread-mark} in the example above will not get adaptive score
 +entries.
  
 -Having the Gnus Agent fetch articles (and post whatever messages you've
 -written) is quite easy once you've gotten things set up properly.  The
 -following shell script will do everything that is necessary:
 +Each article can have only one mark, so just a single of these rules
 +will be applied to each article.
  
 -You can run a complete batch command from the command line with the
 -following incantation:
 +To take @code{gnus-del-mark} as an example---this alist says that all
 +articles that have that mark (i.e., are marked with @samp{e}) will have a
 +score entry added to lower based on the @code{From} header by -4, and
 +lowered by @code{Subject} by -1.  Change this to fit your prejudices.
  
 -@example
 -#!/bin/sh
 -emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1
 -@end example
 +If you have marked 10 articles with the same subject with
 +@code{gnus-del-mark}, the rule for that mark will be applied ten times.
 +That means that that subject will get a score of ten times -1, which
 +should be, unless I'm much mistaken, -10.
  
 +If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all
 +the read articles will be marked with the @samp{E} mark.  This'll
 +probably make adaptive scoring slightly impossible, so auto-expiring and
 +adaptive scoring doesn't really mix very well.
  
 -@node Agent Caveats
 -@subsection Agent Caveats
 +The headers you can score on are @code{from}, @code{subject},
 +@code{message-id}, @code{references}, @code{xref}, @code{lines},
 +@code{chars} and @code{date}.  In addition, you can score on
 +@code{followup}, which will create an adaptive score entry that matches
 +on the @code{References} header using the @code{Message-ID} of the
 +current article, thereby matching the following thread.
  
 -The Gnus Agent doesn't seem to work like most other offline
 -newsreaders.  Here are some common questions that some imaginary people
 -may ask:
 +If you use this scheme, you should set the score file atom @code{mark}
 +to something small---like -300, perhaps, to avoid having small random
 +changes result in articles getting marked as read.
  
 -@table @dfn
 -@item If I read an article while plugged, do they get entered into the Agent?
 +After using adaptive scoring for a week or so, Gnus should start to
 +become properly trained and enhance the authors you like best, and kill
 +the authors you like least, without you having to say so explicitly.
  
 -@strong{No}.  If you want this behavior, add
 -@code{gnus-agent-fetch-selected-article} to
 -@code{gnus-select-article-hook}.
 +You can control what groups the adaptive scoring is to be performed on
 +by using the score files (@pxref{Score File Format}).  This will also
 +let you use different rules in different groups.
  
 -@item If I read an article while plugged, and the article already exists in
 -the Agent, will it get downloaded once more?
 +@vindex gnus-adaptive-file-suffix
 +The adaptive score entries will be put into a file where the name is the
 +group name with @code{gnus-adaptive-file-suffix} appended.  The default
 +is @file{ADAPT}.
  
 -@strong{No}, unless @code{gnus-agent-cache} is @code{nil}.
 +@vindex gnus-adaptive-pretty-print
 +Adaptive score files can get huge and are not meant to be edited by
 +human hands.  If @code{gnus-adaptive-pretty-print} is @code{nil} (the
 +default) those files will not be written in a human readable way.
  
 -@end table
 +@vindex gnus-score-exact-adapt-limit
 +When doing adaptive scoring, substring or fuzzy matching would probably
 +give you the best results in most cases.  However, if the header one
 +matches is short, the possibility for false positives is great, so if
 +the length of the match is less than
 +@code{gnus-score-exact-adapt-limit}, exact matching will be used.  If
 +this variable is @code{nil}, exact matching will always be used to avoid
 +this problem.
  
 -In short, when Gnus is unplugged, it only looks into the locally stored
 -articles; when it's plugged, it talks to your ISP and may also use the
 -locally stored articles.
 +@vindex gnus-default-adaptive-word-score-alist
 +As mentioned above, you can adapt either on individual words or entire
 +headers.  If you adapt on words, the
 +@code{gnus-default-adaptive-word-score-alist} variable says what score
 +each instance of a word should add given a mark.
  
 +@lisp
 +(setq gnus-default-adaptive-word-score-alist
 +      `((,gnus-read-mark . 30)
 +        (,gnus-catchup-mark . -10)
 +        (,gnus-killed-mark . -20)
 +        (,gnus-del-mark . -15)))
 +@end lisp
  
 -@node Scoring
 -@chapter Scoring
 -@cindex scoring
 +This is the default value.  If you have adaption on words enabled, every
 +word that appears in subjects of articles marked with
 +@code{gnus-read-mark} will result in a score rule that increase the
 +score with 30 points.
  
 -Other people use @dfn{kill files}, but we here at Gnus Towers like
 -scoring better than killing, so we'd rather switch than fight.  They do
 -something completely different as well, so sit up straight and pay
 -attention!
 +@vindex gnus-default-ignored-adaptive-words
 +@vindex gnus-ignored-adaptive-words
 +Words that appear in the @code{gnus-default-ignored-adaptive-words} list
 +will be ignored.  If you wish to add more words to be ignored, use the
 +@code{gnus-ignored-adaptive-words} list instead.
  
 -@vindex gnus-summary-mark-below
 -All articles have a default score (@code{gnus-summary-default-score}),
 -which is 0 by default.  This score may be raised or lowered either
 -interactively or by score files.  Articles that have a score lower than
 -@code{gnus-summary-mark-below} are marked as read.
 +@vindex gnus-adaptive-word-length-limit
 +Some may feel that short words shouldn't count when doing adaptive
 +scoring.  If so, you may set @code{gnus-adaptive-word-length-limit} to
 +an integer.  Words shorter than this number will be ignored.  This
 +variable defaults to @code{nil}.
  
 -Gnus will read any @dfn{score files} that apply to the current group
 -before generating the summary buffer.
 +@vindex gnus-adaptive-word-syntax-table
 +When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
 +syntax table in effect.  It is similar to the standard syntax table, but
 +it considers numbers to be non-word-constituent characters.
  
 -There are several commands in the summary buffer that insert score
 -entries based on the current article.  You can, for instance, ask Gnus to
 -lower or increase the score of all articles with a certain subject.
 +@vindex gnus-adaptive-word-minimum
 +If @code{gnus-adaptive-word-minimum} is set to a number, the adaptive
 +word scoring process will never bring down the score of an article to
 +below this number.  The default is @code{nil}.
  
 -There are two sorts of scoring entries: Permanent and temporary.
 -Temporary score entries are self-expiring entries.  Any entries that are
 -temporary and have not been used for, say, a week, will be removed
 -silently to help keep the sizes of the score files down.
 +@vindex gnus-adaptive-word-no-group-words
 +If @code{gnus-adaptive-word-no-group-words} is set to @code{t}, gnus
 +won't adaptively word score any of the words in the group name.  Useful
 +for groups like @samp{comp.editors.emacs}, where most of the subject
 +lines contain the word @samp{emacs}.
  
 -@menu
 -* Summary Score Commands::      Adding score entries for the current group.
 -* Group Score Commands::        General score commands.
 -* Score Variables::             Customize your scoring.  (My, what terminology).
 -* Score File Format::           What a score file may contain.
 -* Score File Editing::          You can edit score files by hand as well.
 -* Adaptive Scoring::            Big Sister Gnus knows what you read.
 -* Home Score File::             How to say where new score entries are to go.
 -* Followups To Yourself::       Having Gnus notice when people answer you.
 -* Scoring On Other Headers::    Scoring on non-standard headers.
 -* Scoring Tips::                How to score effectively.
 -* Reverse Scoring::             That problem child of old is not problem.
 -* Global Score Files::          Earth-spanning, ear-splitting score files.
 -* Kill Files::                  They are still here, but they can be ignored.
 -* Converting Kill Files::       Translating kill files to score files.
 -* Advanced Scoring::            Using logical expressions to build score rules.
 -* Score Decays::                It can be useful to let scores wither away.
 -@end menu
 +After using this scheme for a while, it might be nice to write a
 +@code{gnus-psychoanalyze-user} command to go through the rules and see
 +what words you like and what words you don't like.  Or perhaps not.
  
 +Note that the adaptive word scoring thing is highly experimental and is
 +likely to change in the future.  Initial impressions seem to indicate
 +that it's totally useless as it stands.  Some more work (involving more
 +rigorous statistical methods) will have to be done to make this useful.
  
 -@node Summary Score Commands
 -@section Summary Score Commands
 -@cindex score commands
  
 -The score commands that alter score entries do not actually modify real
 -score files.  That would be too inefficient.  Gnus maintains a cache of
 -previously loaded score files, one of which is considered the
 -@dfn{current score file alist}.  The score commands simply insert
 -entries into this list, and upon group exit, this list is saved.
 +@node Home Score File
 +@section Home Score File
  
 -The current score file is by default the group's local score file, even
 -if no such score file actually exists.  To insert score commands into
 -some other score file (e.g. @file{all.SCORE}), you must first make this
 -score file the current one.
 +The score file where new score file entries will go is called the
 +@dfn{home score file}.  This is normally (and by default) the score file
 +for the group itself.  For instance, the home score file for
 +@samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}.
  
 -General score commands that don't actually change the score file:
 +However, this may not be what you want.  It is often convenient to share
 +a common home score file among many groups---all @samp{emacs} groups
 +could perhaps use the same home score file.
  
 -@table @kbd
 +@vindex gnus-home-score-file
 +The variable that controls this is @code{gnus-home-score-file}.  It can
 +be:
  
 -@item V s
 -@kindex V s (Summary)
 -@findex gnus-summary-set-score
 -Set the score of the current article (@code{gnus-summary-set-score}).
 +@enumerate
 +@item
 +A string.  Then this file will be used as the home score file for all
 +groups.
  
 -@item V S
 -@kindex V S (Summary)
 -@findex gnus-summary-current-score
 -Display the score of the current article
 -(@code{gnus-summary-current-score}).
 +@item
 +A function.  The result of this function will be used as the home score
 +file.  The function will be called with the name of the group as the
 +parameter.
  
 -@item V t
 -@kindex V t (Summary)
 -@findex gnus-score-find-trace
 -Display all score rules that have been used on the current article
 -(@code{gnus-score-find-trace}).  In the @code{*Score Trace*} buffer, you
 -may type @kbd{e} to edit score file corresponding to the score rule on
 -current line and @kbd{f} to format (@code{gnus-score-pretty-print}) the
 -score file and edit it.
 +@item
 +A list.  The elements in this list can be:
  
 -@item V w
 -@kindex V w (Summary)
 -@findex gnus-score-find-favourite-words
 -List words used in scoring (@code{gnus-score-find-favourite-words}).
 +@enumerate
 +@item
 +@code{(@var{regexp} @var{file-name})}.  If the @var{regexp} matches the
 +group name, the @var{file-name} will be used as the home score file.
  
 -@item V R
 -@kindex V R (Summary)
 -@findex gnus-summary-rescore
 -Run the current summary through the scoring process
 -(@code{gnus-summary-rescore}).  This might be useful if you're playing
 -around with your score files behind Gnus' back and want to see the
 -effect you're having.
 +@item
 +A function.  If the function returns non-@code{nil}, the result will
 +be used as the home score file.  The function will be called with the
 +name of the group as the parameter.
  
 -@item V c
 -@kindex V c (Summary)
 -@findex gnus-score-change-score-file
 -Make a different score file the current
 -(@code{gnus-score-change-score-file}).
 +@item
 +A string.  Use the string as the home score file.
 +@end enumerate
  
 -@item V e
 -@kindex V e (Summary)
 -@findex gnus-score-edit-current-scores
 -Edit the current score file (@code{gnus-score-edit-current-scores}).
 -You will be popped into a @code{gnus-score-mode} buffer (@pxref{Score
 -File Editing}).
 +The list will be traversed from the beginning towards the end looking
 +for matches.
  
 -@item V f
 -@kindex V f (Summary)
 -@findex gnus-score-edit-file
 -Edit a score file and make this score file the current one
 -(@code{gnus-score-edit-file}).
 +@end enumerate
  
 -@item V F
 -@kindex V F (Summary)
 -@findex gnus-score-flush-cache
 -Flush the score cache (@code{gnus-score-flush-cache}).  This is useful
 -after editing score files.
 +So, if you want to use just a single score file, you could say:
  
 -@item V C
 -@kindex V C (Summary)
 -@findex gnus-score-customize
 -Customize a score file in a visually pleasing manner
 -(@code{gnus-score-customize}).
 +@lisp
 +(setq gnus-home-score-file
 +      "my-total-score-file.SCORE")
 +@end lisp
  
 -@end table
 +If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and
 +@file{rec.SCORE} for all @samp{rec} groups (and so on), you can say:
  
 -The rest of these commands modify the local score file.
 +@findex gnus-hierarchial-home-score-file
 +@lisp
 +(setq gnus-home-score-file
 +      'gnus-hierarchial-home-score-file)
 +@end lisp
  
 -@table @kbd
 +This is a ready-made function provided for your convenience.
 +Other functions include
  
 -@item V m
 -@kindex V m (Summary)
 -@findex gnus-score-set-mark-below
 -Prompt for a score, and mark all articles with a score below this as
 -read (@code{gnus-score-set-mark-below}).
 +@table @code
 +@item gnus-current-home-score-file
 +@findex gnus-current-home-score-file
 +Return the ``current'' regular score file.  This will make scoring
 +commands add entry to the ``innermost'' matching score file.
  
 -@item V x
 -@kindex V x (Summary)
 -@findex gnus-score-set-expunge-below
 -Prompt for a score, and add a score rule to the current score file to
 -expunge all articles below this score
 -(@code{gnus-score-set-expunge-below}).
  @end table
  
 -The keystrokes for actually making score entries follow a very regular
 -pattern, so there's no need to list all the commands.  (Hundreds of
 -them.)
 -
 -@findex gnus-summary-increase-score
 -@findex gnus-summary-lower-score
 +If you want to have one score file for the @samp{emacs} groups and
 +another for the @samp{comp} groups, while letting all other groups use
 +their own home score files:
  
 -@enumerate
 -@item
 -The first key is either @kbd{I} (upper case i) for increasing the score
 -or @kbd{L} for lowering the score.
 -@item
 -The second key says what header you want to score on.  The following
 -keys are available:
 -@table @kbd
 +@lisp
 +(setq gnus-home-score-file
 +      ;; @r{All groups that match the regexp @code{"\\.emacs"}}
 +      '(("\\.emacs" "emacs.SCORE")
 +        ;; @r{All the comp groups in one score file}
 +        ("^comp" "comp.SCORE")))
 +@end lisp
  
 -@item a
 -Score on the author name.
 +@vindex gnus-home-adapt-file
 +@code{gnus-home-adapt-file} works exactly the same way as
 +@code{gnus-home-score-file}, but says what the home adaptive score file
 +is instead.  All new adaptive file entries will go into the file
 +specified by this variable, and the same syntax is allowed.
  
 -@item s
 -Score on the subject line.
 +In addition to using @code{gnus-home-score-file} and
 +@code{gnus-home-adapt-file}, you can also use group parameters
 +(@pxref{Group Parameters}) and topic parameters (@pxref{Topic
 +Parameters}) to achieve much the same.  Group and topic parameters take
 +precedence over this variable.
  
 -@item x
 -Score on the @code{Xref} line---i.e., the cross-posting line.
  
 -@item r
 -Score on the @code{References} line.
 +@node Followups To Yourself
 +@section Followups To Yourself
  
 -@item d
 -Score on the date.
 +Gnus offers two commands for picking out the @code{Message-ID} header in
 +the current buffer.  Gnus will then add a score rule that scores using
 +this @code{Message-ID} on the @code{References} header of other
 +articles.  This will, in effect, increase the score of all articles that
 +respond to the article in the current buffer.  Quite useful if you want
 +to easily note when people answer what you've said.
  
 -@item l
 -Score on the number of lines.
 +@table @code
  
 -@item i
 -Score on the @code{Message-ID} header.
 +@item gnus-score-followup-article
 +@findex gnus-score-followup-article
 +This will add a score to articles that directly follow up your own
 +article.
  
 -@item e
 -Score on an ``extra'' header, that is, one of those in gnus-extra-headers,
 -if your @acronym{NNTP} server tracks additional header data in overviews.
 +@item gnus-score-followup-thread
 +@findex gnus-score-followup-thread
 +This will add a score to all articles that appear in a thread ``below''
 +your own article.
 +@end table
  
 -@item f
 -Score on followups---this matches the author name, and adds scores to
 -the followups to this author.  (Using this key leads to the creation of
 -@file{ADAPT} files.)
 +@vindex message-sent-hook
 +These two functions are both primarily meant to be used in hooks like
 +@code{message-sent-hook}, like this:
 +@lisp
 +(add-hook 'message-sent-hook 'gnus-score-followup-thread)
 +@end lisp
  
 -@item b
 -Score on the body.
  
 -@item h
 -Score on the head.
 +If you look closely at your own @code{Message-ID}, you'll notice that
 +the first two or three characters are always the same.  Here's two of
 +mine:
  
 -@item t
 -Score on thread.  (Using this key leads to the creation of @file{ADAPT}
 -files.)
 +@example
 +<x6u3u47icf.fsf@@eyesore.no>
 +<x6sp9o7ibw.fsf@@eyesore.no>
 +@end example
  
 -@end table
 +So ``my'' ident on this machine is @samp{x6}.  This can be
 +exploited---the following rule will raise the score on all followups to
 +myself:
  
 -@item
 -The third key is the match type.  Which match types are valid depends on
 -what headers you are scoring on.
 +@lisp
 +("references"
 + ("<x6[0-9a-z]+\\.fsf\\(_-_\\)?@@.*eyesore\\.no>"
 +  1000 nil r))
 +@end lisp
  
 -@table @code
 +Whether it's the first two or first three characters that are ``yours''
 +is system-dependent.
  
 -@item strings
  
 -@table @kbd
 +@node Scoring On Other Headers
 +@section Scoring On Other Headers
 +@cindex scoring on other headers
  
 -@item e
 -Exact matching.
 +Gnus is quite fast when scoring the ``traditional''
 +headers---@samp{From}, @samp{Subject} and so on.  However, scoring
 +other headers requires writing a @code{head} scoring rule, which means
 +that Gnus has to request every single article from the back end to find
 +matches.  This takes a long time in big groups.
  
 -@item s
 -Substring matching.
 +@vindex gnus-inhibit-slow-scoring
 +You can inhibit this slow scoring on headers or body by setting the
 +variable @code{gnus-inhibit-slow-scoring}.  If
 +@code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if
 +the group matches the regexp.  If it is t, slow scoring on it is
 +inhibited for all groups.
  
 -@item f
 -Fuzzy matching (@pxref{Fuzzy Matching}).
 +Now, there's not much you can do about the slowness for news groups, but for
 +mail groups, you have greater control.  In @ref{To From Newsgroups},
 +it's explained in greater detail what this mechanism does, but here's
 +a cookbook example for @code{nnml} on how to allow scoring on the
 +@samp{To} and @samp{Cc} headers.
  
 -@item r
 -Regexp matching
 -@end table
 +Put the following in your @file{~/.gnus.el} file.
  
 -@item date
 -@table @kbd
 +@lisp
 +(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
 +      nnmail-extra-headers gnus-extra-headers)
 +@end lisp
  
 -@item b
 -Before date.
 +Restart Gnus and rebuild your @code{nnml} overview files with the
 +@kbd{M-x nnml-generate-nov-databases} command.  This will take a long
 +time if you have much mail.
  
 -@item a
 -After date.
 +Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
 +so: @kbd{I e s p To RET <your name> RET}.
  
 -@item n
 -This date.
 -@end table
 +See?  Simple.
  
 -@item number
 -@table @kbd
  
 -@item <
 -Less than number.
 +@node Scoring Tips
 +@section Scoring Tips
 +@cindex scoring tips
  
 -@item =
 -Equal to number.
 +@table @dfn
  
 -@item >
 -Greater than number.
 -@end table
 -@end table
 +@item Crossposts
 +@cindex crossposts
 +@cindex scoring crossposts
 +If you want to lower the score of crossposts, the line to match on is
 +the @code{Xref} header.
 +@lisp
 +("xref" (" talk.politics.misc:" -1000))
 +@end lisp
  
 -@item
 -The fourth and usually final key says whether this is a temporary (i.e.,
 -expiring) score entry, or a permanent (i.e., non-expiring) score entry,
 -or whether it is to be done immediately, without adding to the score
 -file.
 -@table @kbd
 +@item Multiple crossposts
 +If you want to lower the score of articles that have been crossposted to
 +more than, say, 3 groups:
 +@lisp
 +("xref"
 +  ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+"
 +   -1000 nil r))
 +@end lisp
  
 -@item t
 -Temporary score entry.
 +@item Matching on the body
 +This is generally not a very good idea---it takes a very long time.
 +Gnus actually has to fetch each individual article from the server.  But
 +you might want to anyway, I guess.  Even though there are three match
 +keys (@code{Head}, @code{Body} and @code{All}), you should choose one
 +and stick with it in each score file.  If you use any two, each article
 +will be fetched @emph{twice}.  If you want to match a bit on the
 +@code{Head} and a bit on the @code{Body}, just use @code{All} for all
 +the matches.
  
 -@item p
 -Permanent score entry.
 +@item Marking as read
 +You will probably want to mark articles that have scores below a certain
 +number as read.  This is most easily achieved by putting the following
 +in your @file{all.SCORE} file:
 +@lisp
 +((mark -100))
 +@end lisp
 +You may also consider doing something similar with @code{expunge}.
  
 -@item i
 -Immediately scoring.
 +@item Negated character classes
 +If you say stuff like @code{[^abcd]*}, you may get unexpected results.
 +That will match newlines, which might lead to, well, The Unknown.  Say
 +@code{[^abcd\n]*} instead.
  @end table
  
 -@item
 -If you are scoring on `e' (extra) headers, you will then be prompted for
 -the header name on which you wish to score.  This must be a header named
 -in gnus-extra-headers, and @samp{TAB} completion is available.
 -
 -@end enumerate
  
 -So, let's say you want to increase the score on the current author with
 -exact matching permanently: @kbd{I a e p}.  If you want to lower the
 -score based on the subject line, using substring matching, and make a
 -temporary score entry: @kbd{L s s t}.  Pretty easy.
 +@node Reverse Scoring
 +@section Reverse Scoring
 +@cindex reverse scoring
  
 -To make things a bit more complicated, there are shortcuts.  If you use
 -a capital letter on either the second or third keys, Gnus will use
 -defaults for the remaining one or two keystrokes.  The defaults are
 -``substring'' and ``temporary''.  So @kbd{I A} is the same as @kbd{I a s
 -t}, and @kbd{I a R} is the same as @kbd{I a r t}.
 +If you want to keep just articles that have @samp{Sex with Emacs} in the
 +subject header, and expunge all other articles, you could put something
 +like this in your score file:
  
 -These functions take both the numerical prefix and the symbolic prefix
 -(@pxref{Symbolic Prefixes}).  A numerical prefix says how much to lower
 -(or increase) the score of the article.  A symbolic prefix of @code{a}
 -says to use the @file{all.SCORE} file for the command instead of the
 -current score file.
 +@lisp
 +(("subject"
 +  ("Sex with Emacs" 2))
 + (mark 1)
 + (expunge 1))
 +@end lisp
  
 -@vindex gnus-score-mimic-keymap
 -The @code{gnus-score-mimic-keymap} says whether these commands will
 -pretend they are keymaps or not.
 +So, you raise all articles that match @samp{Sex with Emacs} and mark the
 +rest as read, and expunge them to boot.
  
  
 -@node Group Score Commands
 -@section Group Score Commands
 -@cindex group score commands
 +@node Global Score Files
 +@section Global Score Files
 +@cindex global score files
  
 -There aren't many of these as yet, I'm afraid.
 +Sure, other newsreaders have ``global kill files''.  These are usually
 +nothing more than a single kill file that applies to all groups, stored
 +in the user's home directory.  Bah!  Puny, weak newsreaders!
  
 -@table @kbd
 +What I'm talking about here are Global Score Files.  Score files from
 +all over the world, from users everywhere, uniting all nations in one
 +big, happy score file union!  Ange-score!  New and untested!
  
 -@item W e
 -@kindex W e (Group)
 -@findex gnus-score-edit-all-score
 -Edit the apply-to-all-groups all.SCORE file.  You will be popped into
 -a @code{gnus-score-mode} buffer (@pxref{Score File Editing}).
 +@vindex gnus-global-score-files
 +All you have to do to use other people's score files is to set the
 +@code{gnus-global-score-files} variable.  One entry for each score file,
 +or each score file directory.  Gnus will decide by itself what score
 +files are applicable to which group.
  
 -@item W f
 -@kindex W f (Group)
 -@findex gnus-score-flush-cache
 -Gnus maintains a cache of score alists to avoid having to reload them
 -all the time.  This command will flush the cache
 -(@code{gnus-score-flush-cache}).
 +To use the score file
 +@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and
 +all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory,
 +say this:
  
 -@end table
 +@lisp
 +(setq gnus-global-score-files
 +      '("/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE"
 +        "/ftp@@ftp.some-where:/pub/score/"))
 +@end lisp
  
 -You can do scoring from the command line by saying something like:
 +@findex gnus-score-search-global-directories
 +@noindent
 +Simple, eh?  Directory names must end with a @samp{/}.  These
 +directories are typically scanned only once during each Gnus session.
 +If you feel the need to manually re-scan the remote directories, you can
 +use the @code{gnus-score-search-global-directories} command.
  
 -@findex gnus-batch-score
 -@cindex batch scoring
 -@example
 -$ emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score
 -@end example
 +Note that, at present, using this option will slow down group entry
 +somewhat.  (That is---a lot.)
  
 +If you want to start maintaining score files for other people to use,
 +just put your score file up for anonymous ftp and announce it to the
 +world.  Become a retro-moderator!  Participate in the retro-moderator
 +wars sure to ensue, where retro-moderators battle it out for the
 +sympathy of the people, luring them to use their score files on false
 +premises!  Yay!  The net is saved!
  
 -@node Score Variables
 -@section Score Variables
 -@cindex score variables
 +Here are some tips for the would-be retro-moderator, off the top of my
 +head:
  
 -@table @code
 +@itemize @bullet
  
 -@item gnus-use-scoring
 -@vindex gnus-use-scoring
 -If @code{nil}, Gnus will not check for score files, and will not, in
 -general, do any score-related work.  This is @code{t} by default.
 +@item
 +Articles heavily crossposted are probably junk.
 +@item
 +To lower a single inappropriate article, lower by @code{Message-ID}.
 +@item
 +Particularly brilliant authors can be raised on a permanent basis.
 +@item
 +Authors that repeatedly post off-charter for the group can safely be
 +lowered out of existence.
 +@item
 +Set the @code{mark} and @code{expunge} atoms to obliterate the nastiest
 +articles completely.
  
 -@item gnus-kill-killed
 -@vindex gnus-kill-killed
 -If this variable is @code{nil}, Gnus will never apply score files to
 -articles that have already been through the kill process.  While this
 -may save you lots of time, it also means that if you apply a kill file
 -to a group, and then change the kill file and want to run it over you
 -group again to kill more articles, it won't work.  You have to set this
 -variable to @code{t} to do that.  (It is @code{t} by default.)
 +@item
 +Use expiring score entries to keep the size of the file down.  You
 +should probably have a long expiry period, though, as some sites keep
 +old articles for a long time.
 +@end itemize
  
 -@item gnus-kill-files-directory
 -@vindex gnus-kill-files-directory
 -All kill and score files will be stored in this directory, which is
 -initialized from the @env{SAVEDIR} environment variable by default.
 -This is @file{~/News/} by default.
 +@dots{} I wonder whether other newsreaders will support global score files
 +in the future.  @emph{Snicker}.  Yup, any day now, newsreaders like Blue
 +Wave, xrn and 1stReader are bound to implement scoring.  Should we start
 +holding our breath yet?
  
 -@item gnus-score-file-suffix
 -@vindex gnus-score-file-suffix
 -Suffix to add to the group name to arrive at the score file name
 -(@file{SCORE} by default.)
  
 -@item gnus-score-uncacheable-files
 -@vindex gnus-score-uncacheable-files
 -@cindex score cache
 -All score files are normally cached to avoid excessive re-loading of
 -score files.  However, this might make your Emacs grow big and
 -bloated, so this regexp can be used to weed out score files unlikely
 -to be needed again.  It would be a bad idea to deny caching of
 -@file{all.SCORE}, while it might be a good idea to not cache
 -@file{comp.infosystems.www.authoring.misc.ADAPT}.  In fact, this
 -variable is @samp{ADAPT$} by default, so no adaptive score files will
 -be cached.
 +@node Kill Files
 +@section Kill Files
 +@cindex kill files
  
 -@item gnus-save-score
 -@vindex gnus-save-score
 -If you have really complicated score files, and do lots of batch
 -scoring, then you might set this variable to @code{t}.  This will make
 -Gnus save the scores into the @file{.newsrc.eld} file.
 +Gnus still supports those pesky old kill files.  In fact, the kill file
 +entries can now be expiring, which is something I wrote before Daniel
 +Quinlan thought of doing score files, so I've left the code in there.
  
 -If you do not set this to @code{t}, then manual scores (like those set
 -with @kbd{V s} (@code{gnus-summary-set-score})) will not be preserved
 -across group visits.
 +In short, kill processing is a lot slower (and I do mean @emph{a lot})
 +than score processing, so it might be a good idea to rewrite your kill
 +files into score files.
  
 -@item gnus-score-interactive-default-score
 -@vindex gnus-score-interactive-default-score
 -Score used by all the interactive raise/lower commands to raise/lower
 -score with.  Default is 1000, which may seem excessive, but this is to
 -ensure that the adaptive scoring scheme gets enough room to play with.
 -We don't want the small changes from the adaptive scoring to overwrite
 -manually entered data.
 +Anyway, a kill file is a normal @code{emacs-lisp} file.  You can put any
 +forms into this file, which means that you can use kill files as some
 +sort of primitive hook function to be run on group entry, even though
 +that isn't a very good idea.
  
 -@item gnus-summary-default-score
 -@vindex gnus-summary-default-score
 -Default score of an article, which is 0 by default.
 +Normal kill files look like this:
  
 -@item gnus-summary-expunge-below
 -@vindex gnus-summary-expunge-below
 -Don't display the summary lines of articles that have scores lower than
 -this variable.  This is @code{nil} by default, which means that no
 -articles will be hidden.  This variable is local to the summary buffers,
 -and has to be set from @code{gnus-summary-mode-hook}.
 +@lisp
 +(gnus-kill "From" "Lars Ingebrigtsen")
 +(gnus-kill "Subject" "ding")
 +(gnus-expunge "X")
 +@end lisp
  
 -@item gnus-score-over-mark
 -@vindex gnus-score-over-mark
 -Mark (in the third column) used for articles with a score over the
 -default.  Default is @samp{+}.
 +This will mark every article written by me as read, and remove the
 +marked articles from the summary buffer.  Very useful, you'll agree.
  
 -@item gnus-score-below-mark
 -@vindex gnus-score-below-mark
 -Mark (in the third column) used for articles with a score below the
 -default.  Default is @samp{-}.
 +Other programs use a totally different kill file syntax.  If Gnus
 +encounters what looks like a @code{rn} kill file, it will take a stab at
 +interpreting it.
  
 -@item gnus-score-find-score-files-function
 -@vindex gnus-score-find-score-files-function
 -Function used to find score files for the current group.  This function
 -is called with the name of the group as the argument.
 +Two summary functions for editing a @sc{gnus} kill file:
  
 -Predefined functions available are:
 -@table @code
 +@table @kbd
  
 -@item gnus-score-find-single
 -@findex gnus-score-find-single
 -Only apply the group's own score file.
 +@item M-k
 +@kindex M-k (Summary)
 +@findex gnus-summary-edit-local-kill
 +Edit this group's kill file (@code{gnus-summary-edit-local-kill}).
  
 -@item gnus-score-find-bnews
 -@findex gnus-score-find-bnews
 -Apply all score files that match, using bnews syntax.  This is the
 -default.  If the current group is @samp{gnu.emacs.gnus}, for instance,
 -@file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and
 -@file{gnu.all.SCORE} would all apply.  In short, the instances of
 -@samp{all} in the score file names are translated into @samp{.*}, and
 -then a regexp match is done.
 +@item M-K
 +@kindex M-K (Summary)
 +@findex gnus-summary-edit-global-kill
 +Edit the general kill file (@code{gnus-summary-edit-global-kill}).
 +@end table
  
 -This means that if you have some score entries that you want to apply to
 -all groups, then you put those entries in the @file{all.SCORE} file.
 +Two group mode functions for editing the kill files:
  
 -The score files are applied in a semi-random order, although Gnus will
 -try to apply the more general score files before the more specific score
 -files.  It does this by looking at the number of elements in the score
 -file names---discarding the @samp{all} elements.
 +@table @kbd
  
 -@item gnus-score-find-hierarchical
 -@findex gnus-score-find-hierarchical
 -Apply all score files from all the parent groups.  This means that you
 -can't have score files like @file{all.SCORE}, but you can have
 -@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE} for each
 -server.
 +@item M-k
 +@kindex M-k (Group)
 +@findex gnus-group-edit-local-kill
 +Edit this group's kill file (@code{gnus-group-edit-local-kill}).
  
 +@item M-K
 +@kindex M-K (Group)
 +@findex gnus-group-edit-global-kill
 +Edit the general kill file (@code{gnus-group-edit-global-kill}).
  @end table
 -This variable can also be a list of functions.  In that case, all
 -these functions will be called with the group name as argument, and
 -all the returned lists of score files will be applied.  These
 -functions can also return lists of lists of score alists directly.  In
 -that case, the functions that return these non-file score alists
 -should probably be placed before the ``real'' score file functions, to
 -ensure that the last score file returned is the local score file.
 -Phu.
  
 -For example, to do hierarchical scoring but use a non-server-specific
 -overall score file, you could use the value
 -@example
 -(list (lambda (group) ("all.SCORE"))
 -      'gnus-score-find-hierarchical)
 -@end example
 +Kill file variables:
  
 -@item gnus-score-expiry-days
 -@vindex gnus-score-expiry-days
 -This variable says how many days should pass before an unused score file
 -entry is expired.  If this variable is @code{nil}, no score file entries
 -are expired.  It's 7 by default.
 +@table @code
 +@item gnus-kill-file-name
 +@vindex gnus-kill-file-name
 +A kill file for the group @samp{soc.motss} is normally called
 +@file{soc.motss.KILL}.  The suffix appended to the group name to get
 +this file name is detailed by the @code{gnus-kill-file-name} variable.
 +The ``global'' kill file (not in the score file sense of ``global'', of
 +course) is just called @file{KILL}.
  
 -@item gnus-update-score-entry-dates
 -@vindex gnus-update-score-entry-dates
 -If this variable is non-@code{nil}, temporary score entries that have
 -been triggered (matched) will have their dates updated.  (This is how Gnus
 -controls expiry---all non-matched-entries will become too old while
 -matched entries will stay fresh and young.)  However, if you set this
 -variable to @code{nil}, even matched entries will grow old and will
 -have to face that oh-so grim reaper.
 +@vindex gnus-kill-save-kill-file
 +@item gnus-kill-save-kill-file
 +If this variable is non-@code{nil}, Gnus will save the
 +kill file after processing, which is necessary if you use expiring
 +kills.
  
 -@item gnus-score-after-write-file-function
 -@vindex gnus-score-after-write-file-function
 -Function called with the name of the score file just written.
 +@item gnus-apply-kill-hook
 +@vindex gnus-apply-kill-hook
 +@findex gnus-apply-kill-file-unless-scored
 +@findex gnus-apply-kill-file
 +A hook called to apply kill files to a group.  It is
 +@code{(gnus-apply-kill-file)} by default.  If you want to ignore the
 +kill file if you have a score file for the same group, you can set this
 +hook to @code{(gnus-apply-kill-file-unless-scored)}.  If you don't want
 +kill files to be processed, you should set this variable to @code{nil}.
  
 -@item gnus-score-thread-simplify
 -@vindex gnus-score-thread-simplify
 -If this variable is non-@code{nil}, article subjects will be
 -simplified for subject scoring purposes in the same manner as with
 -threading---according to the current value of
 -@code{gnus-simplify-subject-functions}.  If the scoring entry uses
 -@code{substring} or @code{exact} matching, the match will also be
 -simplified in this manner.
 +@item gnus-kill-file-mode-hook
 +@vindex gnus-kill-file-mode-hook
 +A hook called in kill-file mode buffers.
  
  @end table
  
  
 -@node Score File Format
 -@section Score File Format
 -@cindex score file format
 +@node Converting Kill Files
 +@section Converting Kill Files
 +@cindex kill files
 +@cindex converting kill files
  
 -A score file is an @code{emacs-lisp} file that normally contains just a
 -single form.  Casual users are not expected to edit these files;
 -everything can be changed from the summary buffer.
 +If you have loads of old kill files, you may want to convert them into
 +score files.  If they are ``regular'', you can use
 +the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
 +by hand.
  
 -Anyway, if you'd like to dig into it yourself, here's an example:
 +The kill to score conversion package isn't included in Emacs by default.
 +You can fetch it from the contrib directory of the Gnus distribution or
 +from
 +@uref{http://heim.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
  
 -@lisp
 -(("from"
 -  ("Lars Ingebrigtsen" -10000)
 -  ("Per Abrahamsen")
 -  ("larsi\\|lmi" -50000 nil R))
 - ("subject"
 -  ("Ding is Badd" nil 728373))
 - ("xref"
 -  ("alt.politics" -1000 728372 s))
 - ("lines"
 -  (2 -100 nil <))
 - (mark 0)
 - (expunge -1000)
 - (mark-and-expunge -10)
 - (read-only nil)
 - (orphan -10)
 - (adapt t)
 - (files "/hom/larsi/News/gnu.SCORE")
 - (exclude-files "all.SCORE")
 - (local (gnus-newsgroup-auto-expire t)
 -        (gnus-summary-make-false-root empty))
 - (eval (ding)))
 -@end lisp
 +If your old kill files are very complex---if they contain more
 +non-@code{gnus-kill} forms than not, you'll have to convert them by
 +hand.  Or just let them be as they are.  Gnus will still use them as
 +before.
  
 -This example demonstrates most score file elements.  @xref{Advanced
 -Scoring}, for a different approach.
  
 -Even though this looks much like Lisp code, nothing here is actually
 -@code{eval}ed.  The Lisp reader is used to read this form, though, so it
 -has to be valid syntactically, if not semantically.
 +@node Advanced Scoring
 +@section Advanced Scoring
  
 -Six keys are supported by this alist:
 +Scoring on Subjects and From headers is nice enough, but what if you're
 +really interested in what a person has to say only when she's talking
 +about a particular subject?  Or what if you really don't want to
 +read what person A has to say when she's following up to person B, but
 +want to read what she says when she's following up to person C?
  
 -@table @code
 +By using advanced scoring rules you may create arbitrarily complex
 +scoring patterns.
  
 -@item STRING
 -If the key is a string, it is the name of the header to perform the
 -match on.  Scoring can only be performed on these eight headers:
 -@code{From}, @code{Subject}, @code{References}, @code{Message-ID},
 -@code{Xref}, @code{Lines}, @code{Chars} and @code{Date}.  In addition to
 -these headers, there are three strings to tell Gnus to fetch the entire
 -article and do the match on larger parts of the article: @code{Body}
 -will perform the match on the body of the article, @code{Head} will
 -perform the match on the head of the article, and @code{All} will
 -perform the match on the entire article.  Note that using any of these
 -last three keys will slow down group entry @emph{considerably}.  The
 -final ``header'' you can score on is @code{Followup}.  These score
 -entries will result in new score entries being added for all follow-ups
 -to articles that matches these score entries.
 +@menu
 +* Advanced Scoring Syntax::     A definition.
 +* Advanced Scoring Examples::   What they look like.
 +* Advanced Scoring Tips::       Getting the most out of it.
 +@end menu
  
 -Following this key is an arbitrary number of score entries, where each
 -score entry has one to four elements.
 -@enumerate
  
 -@item
 -The first element is the @dfn{match element}.  On most headers this will
 -be a string, but on the Lines and Chars headers, this must be an
 -integer.
 +@node Advanced Scoring Syntax
 +@subsection Advanced Scoring Syntax
 +
 +Ordinary scoring rules have a string as the first element in the rule.
 +Advanced scoring rules have a list as the first element.  The second
 +element is the score to be applied if the first element evaluated to a
 +non-@code{nil} value.
  
 -@item
 -If the second element is present, it should be a number---the @dfn{score
 -element}.  This number should be an integer in the neginf to posinf
 -interval.  This number is added to the score of the article if the match
 -is successful.  If this element is not present, the
 -@code{gnus-score-interactive-default-score} number will be used
 -instead.  This is 1000 by default.
 +These lists may consist of three logical operators, one redirection
 +operator, and various match operators.
  
 -@item
 -If the third element is present, it should be a number---the @dfn{date
 -element}.  This date says when the last time this score entry matched,
 -which provides a mechanism for expiring the score entries.  It this
 -element is not present, the score entry is permanent.  The date is
 -represented by the number of days since December 31, 1 BCE.
 +Logical operators:
  
 -@item
 -If the fourth element is present, it should be a symbol---the @dfn{type
 -element}.  This element specifies what function should be used to see
 -whether this score entry matches the article.  What match types that can
 -be used depends on what header you wish to perform the match on.
 -@table @dfn
 +@table @code
 +@item &
 +@itemx and
 +This logical operator will evaluate each of its arguments until it finds
 +one that evaluates to @code{false}, and then it'll stop.  If all arguments
 +evaluate to @code{true} values, then this operator will return
 +@code{true}.
  
 -@item From, Subject, References, Xref, Message-ID
 -For most header types, there are the @code{r} and @code{R} (regexp), as
 -well as @code{s} and @code{S} (substring) types, and @code{e} and
 -@code{E} (exact match), and @code{w} (word match) types.  If this
 -element is not present, Gnus will assume that substring matching should
 -be used.  @code{R}, @code{S}, and @code{E} differ from the others in
 -that the matches will be done in a case-sensitive manner.  All these
 -one-letter types are really just abbreviations for the @code{regexp},
 -@code{string}, @code{exact}, and @code{word} types, which you can use
 -instead, if you feel like.
 +@item |
 +@itemx or
 +This logical operator will evaluate each of its arguments until it finds
 +one that evaluates to @code{true}.  If no arguments are @code{true},
 +then this operator will return @code{false}.
  
 -@item Extra
 -Just as for the standard string overview headers, if you are using
 -gnus-extra-headers, you can score on these headers' values.  In this
 -case, there is a 5th element in the score entry, being the name of the
 -header to be scored.  The following entry is useful in your
 -@file{all.SCORE} file in case of spam attacks from a single origin
 -host, if your @acronym{NNTP} server tracks @samp{NNTP-Posting-Host} in
 -overviews:
 +@item !
 +@itemx not
 +@itemx ¬
 +This logical operator only takes a single argument.  It returns the
 +logical negation of the value of its argument.
  
 -@lisp
 -("111.222.333.444" -1000 nil s
 - "NNTP-Posting-Host")
 -@end lisp
 +@end table
  
 -@item Lines, Chars
 -These two headers use different match types: @code{<}, @code{>},
 -@code{=}, @code{>=} and @code{<=}.
 +There is an @dfn{indirection operator} that will make its arguments
 +apply to the ancestors of the current article being scored.  For
 +instance, @code{1-} will make score rules apply to the parent of the
 +current article.  @code{2-} will make score rules apply to the
 +grandparent of the current article.  Alternatively, you can write
 +@code{^^}, where the number of @code{^}s (carets) says how far back into
 +the ancestry you want to go.
  
 -These predicates are true if
 +Finally, we have the match operators.  These are the ones that do the
 +real work.  Match operators are header name strings followed by a match
 +and a match type.  A typical match operator looks like @samp{("from"
 +"Lars Ingebrigtsen" s)}.  The header names are the same as when using
 +simple scoring, and the match types are also the same.
  
 -@example
 -(PREDICATE HEADER MATCH)
 -@end example
  
 -evaluates to non-@code{nil}.  For instance, the advanced match
 -@code{("lines" 4 <)} (@pxref{Advanced Scoring}) will result in the
 -following form:
 +@node Advanced Scoring Examples
 +@subsection Advanced Scoring Examples
  
 -@lisp
 -(< header-value 4)
 -@end lisp
 +Please note that the following examples are score file rules.  To
 +make a complete score file from them, surround them with another pair
 +of parentheses.
  
 -Or to put it another way: When using @code{<} on @code{Lines} with 4 as
 -the match, we get the score added if the article has less than 4 lines.
 -(It's easy to get confused and think it's the other way around.  But
 -it's not.  I think.)
 +Let's say you want to increase the score of articles written by Lars
 +when he's talking about Gnus:
  
 -When matching on @code{Lines}, be careful because some back ends (like
 -@code{nndir}) do not generate @code{Lines} header, so every article ends
 -up being marked as having 0 lines.  This can lead to strange results if
 -you happen to lower score of the articles with few lines.
 +@example
 +@group
 +((&
 +  ("from" "Lars Ingebrigtsen")
 +  ("subject" "Gnus"))
 + 1000)
 +@end group
 +@end example
  
 -@item Date
 -For the Date header we have three kinda silly match types:
 -@code{before}, @code{at} and @code{after}.  I can't really imagine this
 -ever being useful, but, like, it would feel kinda silly not to provide
 -this function.  Just in case.  You never know.  Better safe than sorry.
 -Once burnt, twice shy.  Don't judge a book by its cover.  Never not have
 -sex on a first date.  (I have been told that at least one person, and I
 -quote, ``found this function indispensable'', however.)
 +Quite simple, huh?
  
 -@cindex ISO8601
 -@cindex date
 -A more useful match type is @code{regexp}.  With it, you can match the
 -date string using a regular expression.  The date is normalized to
 -ISO8601 compact format first---@var{YYYYMMDD}@code{T}@var{HHMMSS}.  If
 -you want to match all articles that have been posted on April 1st in
 -every year, you could use @samp{....0401.........} as a match string,
 -for instance.  (Note that the date is kept in its original time zone, so
 -this will match articles that were posted when it was April 1st where
 -the article was posted from.  Time zones are such wholesome fun for the
 -whole family, eh?)
 +When he writes long articles, he sometimes has something nice to say:
  
 -@item Head, Body, All
 -These three match keys use the same match types as the @code{From} (etc)
 -header uses.
 +@example
 +((&
 +  ("from" "Lars Ingebrigtsen")
 +  (|
 +   ("subject" "Gnus")
 +   ("lines" 100 >)))
 + 1000)
 +@end example
  
 -@item Followup
 -This match key is somewhat special, in that it will match the
 -@code{From} header, and affect the score of not only the matching
 -articles, but also all followups to the matching articles.  This allows
 -you e.g. increase the score of followups to your own articles, or
 -decrease the score of followups to the articles of some known
 -trouble-maker.  Uses the same match types as the @code{From} header
 -uses.  (Using this match key will lead to creation of @file{ADAPT}
 -files.)
 +However, when he responds to things written by Reig Eigil Logge, you
 +really don't want to read what he's written:
  
 -@item Thread
 -This match key works along the same lines as the @code{Followup} match
 -key.  If you say that you want to score on a (sub-)thread started by an
 -article with a @code{Message-ID} @var{x}, then you add a @samp{thread}
 -match.  This will add a new @samp{thread} match for each article that
 -has @var{x} in its @code{References} header.  (These new @samp{thread}
 -matches will use the @code{Message-ID}s of these matching articles.)
 -This will ensure that you can raise/lower the score of an entire thread,
 -even though some articles in the thread may not have complete
 -@code{References} headers.  Note that using this may lead to
 -undeterministic scores of the articles in the thread.  (Using this match
 -key will lead to creation of @file{ADAPT} files.)
 -@end table
 -@end enumerate
 +@example
 +((&
 +  ("from" "Lars Ingebrigtsen")
 +  (1- ("from" "Reig Eigil Logge")))
 + -100000)
 +@end example
  
 -@cindex score file atoms
 -@item mark
 -The value of this entry should be a number.  Any articles with a score
 -lower than this number will be marked as read.
 +Everybody that follows up Redmondo when he writes about disappearing
 +socks should have their scores raised, but only when they talk about
 +white socks.  However, when Lars talks about socks, it's usually not
 +very interesting:
  
 -@item expunge
 -The value of this entry should be a number.  Any articles with a score
 -lower than this number will be removed from the summary buffer.
 +@example
 +((&
 +  (1-
 +   (&
 +    ("from" "redmondo@@.*no" r)
 +    ("body" "disappearing.*socks" t)))
 +  (! ("from" "Lars Ingebrigtsen"))
 +  ("body" "white.*socks"))
 + 1000)
 +@end example
  
 -@item mark-and-expunge
 -The value of this entry should be a number.  Any articles with a score
 -lower than this number will be marked as read and removed from the
 -summary buffer.
 +Suppose you're reading a high volume group and you're only interested
 +in replies. The plan is to score down all articles that don't have
 +subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all
 +parents of articles that have subjects that begin with reply marks.
  
 -@item thread-mark-and-expunge
 -The value of this entry should be a number.  All articles that belong to
 -a thread that has a total score below this number will be marked as read
 -and removed from the summary buffer.  @code{gnus-thread-score-function}
 -says how to compute the total score for a thread.
 +@example
 +((! ("subject" "re:\\|fwd?:" r))
 +  -200)
 +((1- ("subject" "re:\\|fwd?:" r))
 +  200)
 +@end example
  
 -@item files
 -The value of this entry should be any number of file names.  These files
 -are assumed to be score files as well, and will be loaded the same way
 -this one was.
 +The possibilities are endless.
  
 -@item exclude-files
 -The clue of this entry should be any number of files.  These files will
 -not be loaded, even though they would normally be so, for some reason or
 -other.
 +@node Advanced Scoring Tips
 +@subsection Advanced Scoring Tips
  
 -@item eval
 -The value of this entry will be @code{eval}ed.  This element will be
 -ignored when handling global score files.
 +The @code{&} and @code{|} logical operators do short-circuit logic.
 +That is, they stop processing their arguments when it's clear what the
 +result of the operation will be.  For instance, if one of the arguments
 +of an @code{&} evaluates to @code{false}, there's no point in evaluating
 +the rest of the arguments.  This means that you should put slow matches
 +(@samp{body}, @samp{header}) last and quick matches (@samp{from},
 +@samp{subject}) first.
  
 -@item read-only
 -Read-only score files will not be updated or saved.  Global score files
 -should feature this atom (@pxref{Global Score Files}).  (Note:
 -@dfn{Global} here really means @dfn{global}; not your personal
 -apply-to-all-groups score files.)
 +The indirection arguments (@code{1-} and so on) will make their
 +arguments work on previous generations of the thread.  If you say
 +something like:
 +
 +@example
 +...
 +(1-
 + (1-
 +  ("from" "lars")))
 +...
 +@end example
  
 -@item orphan
 -The value of this entry should be a number.  Articles that do not have
 -parents will get this number added to their scores.  Imagine you follow
 -some high-volume newsgroup, like @samp{comp.lang.c}.  Most likely you
 -will only follow a few of the threads, also want to see any new threads.
 +Then that means ``score on the from header of the grandparent of the
 +current article''.  An indirection is quite fast, but it's better to say:
  
 -You can do this with the following two score file entries:
 +@example
 +(1-
 + (&
 +  ("from" "Lars")
 +  ("subject" "Gnus")))
 +@end example
 +
 +than it is to say:
  
  @example
 -        (orphan -500)
 -        (mark-and-expunge -100)
 +(&
 + (1- ("from" "Lars"))
 + (1- ("subject" "Gnus")))
  @end example
  
 -When you enter the group the first time, you will only see the new
 -threads.  You then raise the score of the threads that you find
 -interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{c y}) the
 -rest.  Next time you enter the group, you will see new articles in the
 -interesting threads, plus any new threads.
  
 -I.e.---the orphan score atom is for high-volume groups where a few
 -interesting threads which can't be found automatically by ordinary
 -scoring rules exist.
 +@node Score Decays
 +@section Score Decays
 +@cindex score decays
 +@cindex decays
  
 -@item adapt
 -This entry controls the adaptive scoring.  If it is @code{t}, the
 -default adaptive scoring rules will be used.  If it is @code{ignore}, no
 -adaptive scoring will be performed on this group.  If it is a list, this
 -list will be used as the adaptive scoring rules.  If it isn't present,
 -or is something other than @code{t} or @code{ignore}, the default
 -adaptive scoring rules will be used.  If you want to use adaptive
 -scoring on most groups, you'd set @code{gnus-use-adaptive-scoring} to
 -@code{t}, and insert an @code{(adapt ignore)} in the groups where you do
 -not want adaptive scoring.  If you only want adaptive scoring in a few
 -groups, you'd set @code{gnus-use-adaptive-scoring} to @code{nil}, and
 -insert @code{(adapt t)} in the score files of the groups where you want
 -it.
 +You may find that your scores have a tendency to grow without
 +bounds, especially if you're using adaptive scoring.  If scores get too
 +big, they lose all meaning---they simply max out and it's difficult to
 +use them in any sensible way.
  
 -@item adapt-file
 -All adaptive score entries will go to the file named by this entry.  It
 -will also be applied when entering the group.  This atom might be handy
 -if you want to adapt on several groups at once, using the same adaptive
 -file for a number of groups.
 +@vindex gnus-decay-scores
 +@findex gnus-decay-score
 +@vindex gnus-decay-score-function
 +Gnus provides a mechanism for decaying scores to help with this problem.
 +When score files are loaded and @code{gnus-decay-scores} is
 +non-@code{nil}, Gnus will run the score files through the decaying
 +mechanism thereby lowering the scores of all non-permanent score rules.
 +If @code{gnus-decay-scores} is a regexp, only score files matching this
 +regexp are treated.  E.g. you may set it to @samp{\\.ADAPT\\'} if only
 +@emph{adaptive} score files should be decayed.  The decay itself if
 +performed by the @code{gnus-decay-score-function} function, which is
 +@code{gnus-decay-score} by default.  Here's the definition of that
 +function:
  
 -@item local
 -@cindex local variables
 -The value of this entry should be a list of @code{(@var{var}
 -@var{value})} pairs.  Each @var{var} will be made buffer-local to the
 -current summary buffer, and set to the value specified.  This is a
 -convenient, if somewhat strange, way of setting variables in some
 -groups if you don't like hooks much.  Note that the @var{value} won't
 -be evaluated.
 -@end table
 +@lisp
 +(defun gnus-decay-score (score)
 +  "Decay SCORE according to `gnus-score-decay-constant'
 +and `gnus-score-decay-scale'."
 +  (let ((n (- score
 +              (* (if (< score 0) -1 1)
 +                 (min (abs score)
 +                      (max gnus-score-decay-constant
 +                           (* (abs score)
 +                              gnus-score-decay-scale)))))))
 +    (if (and (featurep 'xemacs)
 +             ;; XEmacs' floor can handle only the floating point
 +             ;; number below the half of the maximum integer.
 +             (> (abs n) (lsh -1 -2)))
 +        (string-to-number
 +         (car (split-string (number-to-string n) "\\.")))
 +      (floor n))))
 +@end lisp
  
 +@vindex gnus-score-decay-scale
 +@vindex gnus-score-decay-constant
 +@code{gnus-score-decay-constant} is 3 by default and
 +@code{gnus-score-decay-scale} is 0.05.  This should cause the following:
  
 -@node Score File Editing
 -@section Score File Editing
 +@enumerate
 +@item
 +Scores between -3 and 3 will be set to 0 when this function is called.
  
 -You normally enter all scoring commands from the summary buffer, but you
 -might feel the urge to edit them by hand as well, so we've supplied you
 -with a mode for that.
 +@item
 +Scores with magnitudes between 3 and 60 will be shrunk by 3.
  
 -It's simply a slightly customized @code{emacs-lisp} mode, with these
 -additional commands:
 +@item
 +Scores with magnitudes greater than 60 will be shrunk by 5% of the
 +score.
 +@end enumerate
  
 -@table @kbd
 +If you don't like this decay function, write your own.  It is called
 +with the score to be decayed as its only parameter, and it should return
 +the new score, which should be an integer.
  
 -@item C-c C-c
 -@kindex C-c C-c (Score)
 -@findex gnus-score-edit-exit
 -Save the changes you have made and return to the summary buffer
 -(@code{gnus-score-edit-exit}).
 +Gnus will try to decay scores once a day.  If you haven't run Gnus for
 +four days, Gnus will decay the scores four times, for instance.
  
 -@item C-c C-d
 -@kindex C-c C-d (Score)
 -@findex gnus-score-edit-insert-date
 -Insert the current date in numerical format
 -(@code{gnus-score-edit-insert-date}).  This is really the day number, if
 -you were wondering.
 +@node Searching
 +@chapter Searching
 +@cindex searching
  
 -@item C-c C-p
 -@kindex C-c C-p (Score)
 -@findex gnus-score-pretty-print
 -The adaptive score files are saved in an unformatted fashion.  If you
 -intend to read one of these files, you want to @dfn{pretty print} it
 -first.  This command (@code{gnus-score-pretty-print}) does that for
 -you.
 +FIXME: Add a brief overview of Gnus search capabilities.  A brief
 +comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
 +as well.
  
 -@end table
 +This chapter describes tools for searching groups and servers for
 +articles matching a query and then retrieving those articles. Gnus
 +provides a simpler mechanism for searching through articles in a summary buffer 
 +to find those matching a pattern. @xref{Searching for Articles}. 
  
 -Type @kbd{M-x gnus-score-mode} to use this mode.
 +@menu
 +* nnir::                     Searching with various engines.
 +* nnmairix::                 Searching with Mairix.
 +@end menu
  
 -@vindex gnus-score-mode-hook
 -@code{gnus-score-menu-hook} is run in score mode buffers.
 +@node nnir
 +@section nnir
 +@cindex nnir
  
 -In the summary buffer you can use commands like @kbd{V f}, @kbd{V e} and
 -@kbd{V t} to begin editing score files.
 +This section describes how to use @code{nnir} to search for articles
 +within gnus.
  
 +@menu
 +* What is nnir?::               What does @code{nnir} do?
 +* Basic Usage::                 How to perform simple searches.
 +* Setting up nnir::             How to set up @code{nnir}.
 +@end menu
  
 -@node Adaptive Scoring
 -@section Adaptive Scoring
 -@cindex adaptive scoring
 +@node What is nnir?
 +@subsection What is nnir?
  
 -If all this scoring is getting you down, Gnus has a way of making it all
 -happen automatically---as if by magic.  Or rather, as if by artificial
 -stupidity, to be precise.
 +@code{nnir} is a Gnus interface to a number of tools for searching
 +through mail and news repositories. Different backends (like
 +@code{nnimap} and @code{nntp}) work with different tools (called
 +@dfn{engines} in @code{nnir} lingo), but all use the same basic search
 +interface.
  
 -@vindex gnus-use-adaptive-scoring
 -When you read an article, or mark an article as read, or kill an
 -article, you leave marks behind.  On exit from the group, Gnus can sniff
 -these marks and add score elements depending on what marks it finds.
 -You turn on this ability by setting @code{gnus-use-adaptive-scoring} to
 -@code{t} or @code{(line)}.  If you want score adaptively on separate
 -words appearing in the subjects, you should set this variable to
 -@code{(word)}.  If you want to use both adaptive methods, set this
 -variable to @code{(word line)}.
 +The @code{nnimap} and @code{gmane} search engines should work with no
 +configuration. Other engines require a local index that needs to be
 +created and maintained outside of Gnus. 
 +
 +
 +@node Basic Usage
 +@subsection Basic Usage
 +
 +In the group buffer typing @kbd{G G} will search the group on the
 +current line by calling @code{gnus-group-make-nnir-group}.  This prompts
 +for a query string, creates an ephemeral @code{nnir} group containing
 +the articles that match this query, and takes you to a summary buffer
 +showing these articles. Articles may then be read, moved and deleted
 +using the usual commands.
 +
 +The @code{nnir} group made in this way is an @code{ephemeral} group, and
 +some changes are not permanent: aside from reading, moving, and
 +deleting, you can't act on the original article. But there is an
 +alternative: you can @emph{warp} to the original group for the article
 +on the current line with @kbd{A W}, aka
 +@code{gnus-warp-to-article}. Even better, the function
 +@code{gnus-summary-refer-thread}, bound by default in summary buffers to
 +@kbd{A T}, will first warp to the original group before it works its
 +magic and includes all the articles in the thread. From here you can
 +read, move and delete articles, but also copy them, alter article marks,
 +whatever. Go nuts.
 +
 +You say you want to search more than just the group on the current line?
 +No problem: just process-mark the groups you want to search. You want
 +even more? Calling for an nnir search with the cursor on a topic heading
 +will search all the groups under that heading.
 +
 +Still not enough? OK, in the server buffer
 +@code{gnus-group-make-nnir-group} (now bound to @kbd{G}) will search all
 +groups from the server on the current line. Too much? Want to ignore
 +certain groups when searching, like spam groups? Just customize
 +@code{nnir-ignored-newsgroups}.
 +
 +One more thing: individual search engines may have special search
 +features. You can access these special features by giving a prefix-arg
 +to @code{gnus-group-make-nnir-group}. If you are searching multiple
 +groups with different search engines you will be prompted for the
 +special search features for each engine separately. 
 +
 +
 +@node Setting up nnir
 +@subsection Setting up nnir
 +
 +To set up nnir you may need to do some prep work. Firstly, you may need
 +to configure the search engines you plan to use. Some of them, like
 +@code{imap} and @code{gmane}, need no special configuration. Others,
 +like @code{namazu} and @code{swish}, require configuration as described
 +below. Secondly, you need to associate a search engine with a server or
 +a backend.
 +
 +If you just want to use the @code{imap} engine to search @code{nnimap}
 +servers, and the @code{gmane} engine to search @code{gmane} then you
 +don't have to do anything. But you might want to read the details of the
 +query language anyway.
  
 -@vindex gnus-default-adaptive-score-alist
 -To give you complete control over the scoring process, you can customize
 -the @code{gnus-default-adaptive-score-alist} variable.  For instance, it
 -might look something like this:
 +@menu
 +* Associating Engines::                 How to associate engines.
 +* The imap Engine::                     Imap configuration and usage.
 +* The gmane Engine::                    Gmane configuration and usage.
 +* The swish++ Engine::                  Swish++ configuration and usage.
 +* The swish-e Engine::                  Swish-e configuration and usage.
 +* The namazu Engine::                   Namazu configuration and usage.
 +* The hyrex Engine::                    Hyrex configuration and usage.
 +* Customizations::                      User customizable settings.
 +@end menu
  
 -@lisp
 -(setq gnus-default-adaptive-score-alist
 -  '((gnus-unread-mark)
 -    (gnus-ticked-mark (from 4))
 -    (gnus-dormant-mark (from 5))
 -    (gnus-del-mark (from -4) (subject -1))
 -    (gnus-read-mark (from 4) (subject 2))
 -    (gnus-expirable-mark (from -1) (subject -1))
 -    (gnus-killed-mark (from -1) (subject -3))
 -    (gnus-kill-file-mark)
 -    (gnus-ancient-mark)
 -    (gnus-low-score-mark)
 -    (gnus-catchup-mark (from -1) (subject -1))))
 -@end lisp
 +@node Associating Engines
 +@subsubsection Associating Engines
  
 -As you see, each element in this alist has a mark as a key (either a
 -variable name or a ``real'' mark---a character).  Following this key is
 -a arbitrary number of header/score pairs.  If there are no header/score
 -pairs following the key, no adaptive scoring will be done on articles
 -that have that key as the article mark.  For instance, articles with
 -@code{gnus-unread-mark} in the example above will not get adaptive score
 -entries.
  
 -Each article can have only one mark, so just a single of these rules
 -will be applied to each article.
 +When searching a group, @code{nnir} needs to know which search engine to
 +use. You can configure a given server to use a particular engine by
 +setting the server variable @code{nnir-search-engine} to the engine
 +name. For example to use the @code{namazu} engine to search the server
 +named @code{home} you can use
  
 -To take @code{gnus-del-mark} as an example---this alist says that all
 -articles that have that mark (i.e., are marked with @samp{e}) will have a
 -score entry added to lower based on the @code{From} header by -4, and
 -lowered by @code{Subject} by -1.  Change this to fit your prejudices.
 +@lisp
 +(setq gnus-secondary-select-methods
 +      '((nnml "home" 
 +         (nnimap-address "localhost")
 +         (nnir-search-engine namazu))))
 +@end lisp
  
 -If you have marked 10 articles with the same subject with
 -@code{gnus-del-mark}, the rule for that mark will be applied ten times.
 -That means that that subject will get a score of ten times -1, which
 -should be, unless I'm much mistaken, -10.
 +Alternatively you might want to use a particular engine for all servers
 +with a given backend. For example, you might want to use the @code{imap}
 +engine for all servers using the @code{nnimap} backend. In this case you
 +can customize the variable @code{nnir-method-default-engines}. This is
 +an alist of pairs of the form @code{(backend . engine)}. By default this
 +variable is set to use the @code{imap} engine for all servers using the
 +@code{nnimap} backend, and the @code{gmane} backend for @code{nntp}
 +servers. (Don't worry, the @code{gmane} search engine won't actually try
 +to search non-gmane @code{nntp} servers.) But if you wanted to use
 +@code{namazu} for all your servers with an @code{nnimap} backend you
 +could change this to
  
 -If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all
 -the read articles will be marked with the @samp{E} mark.  This'll
 -probably make adaptive scoring slightly impossible, so auto-expiring and
 -adaptive scoring doesn't really mix very well.
 +@lisp
 +'((nnimap . namazu)
 +  (nntp . gmane))
 +@end lisp
  
 -The headers you can score on are @code{from}, @code{subject},
 -@code{message-id}, @code{references}, @code{xref}, @code{lines},
 -@code{chars} and @code{date}.  In addition, you can score on
 -@code{followup}, which will create an adaptive score entry that matches
 -on the @code{References} header using the @code{Message-ID} of the
 -current article, thereby matching the following thread.
 +@node The imap Engine
 +@subsubsection The imap Engine
  
 -If you use this scheme, you should set the score file atom @code{mark}
 -to something small---like -300, perhaps, to avoid having small random
 -changes result in articles getting marked as read.
 +The @code{imap} engine requires no configuration. 
  
 -After using adaptive scoring for a week or so, Gnus should start to
 -become properly trained and enhance the authors you like best, and kill
 -the authors you like least, without you having to say so explicitly.
 +Queries using the @code{imap} engine follow a simple query language. 
 +The search is always case-insensitive and supports the following
 +features (inspired by the Google search input language):
  
 -You can control what groups the adaptive scoring is to be performed on
 -by using the score files (@pxref{Score File Format}).  This will also
 -let you use different rules in different groups.
 +@table @samp
  
 -@vindex gnus-adaptive-file-suffix
 -The adaptive score entries will be put into a file where the name is the
 -group name with @code{gnus-adaptive-file-suffix} appended.  The default
 -is @file{ADAPT}.
 +@item Boolean query operators
 +AND, OR, and NOT are supported, and parentheses can be used to control
 +operator precedence, e.g. (emacs OR xemacs) AND linux. Note that
 +operators must be written with all capital letters to be
 +recognised. Also preceding a term with a - sign is equivalent to NOT
 +term.
  
 -@vindex gnus-adaptive-pretty-print
 -Adaptive score files can get huge and are not meant to be edited by
 -human hands.  If @code{gnus-adaptive-pretty-print} is @code{nil} (the
 -deafult) those files will not be written in a human readable way.
 +@item Automatic AND queries 
 +If you specify multiple words then they will be treated as an AND
 +expression intended to match all components.
  
 -@vindex gnus-score-exact-adapt-limit
 -When doing adaptive scoring, substring or fuzzy matching would probably
 -give you the best results in most cases.  However, if the header one
 -matches is short, the possibility for false positives is great, so if
 -the length of the match is less than
 -@code{gnus-score-exact-adapt-limit}, exact matching will be used.  If
 -this variable is @code{nil}, exact matching will always be used to avoid
 -this problem.
 +@item Phrase searches
 +If you wrap your query in double-quotes then it will be treated as a
 +literal string.
  
 -@vindex gnus-default-adaptive-word-score-alist
 -As mentioned above, you can adapt either on individual words or entire
 -headers.  If you adapt on words, the
 -@code{gnus-default-adaptive-word-score-alist} variable says what score
 -each instance of a word should add given a mark.
 +@end table
 +
 +By default the whole message will be searched. The query can be limited
 +to a specific part of a message by using a prefix-arg. After inputting
 +the query this will prompt (with completion) for a message part.
 +Choices include ``Whole message'', ``Subject'', ``From'', and
 +``To''. Any unrecognized input is interpreted as a header name. For
 +example, typing @kbd{Message-ID} in response to this prompt will limit
 +the query to the Message-ID header.
 +
 +Finally selecting ``Imap'' will interpret the query as a raw
 +@acronym{IMAP} search query. The format of such queries can be found in
 +RFC3501.
 +
 +If you don't like the default of searching whole messages you can
 +customize @code{nnir-imap-default-search-key}. For example to use
 +@acronym{IMAP} queries by default
  
  @lisp
 -(setq gnus-default-adaptive-word-score-alist
 -      `((,gnus-read-mark . 30)
 -        (,gnus-catchup-mark . -10)
 -        (,gnus-killed-mark . -20)
 -        (,gnus-del-mark . -15)))
 +(setq nnir-imap-default-search-key "Imap")
  @end lisp
  
 -This is the default value.  If you have adaption on words enabled, every
 -word that appears in subjects of articles marked with
 -@code{gnus-read-mark} will result in a score rule that increase the
 -score with 30 points.
 +@node The gmane Engine
 +@subsubsection The gmane Engine
  
 -@vindex gnus-default-ignored-adaptive-words
 -@vindex gnus-ignored-adaptive-words
 -Words that appear in the @code{gnus-default-ignored-adaptive-words} list
 -will be ignored.  If you wish to add more words to be ignored, use the
 -@code{gnus-ignored-adaptive-words} list instead.
 +The @code{gmane} engine requires no configuration. 
  
 -@vindex gnus-adaptive-word-length-limit
 -Some may feel that short words shouldn't count when doing adaptive
 -scoring.  If so, you may set @code{gnus-adaptive-word-length-limit} to
 -an integer.  Words shorter than this number will be ignored.  This
 -variable defaults to @code{nil}.
 +Gmane queries follow a simple query language:
  
 -@vindex gnus-adaptive-word-syntax-table
 -When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
 -syntax table in effect.  It is similar to the standard syntax table, but
 -it considers numbers to be non-word-constituent characters.
 +@table @samp
 +@item Boolean query operators
 +AND, OR, NOT (or AND NOT), and XOR are supported, and brackets can be
 +used to control operator precedence, e.g. (emacs OR xemacs) AND linux.
 +Note that operators must be written with all capital letters to be
 +recognised.
  
 -@vindex gnus-adaptive-word-minimum
 -If @code{gnus-adaptive-word-minimum} is set to a number, the adaptive
 -word scoring process will never bring down the score of an article to
 -below this number.  The default is @code{nil}.
 +@item Required and excluded terms
 ++ and - can be used to require or exclude terms, e.g. football -american
  
 -@vindex gnus-adaptive-word-no-group-words
 -If @code{gnus-adaptive-word-no-group-words} is set to @code{t}, gnus
 -won't adaptively word score any of the words in the group name.  Useful
 -for groups like @samp{comp.editors.emacs}, where most of the subject
 -lines contain the word @samp{emacs}.
 +@item Unicode handling 
 +The search engine converts all text to utf-8, so searching should work
 +in any language.
  
 -After using this scheme for a while, it might be nice to write a
 -@code{gnus-psychoanalyze-user} command to go through the rules and see
 -what words you like and what words you don't like.  Or perhaps not.
 +@item Stopwords 
 +Common English words (like 'the' and 'a') are ignored by default. You
 +can override this by prefixing such words with a + (e.g. +the) or
 +enclosing the word in quotes (e.g. "the").
  
 -Note that the adaptive word scoring thing is highly experimental and is
 -likely to change in the future.  Initial impressions seem to indicate
 -that it's totally useless as it stands.  Some more work (involving more
 -rigorous statistical methods) will have to be done to make this useful.
 +@end table
  
 +The query can be limited to articles by a specific author using a
 +prefix-arg. After inputting the query this will prompt for an author
 +name (or part of a name) to match.
  
 -@node Home Score File
 -@section Home Score File
 +@node The swish++ Engine
 +@subsubsection The swish++ Engine
  
 -The score file where new score file entries will go is called the
 -@dfn{home score file}.  This is normally (and by default) the score file
 -for the group itself.  For instance, the home score file for
 -@samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}.
 +FIXEM: Say something more here.
  
 -However, this may not be what you want.  It is often convenient to share
 -a common home score file among many groups---all @samp{emacs} groups
 -could perhaps use the same home score file.
 +Documentation for swish++ may be found at the swish++ sourceforge page:
 +@uref{http://swishplusplus.sourceforge.net}
  
 -@vindex gnus-home-score-file
 -The variable that controls this is @code{gnus-home-score-file}.  It can
 -be:
 +@table @code
  
 -@enumerate
 -@item
 -A string.  Then this file will be used as the home score file for all
 -groups.
 +@item nnir-swish++-program
 +The name of the swish++ executable. Defaults to @code{search}
  
 -@item
 -A function.  The result of this function will be used as the home score
 -file.  The function will be called with the name of the group as the
 -parameter.
 +@item nnir-swish++-additional-switches
 +A list of strings to be given as additional arguments to
 +swish++. @code{nil} by default.
  
 -@item
 -A list.  The elements in this list can be:
 +@item nnir-swish++-remove-prefix
 +The prefix to remove from each file name returned by swish++ in order
 +to get a group name. By default this is @code{$HOME/Mail}.
  
 -@enumerate
 -@item
 -@code{(@var{regexp} @var{file-name})}.  If the @var{regexp} matches the
 -group name, the @var{file-name} will be used as the home score file.
 +@end table
  
 -@item
 -A function.  If the function returns non-@code{nil}, the result will
 -be used as the home score file.  The function will be called with the
 -name of the group as the parameter.
 +@node The swish-e Engine
 +@subsubsection The swish-e Engine
  
 -@item
 -A string.  Use the string as the home score file.
 -@end enumerate
 +FIXEM: Say something more here.
  
 -The list will be traversed from the beginning towards the end looking
 -for matches.
 +Documentation for swish-e may be found at the swish-e homepage
 +@uref{http://swish-e.org}
  
 -@end enumerate
 +@table @code
  
 -So, if you want to use just a single score file, you could say:
 +@item nnir-swish-e-program
 +The name of the swish-e search program. Defaults to @code{swish-e}.
  
 -@lisp
 -(setq gnus-home-score-file
 -      "my-total-score-file.SCORE")
 -@end lisp
 +@item nnir-swish-e-additional-switches
 +A list of strings to be given as additional arguments to
 +swish-e. @code{nil} by default.
  
 -If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and
 -@file{rec.SCORE} for all @samp{rec} groups (and so on), you can say:
 +@item nnir-swish-e-remove-prefix
 +The prefix to remove from each file name returned by swish-e in order
 +to get a group name. By default this is @code{$HOME/Mail}.
  
 -@findex gnus-hierarchial-home-score-file
 -@lisp
 -(setq gnus-home-score-file
 -      'gnus-hierarchial-home-score-file)
 -@end lisp
 +@end table
  
 -This is a ready-made function provided for your convenience.
 -Other functions include
 +@node The namazu Engine
 +@subsubsection The namazu Engine
  
 -@table @code
 -@item gnus-current-home-score-file
 -@findex gnus-current-home-score-file
 -Return the ``current'' regular score file.  This will make scoring
 -commands add entry to the ``innermost'' matching score file.
 +Using the namazu engine requires creating and maintaining index files.
 +One directory should contain all the index files, and nnir must be told
 +where to find them by setting the @code{nnir-namazu-index-directory}
 +variable.  
  
 -@end table
 +To work correctly the @code{nnir-namazu-remove-prefix} variable must
 +also be correct. This is the prefix to remove from each file name
 +returned by Namazu in order to get a proper group name (albeit with `/'
 +instead of `.').
  
 -If you want to have one score file for the @samp{emacs} groups and
 -another for the @samp{comp} groups, while letting all other groups use
 -their own home score files:
 +For example, suppose that Namazu returns file names such as
 +@samp{/home/john/Mail/mail/misc/42}.  For this example, use the
 +following setting: @code{(setq nnir-namazu-remove-prefix
 +"/home/john/Mail/")} Note the trailing slash.  Removing this prefix from
 +the directory gives @samp{mail/misc/42}.  @code{nnir} knows to remove
 +the @samp{/42} and to replace @samp{/} with @samp{.} to arrive at the
 +correct group name @samp{mail.misc}.
  
 -@lisp
 -(setq gnus-home-score-file
 -      ;; @r{All groups that match the regexp @code{"\\.emacs"}}
 -      '(("\\.emacs" "emacs.SCORE")
 -        ;; @r{All the comp groups in one score file}
 -        ("^comp" "comp.SCORE")))
 -@end lisp
 +Extra switches may be passed to the namazu search command by setting the
 +variable @code{nnir-namazu-additional-switches}.  It is particularly
 +important not to pass any any switches to namazu that will change the
 +output format.  Good switches to use include `--sort', `--ascending',
 +`--early' and `--late'.  Refer to the Namazu documentation for further
 +information on valid switches.
  
 -@vindex gnus-home-adapt-file
 -@code{gnus-home-adapt-file} works exactly the same way as
 -@code{gnus-home-score-file}, but says what the home adaptive score file
 -is instead.  All new adaptive file entries will go into the file
 -specified by this variable, and the same syntax is allowed.
 +Mail must first be indexed  with the `mknmz' program.  Read the documentation
 +for namazu to create a configuration file. Here is an example:
  
 -In addition to using @code{gnus-home-score-file} and
 -@code{gnus-home-adapt-file}, you can also use group parameters
 -(@pxref{Group Parameters}) and topic parameters (@pxref{Topic
 -Parameters}) to achieve much the same.  Group and topic parameters take
 -precedence over this variable.
 +@cartouche
 +@example
 + package conf;  # Don't remove this line!
  
 + # Paths which will not be indexed. Don't use `^' or `$' anchors.
 + $EXCLUDE_PATH = "spam|sent";
  
 -@node Followups To Yourself
 -@section Followups To Yourself
 + # Header fields which should be searchable. case-insensitive
 + $REMAIN_HEADER = "from|date|message-id|subject";
  
 -Gnus offers two commands for picking out the @code{Message-ID} header in
 -the current buffer.  Gnus will then add a score rule that scores using
 -this @code{Message-ID} on the @code{References} header of other
 -articles.  This will, in effect, increase the score of all articles that
 -respond to the article in the current buffer.  Quite useful if you want
 -to easily note when people answer what you've said.
 + # Searchable fields. case-insensitive
 + $SEARCH_FIELD = "from|date|message-id|subject";
  
 -@table @code
 + # The max length of a word.
 + $WORD_LENG_MAX = 128;
  
 -@item gnus-score-followup-article
 -@findex gnus-score-followup-article
 -This will add a score to articles that directly follow up your own
 -article.
 + # The max length of a field.
 + $MAX_FIELD_LENGTH = 256;
 +@end example
 +@end cartouche
  
 -@item gnus-score-followup-thread
 -@findex gnus-score-followup-thread
 -This will add a score to all articles that appear in a thread ``below''
 -your own article.
 -@end table
 +For this example, mail is stored in the directories @samp{~/Mail/mail/},
 +@samp{~/Mail/lists/} and @samp{~/Mail/archive/}, so to index them go to
 +the index directory set in @code{nnir-namazu-index-directory} and issue
 +the following command:
  
 -@vindex message-sent-hook
 -These two functions are both primarily meant to be used in hooks like
 -@code{message-sent-hook}, like this:
 -@lisp
 -(add-hook 'message-sent-hook 'gnus-score-followup-thread)
 -@end lisp
 +@example
 +mknmz --mailnews ~/Mail/archive/ ~/Mail/mail/ ~/Mail/lists/
 +@end example
  
 +For maximum searching efficiency you might want to have a cron job run
 +this command periodically, say every four hours.
  
 -If you look closely at your own @code{Message-ID}, you'll notice that
 -the first two or three characters are always the same.  Here's two of
 -mine:
 +@node The hyrex Engine
 +@subsubsection The hyrex Engine
 +This engine is obsolete.
 +
 +@node Customizations
 +@subsubsection Custimozations
 +
 +@table @code
  
 +@item nnir-method-default-engines
 +Alist of server backend - search engine pairs. The default associations
 +are
  @example
 -<x6u3u47icf.fsf@@eyesore.no>
 -<x6sp9o7ibw.fsf@@eyesore.no>
 +(nnimap . imap)
 +(nntp . gmane)
  @end example
  
 -So ``my'' ident on this machine is @samp{x6}.  This can be
 -exploited---the following rule will raise the score on all followups to
 -myself:
 +@item nnir-ignored-newsgroups
 +A regexp to match newsgroups in the active file that should be skipped
 +when searching all groups on a server.
  
 -@lisp
 -("references"
 - ("<x6[0-9a-z]+\\.fsf\\(_-_\\)?@@.*eyesore\\.no>"
 -  1000 nil r))
 -@end lisp
 +@item nnir-summary-line-format
 +The format specification to be used for lines in an nnir summary buffer.
 +All the items from `gnus-summary-line-format' are available, along with
 +three items unique to nnir summary buffers:
  
 -Whether it's the first two or first three characters that are ``yours''
 -is system-dependent.
 +@example
 +%Z    Search retrieval score value (integer)
 +%G    Article original full group name (string)
 +%g    Article original short group name (string)
 +@end example
  
 +If nil (the default) this will use @code{gnus-summary-line-format}.
  
 -@node Scoring On Other Headers
 -@section Scoring On Other Headers
 -@cindex scoring on other headers
 +@item nnir-retrieve-headers-override-function
 +If non-nil, a function that retrieves article headers rather than using
 +the gnus built-in function.  This function takes an article list and
 +group as arguments and populates the `nntp-server-buffer' with the
 +retrieved headers. It should then return either 'nov or 'headers
 +indicating the retrieved header format. Failure to retrieve headers
 +should return @code{nil}
  
 -Gnus is quite fast when scoring the ``traditional''
 -headers---@samp{From}, @samp{Subject} and so on.  However, scoring
 -other headers requires writing a @code{head} scoring rule, which means
 -that Gnus has to request every single article from the back end to find
 -matches.  This takes a long time in big groups.
 +If this variable is nil, or if the provided function returns nil for a
 +search result, @code{gnus-retrieve-headers} will be called instead."
  
 -@vindex gnus-inhibit-slow-scoring
 -You can inhibit this slow scoring on headers or body by setting the
 -variable @code{gnus-inhibit-slow-scoring}.  If
 -@code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if
 -the group matches the regexp.  If it is t, slow scoring on it is
 -inhibited for all groups.
  
 -Now, there's not much you can do about the slowness for news groups, but for
 -mail groups, you have greater control.  In @ref{To From Newsgroups},
 -it's explained in greater detail what this mechanism does, but here's
 -a cookbook example for @code{nnml} on how to allow scoring on the
 -@samp{To} and @samp{Cc} headers.
 +@end table
  
 -Put the following in your @file{~/.gnus.el} file.
  
 -@lisp
 -(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
 -      nnmail-extra-headers gnus-extra-headers)
 -@end lisp
 +@node nnmairix
 +@section nnmairix
  
 -Restart Gnus and rebuild your @code{nnml} overview files with the
 -@kbd{M-x nnml-generate-nov-databases} command.  This will take a long
 -time if you have much mail.
 +@cindex mairix
 +@cindex nnmairix
 +This paragraph describes how to set up mairix and the back end
 +@code{nnmairix} for indexing and searching your mail from within
 +Gnus.  Additionally, you can create permanent ``smart'' groups which are
 +bound to mairix searches and are automatically updated.
 +
 +@menu
 +* About mairix::                About the mairix mail search engine
 +* nnmairix requirements::       What you will need for using nnmairix
 +* What nnmairix does::          What does nnmairix actually do?
 +* Setting up mairix::           Set up your mairix installation
 +* Configuring nnmairix::        Set up the nnmairix back end
 +* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
 +* Propagating marks::           How to propagate marks from nnmairix groups
 +* nnmairix tips and tricks::    Some tips, tricks and examples
 +* nnmairix caveats::            Some more stuff you might want to know
 +@end menu
 +
 +@c FIXME: The markup in this section might need improvement.
 +@c E.g. adding @samp, @var, @file, @command, etc.
 +@c Cf. (info "(texinfo)Indicating")
 +
 +@node About mairix
 +@subsection About mairix
 +
 +Mairix is a tool for indexing and searching words in locally stored
 +mail.  It was written by Richard Curnow and is licensed under the
 +GPL.  Mairix comes with most popular GNU/Linux distributions, but it also
 +runs under Windows (with cygwin), Mac OS X and Solaris.  The homepage can
 +be found at
 +@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
 +
 +Though mairix might not be as flexible as other search tools like
 +swish++ or namazu, which you can use via the @code{nnir} back end, it
 +has the prime advantage of being incredibly fast.  On current systems, it
 +can easily search through headers and message bodies of thousands and
 +thousands of mails in well under a second.  Building the database
 +necessary for searching might take a minute or two, but only has to be
 +done once fully.  Afterwards, the updates are done incrementally and
 +therefore are really fast, too.  Additionally, mairix is very easy to set
 +up.
 +
 +For maximum speed though, mairix should be used with mails stored in
 +@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
 +end), although it also works with mbox.  Mairix presents the search
 +results by populating a @emph{virtual} maildir/MH folder with symlinks
 +which point to the ``real'' message files (if mbox is used, copies are
 +made).  Since mairix already presents search results in such a virtual
 +mail folder, it is very well suited for using it as an external program
 +for creating @emph{smart} mail folders, which represent certain mail
 +searches.
 +
 +@node nnmairix requirements
 +@subsection nnmairix requirements
  
 -Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
 -so: @kbd{I e s p To RET <your name> RET}.
 +Mairix searches local mail---that means, mairix absolutely must have
 +direct access to your mail folders.  If your mail resides on another
 +server (e.g. an @acronym{IMAP} server) and you happen to have shell
 +access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
  
 -See?  Simple.
 +Additionally, @code{nnmairix} only supports the following Gnus back
 +ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}.  You must use
 +one of these back ends for using @code{nnmairix}.  Other back ends, like
 +@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
  
 +If you absolutely must use mbox and still want to use @code{nnmairix},
 +you can set up a local @acronym{IMAP} server, which you then access via
 +@code{nnimap}.  This is a rather massive setup for accessing some mbox
 +files, so just change to MH or Maildir already...  However, if you're
 +really, really passionate about using mbox, you might want to look into
 +the package @file{mairix.el}, which comes with Emacs 23.
  
 -@node Scoring Tips
 -@section Scoring Tips
 -@cindex scoring tips
 +@node What nnmairix does
 +@subsection What nnmairix does
  
 -@table @dfn
 +The back end @code{nnmairix} enables you to call mairix from within Gnus,
 +either to query mairix with a search term or to update the
 +database.  While visiting a message in the summary buffer, you can use
 +several pre-defined shortcuts for calling mairix, e.g. to quickly
 +search for all mails from the sender of the current message or to
 +display the whole thread associated with the message, even if the
 +mails are in different folders.
  
 -@item Crossposts
 -@cindex crossposts
 -@cindex scoring crossposts
 -If you want to lower the score of crossposts, the line to match on is
 -the @code{Xref} header.
 -@lisp
 -("xref" (" talk.politics.misc:" -1000))
 -@end lisp
 +Additionally, you can create permanent @code{nnmairix} groups which are bound
 +to certain mairix searches.  This way, you can easily create a group
 +containing mails from a certain sender, with a certain subject line or
 +even for one specific thread based on the Message-ID.  If you check for
 +new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
 +automatically update themselves by calling mairix.
  
 -@item Multiple crossposts
 -If you want to lower the score of articles that have been crossposted to
 -more than, say, 3 groups:
 -@lisp
 -("xref"
 -  ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+"
 -   -1000 nil r))
 -@end lisp
 +You might ask why you need @code{nnmairix} at all, since mairix already
 +creates the group, populates it with links to the mails so that you can
 +then access it with Gnus, right?  Well, this @emph{might} work, but often
 +does not---at least not without problems.  Most probably you will get
 +strange article counts, and sometimes you might see mails which Gnus
 +claims have already been canceled and are inaccessible.  This is due to
 +the fact that Gnus isn't really amused when things are happening behind
 +its back.  Another problem can be the mail back end itself, e.g. if you
 +use mairix with an @acronym{IMAP} server (I had Dovecot complaining
 +about corrupt index files when mairix changed the contents of the search
 +group).  Using @code{nnmairix} should circumvent these problems.
  
 -@item Matching on the body
 -This is generally not a very good idea---it takes a very long time.
 -Gnus actually has to fetch each individual article from the server.  But
 -you might want to anyway, I guess.  Even though there are three match
 -keys (@code{Head}, @code{Body} and @code{All}), you should choose one
 -and stick with it in each score file.  If you use any two, each article
 -will be fetched @emph{twice}.  If you want to match a bit on the
 -@code{Head} and a bit on the @code{Body}, just use @code{All} for all
 -the matches.
 +@code{nnmairix} is not really a mail back end---it's actually more like
 +a wrapper, sitting between a ``real'' mail back end where mairix stores
 +the searches and the Gnus front end.  You can choose between three
 +different mail back ends for the mairix folders: @code{nnml},
 +@code{nnmaildir} or @code{nnimap}.  @code{nnmairix} will call the mairix
 +binary so that the search results are stored in folders named
 +@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
 +present these folders in the Gnus front end only with @code{<NAME>}.
 +You can use an existing mail back end where you already store your mail,
 +but if you're uncomfortable with @code{nnmairix} creating new mail
 +groups alongside your other mail, you can also create e.g. a new
 +@code{nnmaildir} or @code{nnml} server exclusively for mairix, but then
 +make sure those servers do not accidentally receive your new mail
 +(@pxref{nnmairix caveats}).  A special case exists if you want to use
 +mairix remotely on an IMAP server with @code{nnimap}---here the mairix
 +folders and your other mail must be on the same @code{nnimap} back end.
  
 -@item Marking as read
 -You will probably want to mark articles that have scores below a certain
 -number as read.  This is most easily achieved by putting the following
 -in your @file{all.SCORE} file:
 -@lisp
 -((mark -100))
 -@end lisp
 -You may also consider doing something similar with @code{expunge}.
 +@node Setting up mairix
 +@subsection Setting up mairix
  
 -@item Negated character classes
 -If you say stuff like @code{[^abcd]*}, you may get unexpected results.
 -That will match newlines, which might lead to, well, The Unknown.  Say
 -@code{[^abcd\n]*} instead.
 -@end table
 +First: create a backup of your mail folders (@pxref{nnmairix caveats}).
  
 +Setting up mairix is easy: simply create a @file{.mairixrc} file with
 +(at least) the following entries:
  
 -@node Reverse Scoring
 -@section Reverse Scoring
 -@cindex reverse scoring
 +@example
 +# Your Maildir/MH base folder
 +base=~/Maildir
 +@end example
  
 -If you want to keep just articles that have @samp{Sex with Emacs} in the
 -subject header, and expunge all other articles, you could put something
 -like this in your score file:
 +This is the base folder for your mails.  All the following directories
 +are relative to this base folder.  If you want to use @code{nnmairix}
 +with @code{nnimap}, this base directory has to point to the mail
 +directory where the @acronym{IMAP} server stores the mail folders!
  
 -@lisp
 -(("subject"
 -  ("Sex with Emacs" 2))
 - (mark 1)
 - (expunge 1))
 -@end lisp
 +@example
 +maildir= ... your maildir folders which should be indexed ...
 +mh= ... your nnml/mh folders which should be indexed ...
 +mbox = ... your mbox files which should be indexed ...
 +@end example
  
 -So, you raise all articles that match @samp{Sex with Emacs} and mark the
 -rest as read, and expunge them to boot.
 +This specifies all your mail folders and mbox files (relative to the
 +base directory!) you want to index with mairix.  Note that the
 +@code{nnml} back end saves mails in MH format, so you have to put those
 +directories in the @code{mh} line.  See the example at the end of this
 +section and mairixrc's man-page for further details.
  
 +@example
 +omit=zz_mairix-*
 +@end example
  
 -@node Global Score Files
 -@section Global Score Files
 -@cindex global score files
 +@vindex nnmairix-group-prefix
 +This should make sure that you don't accidentally index the mairix
 +search results.  You can change the prefix of these folders with the
 +variable @code{nnmairix-group-prefix}.
  
 -Sure, other newsreaders have ``global kill files''.  These are usually
 -nothing more than a single kill file that applies to all groups, stored
 -in the user's home directory.  Bah!  Puny, weak newsreaders!
 +@example
 +mformat= ... 'maildir' or 'mh' ...
 +database= ... location of database file ...
 +@end example
  
 -What I'm talking about here are Global Score Files.  Score files from
 -all over the world, from users everywhere, uniting all nations in one
 -big, happy score file union!  Ange-score!  New and untested!
 +The @code{format} setting specifies the output format for the mairix
 +search folder.  Set this to @code{mh} if you want to access search results
 +with @code{nnml}.  Otherwise choose @code{maildir}.
  
 -@vindex gnus-global-score-files
 -All you have to do to use other people's score files is to set the
 -@code{gnus-global-score-files} variable.  One entry for each score file,
 -or each score file directory.  Gnus will decide by itself what score
 -files are applicable to which group.
 +To summarize, here is my shortened @file{.mairixrc} file as an example:
  
 -To use the score file
 -@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and
 -all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory,
 -say this:
 +@example
 +base=~/Maildir
 +maildir=.personal:.work:.logcheck:.sent
 +mh=../Mail/nnml/*...
 +mbox=../mboxmail/mailarchive_year*
 +mformat=maildir
 +omit=zz_mairix-*
 +database=~/.mairixdatabase
 +@end example
  
 -@lisp
 -(setq gnus-global-score-files
 -      '("/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE"
 -        "/ftp@@ftp.some-where:/pub/score/"))
 -@end lisp
 +In this case, the base directory is @file{~/Maildir}, where all my Maildir
 +folders are stored.  As you can see, the folders are separated by
 +colons.  If you wonder why every folder begins with a dot: this is
 +because I use Dovecot as @acronym{IMAP} server, which again uses
 +@code{Maildir++} folders.  For testing nnmairix, I also have some
 +@code{nnml} mail, which is saved in @file{~/Mail/nnml}.  Since this has
 +to be specified relative to the @code{base} directory, the @code{../Mail}
 +notation is needed.  Note that the line ends in @code{*...}, which means
 +to recursively scan all files under this directory.  Without the three
 +dots, the wildcard @code{*} will not work recursively.  I also have some
 +old mbox files with archived mail lying around in @file{~/mboxmail}.
 +The other lines should be obvious.
  
 -@findex gnus-score-search-global-directories
 -@noindent
 -Simple, eh?  Directory names must end with a @samp{/}.  These
 -directories are typically scanned only once during each Gnus session.
 -If you feel the need to manually re-scan the remote directories, you can
 -use the @code{gnus-score-search-global-directories} command.
 +See the man page for @code{mairixrc} for details and further options,
 +especially regarding wildcard usage, which may be a little different
 +than you are used to.
  
 -Note that, at present, using this option will slow down group entry
 -somewhat.  (That is---a lot.)
 +Now simply call @code{mairix} to create the index for the first time.
 +Note that this may take a few minutes, but every following index will do
 +the updates incrementally and hence is very fast.
  
 -If you want to start maintaining score files for other people to use,
 -just put your score file up for anonymous ftp and announce it to the
 -world.  Become a retro-moderator!  Participate in the retro-moderator
 -wars sure to ensue, where retro-moderators battle it out for the
 -sympathy of the people, luring them to use their score files on false
 -premises!  Yay!  The net is saved!
 +@node Configuring nnmairix
 +@subsection Configuring nnmairix
  
 -Here are some tips for the would-be retro-moderator, off the top of my
 -head:
 +In group mode, type @kbd{G b c}
 +(@code{nnmairix-create-server-and-default-group}).  This will ask you for all
 +necessary information and create a @code{nnmairix} server as a foreign
 +server.  You will have to specify the following:
  
  @itemize @bullet
  
  @item
 -Articles heavily crossposted are probably junk.
 -@item
 -To lower a single inappropriate article, lower by @code{Message-ID}.
 -@item
 -Particularly brilliant authors can be raised on a permanent basis.
 -@item
 -Authors that repeatedly post off-charter for the group can safely be
 -lowered out of existence.
 -@item
 -Set the @code{mark} and @code{expunge} atoms to obliterate the nastiest
 -articles completely.
 +The @strong{name} of the @code{nnmairix} server---choose whatever you
 +want.
  
  @item
 -Use expiring score entries to keep the size of the file down.  You
 -should probably have a long expiry period, though, as some sites keep
 -old articles for a long time.
 -@end itemize
 -
 -@dots{} I wonder whether other newsreaders will support global score files
 -in the future.  @emph{Snicker}.  Yup, any day now, newsreaders like Blue
 -Wave, xrn and 1stReader are bound to implement scoring.  Should we start
 -holding our breath yet?
 -
 -
 -@node Kill Files
 -@section Kill Files
 -@cindex kill files
 +The name of the @strong{back end server} where mairix should store its
 +searches.  This must be a full server name, like @code{nnml:mymail}.
 +Just hit @kbd{TAB} to see the available servers.  Currently, servers
 +which are accessed through @code{nnmaildir}, @code{nnimap} and
 +@code{nnml} are supported.  As explained above, for locally stored
 +mails, this can be an existing server where you store your mails.
 +However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
 +server exclusively for @code{nnmairix} in your secondary select methods
 +(@pxref{Finding the News}).  If you use a secondary @code{nnml} server
 +just for mairix, make sure that you explicitly set the server variable
 +@code{nnml-get-new-mail} to @code{nil}, or you might lose mail
 +(@pxref{nnmairix caveats}).  If you want to use mairix remotely on an
 +@acronym{IMAP} server, you have to choose the corresponding
 +@code{nnimap} server here.
  
 -Gnus still supports those pesky old kill files.  In fact, the kill file
 -entries can now be expiring, which is something I wrote before Daniel
 -Quinlan thought of doing score files, so I've left the code in there.
 +@item
 +@vindex nnmairix-mairix-search-options
 +The @strong{command} to call the mairix binary.  This will usually just
 +be @code{mairix}, but you can also choose something like @code{ssh
 +SERVER mairix} if you want to call mairix remotely, e.g. on your
 +@acronym{IMAP} server.  If you want to add some default options to
 +mairix, you could do this here, but better use the variable
 +@code{nnmairix-mairix-search-options} instead.
  
 -In short, kill processing is a lot slower (and I do mean @emph{a lot})
 -than score processing, so it might be a good idea to rewrite your kill
 -files into score files.
 +@item
 +The name of the @strong{default search group}.  This will be the group
 +where all temporary mairix searches are stored, i.e. all searches which
 +are not bound to permanent @code{nnmairix} groups.  Choose whatever you
 +like.
  
 -Anyway, a kill file is a normal @code{emacs-lisp} file.  You can put any
 -forms into this file, which means that you can use kill files as some
 -sort of primitive hook function to be run on group entry, even though
 -that isn't a very good idea.
 +@item
 +If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
 +asked if you work with @strong{Maildir++}, i.e. with hidden maildir
 +folders (=beginning with a dot).  For example, you have to answer
 +@samp{yes} here if you work with the Dovecot @acronym{IMAP}
 +server.  Otherwise, you should answer @samp{no} here.
  
 -Normal kill files look like this:
 +@end itemize
  
 -@lisp
 -(gnus-kill "From" "Lars Ingebrigtsen")
 -(gnus-kill "Subject" "ding")
 -(gnus-expunge "X")
 -@end lisp
 +@node nnmairix keyboard shortcuts
 +@subsection nnmairix keyboard shortcuts
  
 -This will mark every article written by me as read, and remove the
 -marked articles from the summary buffer.  Very useful, you'll agree.
 +In group mode:
  
 -Other programs use a totally different kill file syntax.  If Gnus
 -encounters what looks like a @code{rn} kill file, it will take a stab at
 -interpreting it.
 +@table @kbd
  
 -Two summary functions for editing a @sc{gnus} kill file:
 +@item G b c
 +@kindex G b c (Group)
 +@findex nnmairix-create-server-and-default-group
 +Creates @code{nnmairix} server and default search group for this server
 +(@code{nnmairix-create-server-and-default-group}).  You should have done
 +this by now (@pxref{Configuring nnmairix}).
  
 -@table @kbd
 +@item G b s
 +@kindex G b s (Group)
 +@findex nnmairix-search
 +Prompts for query which is then sent to the mairix binary.  Search
 +results are put into the default search group which is automatically
 +displayed (@code{nnmairix-search}).
  
 -@item M-k
 -@kindex M-k (Summary)
 -@findex gnus-summary-edit-local-kill
 -Edit this group's kill file (@code{gnus-summary-edit-local-kill}).
 +@item G b m
 +@kindex G b m (Group)
 +@findex nnmairix-widget-search
 +Allows you to create a mairix search or a permanent group more
 +comfortably using graphical widgets, similar to a customization
 +group.  Just try it to see how it works (@code{nnmairix-widget-search}).
  
 -@item M-K
 -@kindex M-K (Summary)
 -@findex gnus-summary-edit-global-kill
 -Edit the general kill file (@code{gnus-summary-edit-global-kill}).
 -@end table
 +@item G b i
 +@kindex G b i (Group)
 +@findex nnmairix-search-interactive
 +Another command for creating a mairix query more comfortably, but uses
 +only the minibuffer (@code{nnmairix-search-interactive}).
  
 -Two group mode functions for editing the kill files:
 +@item G b g
 +@kindex G b g (Group)
 +@findex nnmairix-create-search-group
 +Creates a permanent group which is associated with a search query
 +(@code{nnmairix-create-search-group}).  The @code{nnmairix} back end
 +automatically calls mairix when you update this group with @kbd{g} or
 +@kbd{M-g}.
  
 -@table @kbd
 +@item G b q
 +@kindex G b q (Group)
 +@findex nnmairix-group-change-query-this-group
 +Changes the search query for the @code{nnmairix} group under cursor
 +(@code{nnmairix-group-change-query-this-group}).
  
 -@item M-k
 -@kindex M-k (Group)
 -@findex gnus-group-edit-local-kill
 -Edit this group's kill file (@code{gnus-group-edit-local-kill}).
 +@item G b t
 +@kindex G b t (Group)
 +@findex nnmairix-group-toggle-threads-this-group
 +Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
 +i.e.  if you want see the whole threads of the found messages
 +(@code{nnmairix-group-toggle-threads-this-group}).
  
 -@item M-K
 -@kindex M-K (Group)
 -@findex gnus-group-edit-global-kill
 -Edit the general kill file (@code{gnus-group-edit-global-kill}).
 -@end table
 +@item G b u
 +@kindex G b u (Group)
 +@findex nnmairix-update-database
 +@vindex nnmairix-mairix-update-options
 +Calls mairix binary for updating the database
 +(@code{nnmairix-update-database}).  The default parameters are @code{-F}
 +and @code{-Q} for making this as fast as possible (see variable
 +@code{nnmairix-mairix-update-options} for defining these default
 +options).
  
 -Kill file variables:
 +@item G b r
 +@kindex G b r (Group)
 +@findex nnmairix-group-toggle-readmarks-this-group
 +Keep articles in this @code{nnmairix} group always read or unread, or leave the
 +marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
  
 -@table @code
 -@item gnus-kill-file-name
 -@vindex gnus-kill-file-name
 -A kill file for the group @samp{soc.motss} is normally called
 -@file{soc.motss.KILL}.  The suffix appended to the group name to get
 -this file name is detailed by the @code{gnus-kill-file-name} variable.
 -The ``global'' kill file (not in the score file sense of ``global'', of
 -course) is just called @file{KILL}.
 +@item G b d
 +@kindex G b d (Group)
 +@findex nnmairix-group-delete-recreate-this-group
 +Recreate @code{nnmairix} group on the ``real'' mail back end
 +(@code{nnmairix-group-delete-recreate-this-group}).  You can do this if
 +you always get wrong article counts with a @code{nnmairix} group.
  
 -@vindex gnus-kill-save-kill-file
 -@item gnus-kill-save-kill-file
 -If this variable is non-@code{nil}, Gnus will save the
 -kill file after processing, which is necessary if you use expiring
 -kills.
 +@item G b a
 +@kindex G b a (Group)
 +@findex nnmairix-group-toggle-allowfast-this-group
 +Toggles the @code{allow-fast} parameters for group under cursor
 +(@code{nnmairix-group-toggle-allowfast-this-group}).  The default
 +behavior of @code{nnmairix} is to do a mairix search every time you
 +update or enter the group.  With the @code{allow-fast} parameter set,
 +mairix will only be called when you explicitly update the group, but not
 +upon entering.  This makes entering the group faster, but it may also
 +lead to dangling symlinks if something changed between updating and
 +entering the group which is not yet in the mairix database.
  
 -@item gnus-apply-kill-hook
 -@vindex gnus-apply-kill-hook
 -@findex gnus-apply-kill-file-unless-scored
 -@findex gnus-apply-kill-file
 -A hook called to apply kill files to a group.  It is
 -@code{(gnus-apply-kill-file)} by default.  If you want to ignore the
 -kill file if you have a score file for the same group, you can set this
 -hook to @code{(gnus-apply-kill-file-unless-scored)}.  If you don't want
 -kill files to be processed, you should set this variable to @code{nil}.
 +@item G b p
 +@kindex G b p (Group)
 +@findex nnmairix-group-toggle-propmarks-this-group
 +Toggle marks propagation for this group
 +(@code{nnmairix-group-toggle-propmarks-this-group}).  (@pxref{Propagating
 +marks}).
  
 -@item gnus-kill-file-mode-hook
 -@vindex gnus-kill-file-mode-hook
 -A hook called in kill-file mode buffers.
 +@item G b o
 +@kindex G b o (Group)
 +@findex nnmairix-propagate-marks
 +Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
 +@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
  
  @end table
  
 +In summary mode:
  
 -@node Converting Kill Files
 -@section Converting Kill Files
 -@cindex kill files
 -@cindex converting kill files
 +@table @kbd
  
 -If you have loads of old kill files, you may want to convert them into
 -score files.  If they are ``regular'', you can use
 -the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
 -by hand.
 +@item $ m
 +@kindex $ m (Summary)
 +@findex nnmairix-widget-search-from-this-article
 +Allows you to create a mairix query or group based on the current
 +message using graphical widgets (same as @code{nnmairix-widget-search})
 +(@code{nnmairix-widget-search-from-this-article}).
  
 -The kill to score conversion package isn't included in Emacs by default.
 -You can fetch it from the contrib directory of the Gnus distribution or
 -from
 -@uref{http://heim.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
 +@item $ g
 +@kindex $ g (Summary)
 +@findex nnmairix-create-search-group-from-message
 +Interactively creates a new search group with query based on the current
 +message, but uses the minibuffer instead of graphical widgets
 +(@code{nnmairix-create-search-group-from-message}).
  
 -If your old kill files are very complex---if they contain more
 -non-@code{gnus-kill} forms than not, you'll have to convert them by
 -hand.  Or just let them be as they are.  Gnus will still use them as
 -before.
 +@item $ t
 +@kindex $ t (Summary)
 +@findex nnmairix-search-thread-this-article
 +Searches thread for the current article
 +(@code{nnmairix-search-thread-this-article}).  This is effectively a
 +shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
 +current article and enabled threads.
  
 +@item $ f
 +@kindex $ f (Summary)
 +@findex nnmairix-search-from-this-article
 +Searches all messages from sender of the current article
 +(@code{nnmairix-search-from-this-article}).  This is a shortcut for
 +calling @code{nnmairix-search} with @samp{f:From}.
  
 -@node Advanced Scoring
 -@section Advanced Scoring
 +@item $ o
 +@kindex $ o (Summary)
 +@findex nnmairix-goto-original-article
 +(Only in @code{nnmairix} groups!) Tries determine the group this article
 +originally came from and displays the article in this group, so that
 +e.g. replying to this article the correct posting styles/group
 +parameters are applied (@code{nnmairix-goto-original-article}).  This
 +function will use the registry if available, but can also parse the
 +article file name as a fallback method.
  
 -Scoring on Subjects and From headers is nice enough, but what if you're
 -really interested in what a person has to say only when she's talking
 -about a particular subject?  Or what if you really don't want to
 -read what person A has to say when she's following up to person B, but
 -want to read what she says when she's following up to person C?
 +@item $ u
 +@kindex $ u (Summary)
 +@findex nnmairix-remove-tick-mark-original-article
 +Remove possibly existing tick mark from original article
 +(@code{nnmairix-remove-tick-mark-original-article}).  (@pxref{nnmairix
 +tips and tricks}).
  
 -By using advanced scoring rules you may create arbitrarily complex
 -scoring patterns.
 +@end table
  
 -@menu
 -* Advanced Scoring Syntax::     A definition.
 -* Advanced Scoring Examples::   What they look like.
 -* Advanced Scoring Tips::       Getting the most out of it.
 -@end menu
 +@node Propagating marks
 +@subsection Propagating marks
  
 +First of: you really need a patched mairix binary for using the marks
 +propagation feature efficiently. Otherwise, you would have to update
 +the mairix database all the time. You can get the patch at
  
 -@node Advanced Scoring Syntax
 -@subsection Advanced Scoring Syntax
 +@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
  
 -Ordinary scoring rules have a string as the first element in the rule.
 -Advanced scoring rules have a list as the first element.  The second
 -element is the score to be applied if the first element evaluated to a
 -non-@code{nil} value.
 +You need the mairix v0.21 source code for this patch; everything else
 +is explained in the accompanied readme file. If you don't want to use
 +marks propagation, you don't have to apply these patches, but they also
 +fix some annoyances regarding changing maildir flags, so it might still
 +be useful to you.
  
 -These lists may consist of three logical operators, one redirection
 -operator, and various match operators.
 +With the patched mairix binary, you can use @code{nnmairix} as an
 +alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
 +example, instead of splitting all mails from @samp{david@@foobar.com}
 +into a group, you can simply create a search group with the query
 +@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
 +all about: simply put everything in one mail folder and dynamically
 +create searches instead of splitting. This is more flexible, since you
 +can dynamically change your folders any time you want to. This also
 +implies that you will usually read your mails in the @code{nnmairix}
 +groups instead of your ``real'' mail groups.
  
 -Logical operators:
 +There is one problem, though: say you got a new mail from
 +@samp{david@@foobar.com}; it will now show up in two groups, the
 +``real'' group (your INBOX, for example) and in the @code{nnmairix}
 +search group (provided you have updated the mairix database). Now you
 +enter the @code{nnmairix} group and read the mail. The mail will be
 +marked as read, but only in the @code{nnmairix} group---in the ``real''
 +mail group it will be still shown as unread.
  
 -@table @code
 -@item &
 -@itemx and
 -This logical operator will evaluate each of its arguments until it finds
 -one that evaluates to @code{false}, and then it'll stop.  If all arguments
 -evaluate to @code{true} values, then this operator will return
 -@code{true}.
 +You could now catch up the mail group (@pxref{Group Data}), but this is
 +tedious and error prone, since you may overlook mails you don't have
 +created @code{nnmairix} groups for. Of course, you could first use
 +@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
 +shortcuts}) and then read the mail in the original group, but that's
 +even more cumbersome.
  
 -@item |
 -@itemx or
 -This logical operator will evaluate each of its arguments until it finds
 -one that evaluates to @code{true}.  If no arguments are @code{true},
 -then this operator will return @code{false}.
 +Clearly, the easiest way would be if marks could somehow be
 +automatically set for the original article. This is exactly what
 +@emph{marks propagation} is about.
  
 -@item !
 -@itemx not
 -@itemx ¬
 -This logical operator only takes a single argument.  It returns the
 -logical negation of the value of its argument.
 +Marks propagation is deactivated by default. You can activate it for a
 +certain @code{nnmairix} group with
 +@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
 +p}). This function will warn you if you try to use it with your default
 +search group; the reason is that the default search group is used for
 +temporary searches, and it's easy to accidentally propagate marks from
 +this group. However, you can ignore this warning if you really want to.
  
 -@end table
 +With marks propagation enabled, all the marks you set in a @code{nnmairix}
 +group should now be propagated to the original article. For example,
 +you can now tick an article (by default with @kbd{!}) and this mark should
 +magically be set for the original article, too.
  
 -There is an @dfn{indirection operator} that will make its arguments
 -apply to the ancestors of the current article being scored.  For
 -instance, @code{1-} will make score rules apply to the parent of the
 -current article.  @code{2-} will make score rules apply to the
 -grandparent of the current article.  Alternatively, you can write
 -@code{^^}, where the number of @code{^}s (carets) says how far back into
 -the ancestry you want to go.
 +A few more remarks which you may or may not want to know:
  
 -Finally, we have the match operators.  These are the ones that do the
 -real work.  Match operators are header name strings followed by a match
 -and a match type.  A typical match operator looks like @samp{("from"
 -"Lars Ingebrigtsen" s)}.  The header names are the same as when using
 -simple scoring, and the match types are also the same.
 +@vindex nnmairix-propagate-marks-upon-close
 +Marks will not be set immediately, but only upon closing a group. This
 +not only makes marks propagation faster, it also avoids problems with
 +dangling symlinks when dealing with maildir files (since changing flags
 +will change the file name). You can also control when to propagate marks
 +via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
 +details).
  
 +Obviously, @code{nnmairix} will have to look up the original group for every
 +article you want to set marks for. If available, @code{nnmairix} will first use
 +the registry for determining the original group. The registry is very
 +fast, hence you should really, really enable the registry when using
 +marks propagation. If you don't have to worry about RAM and disc space,
 +set @code{gnus-registry-max-entries} to a large enough value; to be on
 +the safe side, choose roughly the amount of mails you index with mairix.
  
 -@node Advanced Scoring Examples
 -@subsection Advanced Scoring Examples
 +@vindex nnmairix-only-use-registry
 +If you don't want to use the registry or the registry hasn't seen the
 +original article yet, @code{nnmairix} will use an additional mairix
 +search for determining the file name of the article. This, of course, is
 +way slower than the registry---if you set hundreds or even thousands of
 +marks this way, it might take some time. You can avoid this situation by
 +setting @code{nnmairix-only-use-registry} to t.
  
 -Please note that the following examples are score file rules.  To
 -make a complete score file from them, surround them with another pair
 -of parentheses.
 +Maybe you also want to propagate marks the other way round, i.e. if you
 +tick an article in a "real" mail group, you'd like to have the same
 +article in a @code{nnmairix} group ticked, too. For several good
 +reasons, this can only be done efficiently if you use maildir. To
 +immediately contradict myself, let me mention that it WON'T work with
 +@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
 +not in the file name. Therefore, propagating marks to @code{nnmairix}
 +groups will usually only work if you use an IMAP server which uses
 +maildir as its file format.
  
 -Let's say you want to increase the score of articles written by Lars
 -when he's talking about Gnus:
 +@vindex nnmairix-propagate-marks-to-nnmairix-groups
 +If you work with this setup, just set
 +@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
 +happens. If you don't like what you see, just set it to @code{nil} again. One
 +problem might be that you get a wrong number of unread articles; this
 +usually happens when you delete or expire articles in the original
 +groups. When this happens, you can recreate the @code{nnmairix} group on the
 +back end using @kbd{G b d}.
  
 -@example
 -@group
 -((&
 -  ("from" "Lars Ingebrigtsen")
 -  ("subject" "Gnus"))
 - 1000)
 -@end group
 -@end example
 +@node nnmairix tips and tricks
 +@subsection nnmairix tips and tricks
  
 -Quite simple, huh?
 +@itemize
 +@item
 +Checking Mail
  
 -When he writes long articles, he sometimes has something nice to say:
 +@findex nnmairix-update-groups
 +I put all my important mail groups at group level 1. The mairix groups
 +have group level 5, so they do not get checked at start up (@pxref{Group
 +Levels}).
  
 -@example
 -((&
 -  ("from" "Lars Ingebrigtsen")
 -  (|
 -   ("subject" "Gnus")
 -   ("lines" 100 >)))
 - 1000)
 -@end example
 +I use the following to check for mails:
  
 -However, when he responds to things written by Reig Eigil Logge, you
 -really don't want to read what he's written:
 +@lisp
 +(defun my-check-mail-mairix-update (level)
 +  (interactive "P")
 +  ;; if no prefix given, set level=1
 +  (gnus-group-get-new-news (or level 1))
 +  (nnmairix-update-groups "mairixsearch" t t)
 +  (gnus-group-list-groups))
  
 -@example
 -((&
 -  ("from" "Lars Ingebrigtsen")
 -  (1- ("from" "Reig Eigil Logge")))
 - -100000)
 -@end example
 +(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
 +@end lisp
  
 -Everybody that follows up Redmondo when he writes about disappearing
 -socks should have their scores raised, but only when they talk about
 -white socks.  However, when Lars talks about socks, it's usually not
 -very interesting:
 +Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
 +server. See the doc string for @code{nnmairix-update-groups} for
 +details.
  
 -@example
 -((&
 -  (1-
 -   (&
 -    ("from" "redmondo@@.*no" r)
 -    ("body" "disappearing.*socks" t)))
 -  (! ("from" "Lars Ingebrigtsen"))
 -  ("body" "white.*socks"))
 - 1000)
 -@end example
 +@item
 +Example: search group for ticked articles
  
 -Suppose you're reading a high volume group and you're only interested
 -in replies. The plan is to score down all articles that don't have
 -subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all
 -parents of articles that have subjects that begin with reply marks.
 +For example, you can create a group for all ticked articles, where the
 +articles always stay unread:
  
 -@example
 -((! ("subject" "re:\\|fwd?:" r))
 -  -200)
 -((1- ("subject" "re:\\|fwd?:" r))
 -  200)
 -@end example
 +Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
 +@samp{F:f} as query and do not include threads.
  
 -The possibilities are endless.
 +Now activate marks propagation for this group by using @kbd{G b p}. Then
 +activate the always-unread feature by using @kbd{G b r} twice.
  
 -@node Advanced Scoring Tips
 -@subsection Advanced Scoring Tips
 +So far so good---but how do you remove the tick marks in the @code{nnmairix}
 +group?  There are two options: You may simply use
 +@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
 +tick marks from the original article. The other possibility is to set
 +@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
 +comments about this option.  If it works for you, the tick marks should
 +also exist in the @code{nnmairix} group and you can remove them as usual,
 +e.g. by marking an article as read.
  
 -The @code{&} and @code{|} logical operators do short-circuit logic.
 -That is, they stop processing their arguments when it's clear what the
 -result of the operation will be.  For instance, if one of the arguments
 -of an @code{&} evaluates to @code{false}, there's no point in evaluating
 -the rest of the arguments.  This means that you should put slow matches
 -(@samp{body}, @samp{header}) last and quick matches (@samp{from},
 -@samp{subject}) first.
 +When you have removed a tick mark from the original article, this
 +article should vanish from the @code{nnmairix} group after you have updated the
 +mairix database and updated the group.  Fortunately, there is a function
 +for doing exactly that: @code{nnmairix-update-groups}. See the previous code
 +snippet and the doc string for details.
  
 -The indirection arguments (@code{1-} and so on) will make their
 -arguments work on previous generations of the thread.  If you say
 -something like:
 +@item
 +Dealing with auto-subscription of mail groups
  
 -@example
 -...
 -(1-
 - (1-
 -  ("from" "lars")))
 -...
 -@end example
 +As described before, all @code{nnmairix} groups are in fact stored on
 +the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
 +see them when you enter the back end server in the server buffer. You
 +should not subscribe these groups! Unfortunately, these groups will
 +usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
 +@code{nnml}, i.e. you will suddenly see groups of the form
 +@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
 +simply kill these groups with C-k.  For avoiding this, turn off
 +auto-subscription completely by setting the variable
 +@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
 +Groups}), or if you like to keep this feature use the following kludge
 +for turning it off for all groups beginning with @samp{zz_}:
  
 -Then that means ``score on the from header of the grandparent of the
 -current article''.  An indirection is quite fast, but it's better to say:
 +@lisp
 +(setq gnus-auto-subscribed-groups
 +      "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
 +@end lisp
  
 -@example
 -(1-
 - (&
 -  ("from" "Lars")
 -  ("subject" "Gnus")))
 -@end example
 +@end itemize
  
 -than it is to say:
 +@node nnmairix caveats
 +@subsection nnmairix caveats
  
 -@example
 -(&
 - (1- ("from" "Lars"))
 - (1- ("subject" "Gnus")))
 -@end example
 +@itemize
 +@item
 +You can create a secondary @code{nnml} server just for nnmairix, but then
 +you have to explicitly set the corresponding server variable
 +@code{nnml-get-new-mail} to @code{nil}.  Otherwise, new mail might get
 +put into this secondary server (and would never show up again).  Here's
 +an example server definition:
  
 +@lisp
 +(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
 +@end lisp
  
 -@node Score Decays
 -@section Score Decays
 -@cindex score decays
 -@cindex decays
 +(The @code{nnmaildir} back end also has a server variabe
 +@code{get-new-mail}, but its default value is @code{nil}, so you don't
 +have to explicitly set it if you use a @code{nnmaildir} server just for
 +mairix.)
  
 -You may find that your scores have a tendency to grow without
 -bounds, especially if you're using adaptive scoring.  If scores get too
 -big, they lose all meaning---they simply max out and it's difficult to
 -use them in any sensible way.
 +@item
 +If you use the Gnus registry: don't use the registry with
 +@code{nnmairix} groups (put them in
 +@code{gnus-registry-unfollowed-groups}).  Be @emph{extra careful} if
 +you use @code{gnus-registry-split-fancy-with-parent}; mails which are
 +split into @code{nnmairix} groups are usually gone for good as soon as
 +you check the group for new mail (yes, it has happened to me...).
  
 -@vindex gnus-decay-scores
 -@findex gnus-decay-score
 -@vindex gnus-decay-score-function
 -Gnus provides a mechanism for decaying scores to help with this problem.
 -When score files are loaded and @code{gnus-decay-scores} is
 -non-@code{nil}, Gnus will run the score files through the decaying
 -mechanism thereby lowering the scores of all non-permanent score rules.
 -If @code{gnus-decay-scores} is a regexp, only score files matching this
 -regexp are treated.  E.g. you may set it to @samp{\\.ADAPT\\'} if only
 -@emph{adaptive} score files should be decayed.  The decay itself if
 -performed by the @code{gnus-decay-score-function} function, which is
 -@code{gnus-decay-score} by default.  Here's the definition of that
 -function:
 +@item
 +Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
 +groups (you shouldn't be able to, anyway).
  
 -@lisp
 -(defun gnus-decay-score (score)
 -  "Decay SCORE according to `gnus-score-decay-constant'
 -and `gnus-score-decay-scale'."
 -  (let ((n (- score
 -              (* (if (< score 0) -1 1)
 -                 (min (abs score)
 -                      (max gnus-score-decay-constant
 -                           (* (abs score)
 -                              gnus-score-decay-scale)))))))
 -    (if (and (featurep 'xemacs)
 -             ;; XEmacs' floor can handle only the floating point
 -             ;; number below the half of the maximum integer.
 -             (> (abs n) (lsh -1 -2)))
 -        (string-to-number
 -         (car (split-string (number-to-string n) "\\.")))
 -      (floor n))))
 -@end lisp
 +@item
 +If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
 +@code{nnmairix} groups (though I have no idea what happens if you do).
  
 -@vindex gnus-score-decay-scale
 -@vindex gnus-score-decay-constant
 -@code{gnus-score-decay-constant} is 3 by default and
 -@code{gnus-score-decay-scale} is 0.05.  This should cause the following:
 +@item
 +mairix does only support us-ascii characters.
  
 -@enumerate
  @item
 -Scores between -3 and 3 will be set to 0 when this function is called.
 +@code{nnmairix} uses a rather brute force method to force Gnus to
 +completely reread the group on the mail back end after mairix was
 +called---it simply deletes and re-creates the group on the mail
 +back end. So far, this has worked for me without any problems, and I
 +don't see how @code{nnmairix} could delete other mail groups than its
 +own, but anyway: you really should have a backup of your mail
 +folders.
  
  @item
 -Scores with magnitudes between 3 and 60 will be shrunk by 3.
 +All necessary information is stored in the group parameters
 +(@pxref{Group Parameters}). This has the advantage that no active file
 +is needed, but also implies that when you kill a @code{nnmairix} group,
 +it is gone for good.
  
  @item
 -Scores with magnitudes greater than 60 will be shrunk by 5% of the
 -score.
 -@end enumerate
 +@findex nnmairix-purge-old-groups
 +If you create and kill a lot of @code{nnmairix} groups, the
 +``zz_mairix-*'' groups will accumulate on the mail back end server. To
 +delete old groups which are no longer needed, call
 +@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
 +save any ``real'' mail in folders of the form
 +@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
 +@code{nnmairix} groups by changing the variable
 +@code{nnmairix-group-prefix}.
  
 -If you don't like this decay function, write your own.  It is called
 -with the score to be decayed as its only parameter, and it should return
 -the new score, which should be an integer.
 +@item
 +The following only applies if you @emph{don't} use the mentioned patch
 +for mairix (@pxref{Propagating marks}):
  
 -Gnus will try to decay scores once a day.  If you haven't run Gnus for
 -four days, Gnus will decay the scores four times, for instance.
 +A problem can occur when using @code{nnmairix} with maildir folders and
 +comes with the fact that maildir stores mail flags like @samp{Seen} or
 +@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
 +file name, respectively. This implies that currently you would have to
 +update the mairix database not only when new mail arrives, but also when
 +mail flags are changing. The same applies to new mails which are indexed
 +while they are still in the @samp{new} folder but then get moved to
 +@samp{cur} when Gnus has seen the mail. If you don't update the database
 +after this has happened, a mairix query can lead to symlinks pointing to
 +non-existing files. In Gnus, these messages will usually appear with
 +``(none)'' entries in the header and can't be accessed. If this happens
 +to you, using @kbd{G b u} and updating the group will usually fix this.
 +
 +@end itemize
  
  @iftex
  @iflatex
  * Compilation::                 How to speed Gnus up.
  * Mode Lines::                  Displaying information in the mode lines.
  * Highlighting and Menus::      Making buffers look all nice and cozy.
 -* Buttons::                     Get tendinitis in ten easy steps!
  * Daemons::                     Gnus can do things behind your back.
 -* NoCeM::                       How to avoid spam and other fatty foods.
  * Undo::                        Some actions can be undone.
  * Predicate Specifiers::        Specifying predicates.
  * Moderation::                  What to do if you're a moderator.
@@@ -22226,11 -22890,8 +22226,11 @@@ default
  @item gnus-expert-user
  @vindex gnus-expert-user
  If this variable is non-@code{nil}, you will seldom be asked any
 -questions by Gnus.  It will simply assume you know what you're doing, no
 -matter how strange.
 +questions by Gnus.  It will simply assume you know what you're doing,
 +no matter how strange.  For example, quitting Gnus, exiting a group
 +without an update, catching up with a group, deleting expired
 +articles, and replying by mail to a news message will not require
 +confirmation.
  
  @item gnus-interactive-catchup
  @vindex gnus-interactive-catchup
@@@ -22602,7 -23263,8 +22602,7 @@@ glitches.  Use at your own peril
  buffer should be given.  Here's an excerpt of this variable:
  
  @lisp
 -((group (vertical 1.0 (group 1.0 point)
 -                      (if gnus-carpal (group-carpal 4))))
 +((group (vertical 1.0 (group 1.0 point)))
   (article (vertical 1.0 (summary 0.25 point)
                          (article 1.0))))
  @end lisp
@@@ -22640,6 -23302,7 +22640,6 @@@ Here's a more complicated example
  @lisp
  (article (vertical 1.0 (group 4)
                         (summary 0.25 point)
 -                       (if gnus-carpal (summary-carpal 4))
                         (article 1.0)))
  @end lisp
  
@@@ -22650,16 -23313,20 +22650,16 @@@ occupy, not a percentage
  If the @dfn{split} looks like something that can be @code{eval}ed (to be
  precise---if the @code{car} of the split is a function or a subr), this
  split will be @code{eval}ed.  If the result is non-@code{nil}, it will
 -be used as a split.  This means that there will be three buffers if
 -@code{gnus-carpal} is @code{nil}, and four buffers if @code{gnus-carpal}
 -is non-@code{nil}.
 +be used as a split.
  
  Not complicated enough for you?  Well, try this on for size:
  
  @lisp
  (article (horizontal 1.0
               (vertical 0.5
 -                 (group 1.0)
 -                 (gnus-carpal 4))
 +                 (group 1.0))
               (vertical 1.0
                   (summary 0.25 point)
 -                 (summary-carpal 4)
                   (article 1.0))))
  @end lisp
  
@@@ -23036,6 -23703,62 +23036,6 @@@ Hook called after creating the score mo
  @end table
  
  
 -@node Buttons
 -@section Buttons
 -@cindex buttons
 -@cindex mouse
 -@cindex click
 -
 -Those new-fangled @dfn{mouse} contraptions are very popular with the
 -young, hep kids who don't want to learn the proper way to do things
 -these days.  Why, I remember way back in the summer of '89, when I was
 -using Emacs on a Tops 20 system.  Three hundred users on one single
 -machine, and every user was running Simula compilers.  Bah!
 -
 -Right.
 -
 -@vindex gnus-carpal
 -Well, you can make Gnus display bufferfuls of buttons you can click to
 -do anything by setting @code{gnus-carpal} to @code{t}.  Pretty simple,
 -really.  Tell the chiropractor I sent you.
 -
 -
 -@table @code
 -
 -@item gnus-carpal-mode-hook
 -@vindex gnus-carpal-mode-hook
 -Hook run in all carpal mode buffers.
 -
 -@item gnus-carpal-button-face
 -@vindex gnus-carpal-button-face
 -Face used on buttons.
 -
 -@item gnus-carpal-header-face
 -@vindex gnus-carpal-header-face
 -Face used on carpal buffer headers.
 -
 -@item gnus-carpal-group-buffer-buttons
 -@vindex gnus-carpal-group-buffer-buttons
 -Buttons in the group buffer.
 -
 -@item gnus-carpal-summary-buffer-buttons
 -@vindex gnus-carpal-summary-buffer-buttons
 -Buttons in the summary buffer.
 -
 -@item gnus-carpal-server-buffer-buttons
 -@vindex gnus-carpal-server-buffer-buttons
 -Buttons in the server buffer.
 -
 -@item gnus-carpal-browse-buffer-buttons
 -@vindex gnus-carpal-browse-buffer-buttons
 -Buttons in the browse buffer.
 -@end table
 -
 -All the @code{buttons} variables are lists.  The elements in these list
 -are either cons cells where the @code{car} contains a text to be displayed and
 -the @code{cdr} contains a function symbol, or a simple string.
 -
 -
  @node Daemons
  @section Daemons
  @cindex demons
@@@ -23099,12 -23822,13 +23099,12 @@@ your @file{~/.gnus.el} file
  (gnus-demon-add-handler 'gnus-demon-close-connections 30 t)
  @end lisp
  
 -@findex gnus-demon-add-nocem
  @findex gnus-demon-add-scanmail
  @findex gnus-demon-add-rescan
  @findex gnus-demon-add-scan-timestamps
  @findex gnus-demon-add-disconnection
  Some ready-made functions to do this have been created:
 -@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
 +@code{gnus-demon-add-disconnection},
  @code{gnus-demon-add-nntp-close-connection},
  @code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and
  @code{gnus-demon-add-scanmail}.  Just put those functions in your
@@@ -23123,6 -23847,152 +23123,6 @@@ is a sure-fire way of getting booted of
  behave.
  
  
 -@node NoCeM
 -@section NoCeM
 -@cindex nocem
 -@cindex spam
 -
 -@dfn{Spamming} is posting the same article lots and lots of times.
 -Spamming is bad.  Spamming is evil.
 -
 -Spamming is usually canceled within a day or so by various anti-spamming
 -agencies.  These agencies usually also send out @dfn{NoCeM} messages.
 -NoCeM is pronounced ``no see-'em'', and means what the name
 -implies---these are messages that make the offending articles, like, go
 -away.
 -
 -What use are these NoCeM messages if the articles are canceled anyway?
 -Some sites do not honor cancel messages and some sites just honor cancels
 -from a select few people.  Then you may wish to make use of the NoCeM
 -messages, which are distributed in the newsgroups
 -@samp{news.lists.filters}, @samp{alt.nocem.misc}, etc.
 -
 -Gnus can read and parse the messages in this group automatically, and
 -this will make spam disappear.
 -
 -There are some variables to customize, of course:
 -
 -@table @code
 -@item gnus-use-nocem
 -@vindex gnus-use-nocem
 -Set this variable to @code{t} to set the ball rolling.  It is @code{nil}
 -by default.
 -
 -You can also set this variable to a positive number as a group level.
 -In that case, Gnus scans NoCeM messages when checking new news if this
 -value is not exceeding a group level that you specify as the prefix
 -argument to some commands, e.g. @code{gnus},
 -@code{gnus-group-get-new-news}, etc.  Otherwise, Gnus does not scan
 -NoCeM messages if you specify a group level that is smaller than this
 -value to those commands.  For example, if you use 1 or 2 on the mail
 -groups and the levels on the news groups remain the default, 3 is the
 -best choice.
 -
 -@item gnus-nocem-groups
 -@vindex gnus-nocem-groups
 -Gnus will look for NoCeM messages in the groups in this list.  The
 -default is
 -@lisp
 -("news.lists.filters" "alt.nocem.misc")
 -@end lisp
 -
 -@item gnus-nocem-issuers
 -@vindex gnus-nocem-issuers
 -There are many people issuing NoCeM messages.  This list says what
 -people you want to listen to.  The default is:
 -
 -@lisp
 -("Adri Verhoef"
 - "alba-nocem@@albasani.net"
 - "bleachbot@@httrack.com"
 - "news@@arcor-online.net"
 - "news@@uni-berlin.de"
 - "nocem@@arcor.de"
 - "pgpmoose@@killfile.org"
 - "xjsppl@@gmx.de")
 -@end lisp
 -
 -Known despammers that you can put in this list are listed at@*
 -@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}.
 -
 -You do not have to heed NoCeM messages from all these people---just the
 -ones you want to listen to.  You also don't have to accept all NoCeM
 -messages from the people you like.  Each NoCeM message has a @dfn{type}
 -header that gives the message a (more or less, usually less) rigorous
 -definition.  Common types are @samp{spam}, @samp{spew}, @samp{mmf},
 -@samp{binary}, and @samp{troll}.  To specify this, you have to use
 -@code{(@var{issuer} @var{conditions} @dots{})} elements in the list.
 -Each condition is either a string (which is a regexp that matches types
 -you want to use) or a list on the form @code{(not @var{string})}, where
 -@var{string} is a regexp that matches types you don't want to use.
 -
 -For instance, if you want all NoCeM messages from Chris Lewis except his
 -@samp{troll} messages, you'd say:
 -
 -@lisp
 -("clewis@@ferret.ocunix.on.ca" ".*" (not "troll"))
 -@end lisp
 -
 -On the other hand, if you just want nothing but his @samp{spam} and
 -@samp{spew} messages, you'd say:
 -
 -@lisp
 -("clewis@@ferret.ocunix.on.ca" (not ".*") "spew" "spam")
 -@end lisp
 -
 -The specs are applied left-to-right.
 -
 -
 -@item gnus-nocem-verifyer
 -@vindex gnus-nocem-verifyer
 -@findex gnus-nocem-epg-verify
 -@findex pgg-verify
 -This should be a function for verifying that the NoCeM issuer is who she
 -says she is.  This variable defaults to @code{gnus-nocem-epg-verify} if
 -EasyPG is available, otherwise defaults to @code{pgg-verify}.  The
 -function should return non-@code{nil} if the verification is successful,
 -otherwise (including the case the NoCeM message was not signed) should
 -return @code{nil}.  If this is too slow and you don't care for
 -verification (which may be dangerous), you can set this variable to
 -@code{nil}.
 -
 -Formerly the default was @code{mc-verify}, which is a Mailcrypt
 -function.  While you can still use it, you can change it into
 -@code{gnus-nocem-epg-verify} or @code{pgg-verify} running with GnuPG if
 -you are willing to add the @acronym{PGP} public keys to GnuPG's keyring.
 -
 -@item gnus-nocem-directory
 -@vindex gnus-nocem-directory
 -This is where Gnus will store its NoCeM cache files.  The default is@*
 -@file{~/News/NoCeM/}.
 -
 -@item gnus-nocem-expiry-wait
 -@vindex gnus-nocem-expiry-wait
 -The number of days before removing old NoCeM entries from the cache.
 -The default is 15.  If you make it shorter Gnus will be faster, but you
 -might then see old spam.
 -
 -@item gnus-nocem-check-from
 -@vindex gnus-nocem-check-from
 -Non-@code{nil} means check for valid issuers in message bodies.
 -Otherwise don't bother fetching articles unless their author matches a
 -valid issuer; that is much faster if you are selective about the
 -issuers.
 -
 -@item gnus-nocem-check-article-limit
 -@vindex gnus-nocem-check-article-limit
 -If non-@code{nil}, the maximum number of articles to check in any NoCeM
 -group.  @code{nil} means no restriction.  NoCeM groups can be huge and
 -very slow to process.
 -
 -@end table
 -
 -Using NoCeM could potentially be a memory hog.  If you have many living
 -(i. e., subscribed or unsubscribed groups), your Emacs process will grow
 -big.  If this is a problem, you should kill off all (or most) of your
 -unsubscribed groups (@pxref{Subscription Commands}).
 -
 -
  @node Undo
  @section Undo
  @cindex undo
@@@ -23256,7 -24126,6 +23256,7 @@@ stuff, so Gnus has taken advantage of t
  * Face::                        Display a funkier, teensier colored image.
  * Smileys::                     Show all those happy faces the way they were meant to be shown.
  * Picons::                      How to display pictures of what you're reading.
 +* Gravatars::                   Display the avatar of people you read.
  * XVarious::                    Other XEmacsy Gnusey variables.
  @end menu
  
@@@ -23583,59 -24452,8 +23583,59 @@@ want to add @samp{"unknown"} to this li
  Ordered list of suffixes on picon file names to try.  Defaults to
  @code{("xpm" "gif" "xbm")} minus those not built-in your Emacs.
  
 +@item gnus-picon-inhibit-top-level-domains
 +@vindex gnus-picon-inhibit-top-level-domains
 +If non-@code{nil} (which is the default), don't display picons for
 +things like @samp{.net} and @samp{.de}, which aren't usually very
 +interesting.
 +
 +@end table
 +
 +@node Gravatars
 +@subsection Gravatars
 +
 +@iftex
 +@iflatex
 +\include{gravatars}
 +@end iflatex
 +@end iftex
 +
 +A gravatar is an image registered to an e-mail address.
 +
 +You can submit yours on-line at @uref{http://www.gravatar.com}.
 +
 +The following variables offer control over how things are displayed.
 +
 +@table @code
 +
 +@item gnus-gravatar-size
 +@vindex gnus-gravatar-size
 +The size in pixels of gravatars. Gravatars are always square, so one
 +number for the size is enough.
 +
 +@item gnus-gravatar-properties
 +@vindex gnus-gravatar-properties
 +List of image properties applied to Gravatar images.
 +
 +@item gnus-gravatar-too-ugly
 +@vindex gnus-gravatar-too-ugly
 +Regexp that matches mail addresses or names of people of which avatars
 +should not be displayed, or @code{nil}.  It default to the value of
 +@code{gnus-article-x-face-too-ugly} (@pxref{X-Face}).
 +
  @end table
  
 +If you want to see them in the From field, set:
 +@lisp
 +(setq gnus-treat-from-gravatar 'head)
 +@end lisp
 +
 +If you want to see them in the Cc and To fields, set:
 +
 +@lisp
 +(setq gnus-treat-mail-gravatar 'head)
 +@end lisp
 +
  
  @node XVarious
  @subsection Various XEmacs Variables
@@@ -23971,7 -24789,7 +23971,7 @@@ call the external tools during splittin
  Note that with the nnimap back end, message bodies will not be
  downloaded by default.  You need to set
  @code{nnimap-split-download-body} to @code{t} to do that
 -(@pxref{Splitting in IMAP}).
 +(@pxref{Client-Side IMAP Splitting}).
  
  That is about it.  As some spam is likely to get through anyway, you
  might want to have a nifty function to call when you happen to read
@@@ -24165,14 -24983,12 +24165,14 @@@ yourself, so that the message is proces
  group:
  
  @table @kbd
 -@item M-d
 +@item $
 +@itemx M-d
  @itemx M s x
  @itemx S x
 -@kindex M-d
 -@kindex S x
 -@kindex M s x
 +@kindex $ (Summary)
 +@kindex M-d (Summary)
 +@kindex S x (Summary)
 +@kindex M s x (Summary)
  @findex gnus-summary-mark-as-spam
  @findex gnus-summary-mark-as-spam
  Mark current article as spam, showing it with the @samp{$} mark
@@@ -24255,14 -25071,14 +24255,14 @@@ the value @samp{spam} means @samp{nnima
  @vindex nnimap-split-download-body
  Note for IMAP users: if you use the @code{spam-check-bogofilter},
  @code{spam-check-ifile}, and @code{spam-check-stat} spam back ends,
 -you should also set the variable @code{nnimap-split-download-body}
 -to @code{t}.  These spam back ends are most useful when they can
 -``scan'' the full message body.  By default, the nnimap back end only
 -retrieves the message headers; @code{nnimap-split-download-body} tells
 -it to retrieve the message bodies as well.  We don't set this by
 -default because it will slow @acronym{IMAP} down, and that is not an
 -appropriate decision to make on behalf of the user.  @xref{Splitting
 -in IMAP}.
 +you should also set the variable @code{nnimap-split-download-body} to
 +@code{t}.  These spam back ends are most useful when they can ``scan''
 +the full message body.  By default, the nnimap back end only retrieves
 +the message headers; @code{nnimap-split-download-body} tells it to
 +retrieve the message bodies as well.  We don't set this by default
 +because it will slow @acronym{IMAP} down, and that is not an
 +appropriate decision to make on behalf of the user.  @xref{Client-Side
 +IMAP Splitting}.
  
  You have to specify one or more spam back ends for @code{spam-split}
  to use, by setting the @code{spam-use-*} variables.  @xref{Spam Back
@@@ -24547,8 -25363,8 +24547,8 @@@ From Ted Zlatanov <tzz@@lifelogs.com>
   spam-move-spam-nonspam-groups-only nil
   spam-mark-only-unseen-as-spam t
   spam-mark-ham-unread-before-move-from-spam-group t
 - nnimap-split-rule 'nnimap-split-fancy
   ;; @r{understand what this does before you copy it to your own setup!}
 + ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
   nnimap-split-fancy '(|
                        ;; @r{trace references to parents and put in their group}
                        (: gnus-registry-split-fancy-with-parent)
@@@ -25270,8 -26086,8 +25270,8 @@@ messages stay in @samp{INBOX}
  @example
  (setq spam-use-spamoracle t
        spam-split-group "Junk"
 +      ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
        nnimap-split-inbox '("INBOX")
 -      nnimap-split-rule 'nnimap-split-fancy
        nnimap-split-fancy '(| (: spam-split) "INBOX"))
  @end example
  
@@@ -25796,13 -26612,6 +25796,13 @@@ This keeps discussions in the same grou
  the sender in addition to the Message-ID.  Several strategies are
  available.
  
 +@item
 +Refer to messages by ID
 +
 +Commands like @code{gnus-summary-refer-parent-article} can take
 +advantage of the registry to jump to the referred article, regardless
 +of the group the message is in.
 +
  @item
  Store custom flags and keywords
  
@@@ -25822,7 -26631,6 +25822,7 @@@ of all messages matching a particular s
  @menu
  * Setup::
  * Fancy splitting to parent::
 +* Registry Article Refer Method::
  * Store custom flags and keywords::
  * Store arbitrary data::
  @end menu
@@@ -25899,42 -26707,6 +25899,42 @@@ registry will keep
  The file where the registry will be stored between Gnus sessions.
  @end defvar
  
 +@node Registry Article Refer Method
 +@subsection Fetching by @code{Message-ID} Using the Registry
 +
 +The registry knows how to map each @code{Message-ID} to the group it's
 +in.  This can be leveraged to enhance the ``article refer method'',
 +the thing that tells Gnus how to look up an article given its
 +Message-ID (@pxref{Finding the Parent}).
 +
 +@vindex nnregistry
 +@vindex gnus-refer-article-method
 +
 +The @code{nnregistry} refer method does exactly that.  It has the
 +advantage that an article may be found regardless of the group it's
 +in---provided its @code{Message-ID} is known to the registry.  It can
 +be enabled by augmenting the start-up file with something along these
 +lines:
 +
 +@example
 +;; Keep enough entries to have a good hit rate when referring to an
 +;; article using the registry.  Use long group names so that Gnus
 +;; knows where the article is.
 +(setq gnus-registry-max-entries 2500
 +      gnus-registry-use-long-group-names t)
 +
 +(gnus-registry-initialize)
 +
 +(setq gnus-refer-article-method
 +      '(current
 +        (nnregistry)
 +        (nnweb "gmane" (nnweb-type gmane))))
 +@end example
 +
 +The example above instructs Gnus to first look up the article in the
 +current group, or, alternatively, using the registry, and finally, if
 +all else fails, using Gmane.
 +
  @node Fancy splitting to parent
  @subsection Fancy splitting to parent
  
@@@ -26634,7 -27406,7 +26634,7 @@@ wrong show
  Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
  
  @item
 -Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el,
 +Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el,
  nnwarchive and many, many other things connected with @acronym{MIME} and
  other types of en/decoding, as well as general bug fixing, new
  functionality and stuff.
@@@ -27019,6 -27791,10 +27019,6 @@@ cluttering up the @file{.emacs} file
  You can set the process mark on both groups and articles and perform
  operations on all the marked items (@pxref{Process/Prefix}).
  
 -@item
 -You can grep through a subset of groups and create a group from the
 -results (@pxref{Kibozed Groups}).
 -
  @item
  You can list subsets of groups according to, well, anything
  (@pxref{Listing Groups}).
@@@ -27065,6 -27841,10 +27065,6 @@@ Buttons})
  You can do lots of strange stuff with the Gnus window & frame
  configuration (@pxref{Window Layout}).
  
 -@item
 -You can click on buttons instead of using the keyboard
 -(@pxref{Buttons}).
 -
  @end itemize
  
  
@@@ -27160,7 -27940,8 +27160,7 @@@ news batches, ClariNet briefs collectio
  else (@pxref{Document Groups}).
  
  @item
 -Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets
 -(@pxref{SOUP}).
 +Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets.
  
  @item
  The Gnus cache is much faster.
@@@ -27218,6 -27999,13 +27218,6 @@@ Mail can be re-scanned by a daemonic pr
  @end iflatex
  @end iftex
  
 -@item
 -Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
 -
 -@lisp
 -(setq gnus-use-nocem t)
 -@end lisp
 -
  @item
  Groups can be made permanently visible (@pxref{Listing Groups}).
  
@@@ -27734,7 -28522,9 +27734,7 @@@ The revised Gnus @acronym{FAQ} is inclu
  @acronym{TLS} wrapper shipped with Gnus
  
  @acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
 -@acronym{NNTP} via @file{tls.el} and GNUTLS.  The old
 -@acronym{TLS}/@acronym{SSL} support via (external third party)
 -@file{ssl.el} and OpenSSL still works.
 +@acronym{NNTP} via @file{tls.el} and GNUTLS.
  
  @item
  Improved anti-spam features.
@@@ -28712,9 -29502,11 +28712,9 @@@ Gnus not to use @acronym{NOV}
  As the variables for the other back ends, there are
  @code{nndiary-nov-is-evil}, @code{nndir-nov-is-evil},
  @code{nnfolder-nov-is-evil}, @code{nnimap-nov-is-evil},
 -@code{nnml-nov-is-evil}, @code{nnspool-nov-is-evil}, and
 -@code{nnwarchive-nov-is-evil}.  Note that a non-@code{nil} value for
 -@code{gnus-nov-is-evil} overrides all those variables.@footnote{Although
 -the back ends @code{nnkiboze}, @code{nnslashdot}, @code{nnultimate}, and
 -@code{nnwfm} don't have their own nn*-nov-is-evil.}
 +@code{nnml-nov-is-evil}, and @code{nnspool-nov-is-evil}.  Note that a
 +non-@code{nil} value for @code{gnus-nov-is-evil} overrides all those
 +variables.
  @end table
  
  
@@@ -29312,7 -30104,7 +29312,7 @@@ group and article numbers are when fetc
  on successful article retrieval.
  
  
 -@item (nnchoke-request-group GROUP &optional SERVER FAST)
 +@item (nnchoke-request-group GROUP &optional SERVER FAST INFO)
  
  Get data on @var{group}.  This function also has the side effect of
  making @var{group} the current group.
  If @var{fast}, don't bother to return useful data, just make @var{group}
  the current group.
  
 +If @var{info}, it allows the backend to update the group info
 +structure.
 +
  Here's an example of some result data and a definition of the same:
  
  @example
@@@ -30511,11 -31300,11 +30511,11 @@@ that means
  (setq gnus-read-active-file 'some)
  @end lisp
  
 -On the other hand, if the manual says ``set @code{gnus-nntp-server} to
 -@samp{nntp.ifi.uio.no}'', that means:
 +On the other hand, if the manual says ``set @code{gnus-nntp-server-file} to
 +@samp{/etc/nntpserver}'', that means:
  
  @lisp
 -(setq gnus-nntp-server "nntp.ifi.uio.no")
 +(setq gnus-nntp-server-file "/etc/nntpserver")
  @end lisp
  
  So be careful not to mix up strings (the latter) with symbols (the
@@@ -30548,3 -31337,7 +30548,3 @@@ former).  The manual is unambiguous, bu
  @c mode: texinfo
  @c coding: iso-8859-1
  @c End:
 -
 -@ignore
 -   arch-tag: c9fa47e7-78ca-4681-bda9-9fef45d1c819
 -@end ignore
diff --combined doc/misc/idlwave.texi
index 98da23768ec290781e57e63064cbb7e68a7eab12,02924d7472fbb7456ef15d5506a8bc83d3251ef1..94aeb612df70822f0159d9a8530b2c8e1c894b97
@@@ -22,7 -22,8 +22,7 @@@ Emacs, and interacting with an IDL shel
  This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
  @value{VERSION}.
  
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -38,7 -39,7 +38,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs editing modes
  @direntry
  * IDLWAVE: (idlwave).           Major mode and shell for IDL files.
  @end direntry
@@@ -57,7 -58,6 +57,7 @@@
  
  @ifnottex
  @node Top, Introduction, (dir), (dir)
 +@top IDLWAVE
  
  IDLWAVE is a package which supports editing source code written in the
  Interactive Data Language (IDL), and running IDL as an inferior shell.
@@@ -4295,3 -4295,7 +4295,3 @@@ IDLWAVE is @samp{fsf-compat, xemacs-bas
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: f1d73958-1423-4127-b8aa-f7b953d64492
 -@end ignore
diff --combined doc/misc/mairix-el.texi
index 4235e825fb6541db72f6d20aaada7af35a7240cb,ff5cd922ea968d3b4769d63fa46f1bf11e499402..d64f316cb7bf918da6d10b9fdc8d9cddbe2fda62
@@@ -6,7 -6,7 +6,7 @@@
  @documentencoding ISO-8859-1
  
  @copying
 -Copyright @copyright{} 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -22,7 -22,7 +22,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Mairix: (mairix-el).          Emacs interface to the Mairix mail indexer.
  @end direntry
@@@ -349,3 -349,7 +349,3 @@@ And that's it
  
  
  @bye
 -
 -@ignore
 -   arch-tag: cb81470f-e080-489d-bb67-0d11516b63b9
 -@end ignore
diff --combined doc/misc/message.texi
index 4f0c09f41171ae286c391a88b7c4a720beaea73a,cc1743332613519fb3dc4cc1d53df11311788d22..b28639907edb994605ca7918491b208890e283a5
@@@ -1,7 -1,5 +1,7 @@@
  \input texinfo                  @c -*-texinfo-*-
  
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/message
  @settitle Message Manual
  @synindex fn cp
@@@ -10,7 -8,8 +10,7 @@@
  @copying
  This file documents Message, the Emacs message composition mode.
  
 -Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
 -2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1996-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -26,7 -25,7 +26,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Message: (message).           Mail and news composition mode that
                                    goes with Gnus.
  @end iftex
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Message Manual (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Message Manual
 +@end ifclear
  
  @author by Lars Magne Ingebrigtsen
  @page
@@@ -188,37 -182,6 +188,37 @@@ Addresses that match the @code{message-
  expression (or list of regular expressions) will be removed from the
  @code{Cc} header. A value of @code{nil} means exclude your name only.
  
 +@vindex message-prune-recipient-rules
 +@code{message-prune-recipient-rules} is used to prune the addresses
 +used when doing a wide reply.  It's meant to be used to remove
 +duplicate addresses and the like.  It's a list of lists, where the
 +first element is a regexp to match the address to trigger the rule,
 +and the second is a regexp that will be expanded based on the first,
 +to match addresses to be pruned.
 +
 +It's complicated to explain, but it's easy to use.
 +
 +For instance, if you get an email from @samp{foo@@example.org}, but
 +@samp{foo@@zot.example.org} is also in the @code{Cc} list, then your
 +wide reply will go out to both these addresses, since they are unique.
 +
 +To avoid this, do something like the following:
 +
 +@lisp
 +(setq message-prune-recipient-rules
 +      '(("^\\([^@@]+\\)@@\\(.*\\)" "\\1@@.*[.]\\2")))
 +@end lisp
 +
 +If, for instance, you want all wide replies that involve messages from
 +@samp{cvs@@example.org} to go to that address, and nowhere else (i.e.,
 +remove all other recipients if @samp{cvs@@example.org} is in the
 +recipient list:
 +
 +@lisp
 +(setq message-prune-recipient-rules
 +      '(("cvs@@example.org" ".")))
 +@end lisp
 +
  @vindex message-wide-reply-confirm-recipients
  If @code{message-wide-reply-confirm-recipients} is non-@code{nil} you
  will be asked to confirm that you want to reply to multiple
@@@ -892,10 -855,6 +892,10 @@@ Manual})
  @cindex internationalized domain names
  @cindex non-ascii domain names
  
 +@acronym{IDNA} is a standard way to encode non-@acronym{ASCII} domain
 +names into a readable @acronym{ASCII} string.  The details can be
 +found in RFC 3490.
 +
  Message is a @acronym{IDNA}-compliant posting agent.  The user
  generally doesn't have to do anything to make the @acronym{IDNA}
  happen---Message will encode non-@acronym{ASCII} domain names in @code{From},
@@@ -1100,11 -1059,11 +1100,11 @@@ the passphrase prompt
  @subsection Using PGP/MIME
  
  @acronym{PGP/MIME} requires an external OpenPGP implementation, such
 -as @uref{http://www.gnupg.org/, GNU Privacy Guard}.  Pre-OpenPGP
 -implementations such as PGP 2.x and PGP 5.x are also supported.  One
 +as @uref{http://www.gnupg.org/, GNU Privacy Guard}. Pre-OpenPGP
 +implementations such as PGP 2.x and PGP 5.x are also supported. One
  Emacs interface to the PGP implementations, PGG (@pxref{Top, ,PGG,
 -pgg, PGG Manual}), is included, but Mailcrypt and Florian Weimer's
 -@code{gpg.el} are also supported.  @xref{PGP Compatibility}.
 +pgg, PGG Manual}), is included, but Mailcrypt is also supported.
 +@xref{PGP Compatibility}.
  
  @cindex gpg-agent
  Message internally calls GnuPG (the @command{gpg} command) to perform
@@@ -1159,8 -1118,11 +1159,8 @@@ If you have imported your old PGP 2.x k
  signed and encrypted messages to your fellow PGP 2.x users, you'll
  discover that the receiver cannot understand what you send. One
  solution is to use PGP 2.x instead (i.e., if you use @code{pgg}, set
 -@code{pgg-default-scheme} to @code{pgp}).  If you do want to use
 -GnuPG, you can use a compatibility script called @code{gpg-2comp}
 -available from
 -@uref{http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp/}.  You
 -could also convince your fellow PGP 2.x users to convert to GnuPG.
 +@code{pgg-default-scheme} to @code{pgp}). You could also convince your
 +fellow PGP 2.x users to convert to GnuPG.
  @vindex mml-signencrypt-style-alist
  As a final workaround, you can make the sign and encryption work in
  two steps; separately sign, then encrypt a message.  If you would like
@@@ -1460,10 -1422,8 +1460,10 @@@ Allegedly
  
  @item message-default-headers
  @vindex message-default-headers
 -This string is inserted at the end of the headers in all message
 -buffers.
 +Header lines to be inserted in outgoing messages before you edit the
 +message, so you can edit or delete their lines. If set to a string, it
 +is directly inserted. If set to a function, it is called and its
 +result is inserted.
  
  @item message-subject-re-regexp
  @vindex message-subject-re-regexp
@@@ -1685,8 -1645,7 +1685,8 @@@ the problem will actually occur
  @cindex split large message
  The limitation of messages sent as message/partial.  The lower bound
  of message size in characters, beyond which the message should be sent
 -in several parts.  If it is @code{nil}, the size is unlimited.
 +in several parts.  If it is @code{nil} (which is the default), the
 +size is unlimited.
  
  @end table
  
@@@ -2482,3 -2441,7 +2482,3 @@@ basis of the new @code{Cc} header, exce
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: 16ab76af-a281-4e34-aed6-5624569f7601
 -@end ignore
diff --combined doc/misc/mh-e.texi
index 546f9e629fe29944c3f643d96aadeddab0b82c9e,a0ab0d7a4f999e0942ccf6aaa306276c17670ecf..59da631c6ead1787a79c88d71d4aff5fd71d9b0b
@@@ -24,7 -24,8 +24,7 @@@
  This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
  Manual}, last updated @value{UPDATED}.
  
 -Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007, 2008,
 -  2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1995, 2001-2003, 2005-2011  Free Software Foundation, Inc.
  
  @c This dual license has been agreed upon by the FSF.
  
@@@ -55,7 -56,7 +55,7 @@@ Public License.'
  @end copying
  
  @c Info Directory Entry
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * MH-E: (mh-e).                 Emacs interface to the MH mail system.
  @end direntry
diff --combined doc/misc/newsticker.texi
index fadcf1ea17bb213e802c3fcbedf12d2a2ca6609b,f01fe23a6eb117be8cf94a1bd867e898d81568c0..c7d82245973b17f513a756d5a7c90e6340b963a8
@@@ -13,7 -13,7 +13,7 @@@
  This manual is for Newsticker (version @value{VERSION}, @value{UPDATED}).
  
  @noindent
 -Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2004-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -30,7 -30,7 +30,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Newsticker: (newsticker).     A Newsticker for Emacs.
  @end direntry
@@@ -315,3 -315,7 +315,3 @@@ Byte-compiling newsticker.el is recomme
  @bye
  
  
 -
 -@ignore
 -   arch-tag: 7a4de539-117c-4658-b799-0b9e3d0ccec0
 -@end ignore
diff --combined doc/misc/nxml-mode.texi
index b2003a139d02e2d9a7c67cc9866c0c9f824b3119,9ed8bcf88d05d948b08446e25b7c4705792b520b..276034404132c2a7e0b5867b4aedf14622fe8c61
@@@ -8,7 -8,7 +8,7 @@@
  This manual documents nxml-mode, an Emacs major mode for editing
  XML with RELAX NG support.
  
 -Copyright @copyright{} 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2007-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -31,7 -31,7 +31,7 @@@ license to the document, as described i
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs editing modes
  @direntry
  * nXML Mode: (nxml-mode).       XML editing mode with RELAX NG support.
  @end direntry
diff --combined doc/misc/org.texi
index 7618bad1f733599b62cdbde6aee7d994d829d18b,b42de909d08cde8114422d37c0b81a49f48f7a86..a0ec20c4034dd8c0fe134453675eb98304af37ee
@@@ -1,16 -1,10 +1,16 @@@
 +
  \input texinfo
  @c %**start of header
  @setfilename ../../info/org
  @settitle The Org Manual
  
 -@set VERSION 6.33x
 -@set DATE November 2009
 +@set VERSION 7.4
 +@set DATE December 2010
 +
 +@c Use proper quote and backtick for code sections in PDF output
 +@c Cf. Texinfo manual 14.2
 +@set txicodequoteundirected
 +@set txicodequotebacktick
  
  @c Version and Contact Info
  @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
  @c %**end of header
  @finalout
  
 -@c Macro definitions
 +
 +@c -----------------------------------------------------------------------------
 +
 +@c Macro definitions for commands and keys
 +@c =======================================
 +
 +@c The behavior of the key/command macros will depend on the flag cmdnames
 +@c When set, commands names are shown.  When clear, they are not shown.
 +
 +@set cmdnames
 +
 +@c Below we define the following macros for Org key tables:
 +
 +@c orgkey{key}                        A key item                     
 +@c orgcmd{key,cmd}                    Key with command name
 +@c xorgcmd{key,cmmand}                Key with command name as @itemx
 +@c orgcmdnki{key,cmd}                 Like orgcmd, but do not index the key
 +@c orgcmdtkc{text,key,cmd}            Like orgcmd,special text instead of key
 +@c orgcmdkkc{key1,key2,cmd}           Two keys with one command name, use "or"
 +@c orgcmdkxkc{key1,key2,cmd}          Two keys with one command name, but
 +@c                                    different functions, so format as @itemx
 +@c orgcmdkskc{key1,key2,cmd}          Same as orgcmdkkc, but use "or short"
 +@c xorgcmdkskc{key1,key2,cmd}         Same as previous, but use @itemx
 +@c orgcmdkkcc{key1,key2,cmd1,cmd2}    Two keys and two commands
 +
 +@c a key but no command
 +@c    Inserts:    @item key
 +@macro orgkey{key}
 +@kindex \key\
 +@item @kbd{\key\}
 +@end macro
 +
 +@macro xorgkey{key}
 +@kindex \key\
 +@itemx @kbd{\key\}
 +@end macro
 +
 +@c one key with a command
 +@c   Inserts:    @item KEY               COMMAND
 +@macro orgcmd{key,command}
 +@ifset cmdnames
 +@kindex \key\
 +@findex \command\
  @iftex
 -@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
 +@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key\
 +@item @kbd{\key\}
 +@end ifclear
 +@end macro
 +
 +@c One key with one command, formatted using @itemx
 +@c   Inserts:    @itemx KEY               COMMAND
 +@macro xorgcmd{key,command}
 +@ifset cmdnames
 +@kindex \key\
 +@findex \command\
 +@iftex
 +@itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key\
 +@itemx @kbd{\key\}
 +@end ifclear
 +@end macro
 +
 +@c one key with a command, bit do not index the key
 +@c   Inserts:    @item KEY               COMMAND
 +@macro orgcmdnki{key,command}
 +@ifset cmdnames
 +@findex \command\
 +@iftex
 +@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@item @kbd{\key\}
 +@end ifclear
 +@end macro
 +
 +@c one key with a command, and special text to replace key in item
 +@c   Inserts:    @item TEXT                    COMMAND
 +@macro orgcmdtkc{text,key,command}
 +@ifset cmdnames
 +@kindex \key\
 +@findex \command\
 +@iftex
 +@item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
  @end iftex
 -@macro Ie {}
 -I.e.,
 +@ifnottex
 +@item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key\
 +@item @kbd{\text\}
 +@end ifclear
 +@end macro
 +
 +@c two keys with one command
 +@c   Inserts:    @item KEY1 or KEY2            COMMAND
 +@macro orgcmdkkc{key1,key2,command}
 +@ifset cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@findex \command\
 +@iftex
 +@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
 +@end ifclear
  @end macro
 -@macro ie {}
 -i.e.,
 +
 +@c Two keys with one command name, but different functions, so format as
 +@c @itemx
 +@c   Inserts:    @item KEY1
 +@c               @itemx KEY2                COMMAND
 +@macro orgcmdkxkc{key1,key2,command}
 +@ifset cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@findex \command\
 +@iftex
 +@item @kbd{\key1\}
 +@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key1\}
 +@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@item @kbd{\key1\}
 +@itemx @kbd{\key2\}
 +@end ifclear
 +@end macro
 +
 +@c Same as previous, but use "or short"
 +@c   Inserts:    @item KEY1 or short KEY2            COMMAND
 +@macro orgcmdkskc{key1,key2,command}
 +@ifset cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@findex \command\
 +@iftex
 +@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
 +@end ifclear
  @end macro
 -@macro Eg {}
 -E.g.,
 +
 +@c Same as previous, but use @itemx
 +@c   Inserts:    @itemx KEY1 or short KEY2            COMMAND
 +@macro xorgcmdkskc{key1,key2,command}
 +@ifset cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@findex \command\
 +@iftex
 +@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
 +@end iftex
 +@ifnottex
 +@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
 +@end ifclear
  @end macro
 -@macro eg {}
 -e.g.,
 +
 +@c two keys with two commands
 +@c   Inserts:    @item KEY1                        COMMAND1
 +@c               @itemx KEY2                       COMMAND2
 +@macro orgcmdkkcc{key1,key2,command1,command2}
 +@ifset cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@findex \command1\
 +@findex \command2\
 +@iftex
 +@item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
 +@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
 +@end iftex
 +@ifnottex
 +@item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
 +@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
 +@end ifnottex
 +@end ifset
 +@ifclear cmdnames
 +@kindex \key1\
 +@kindex \key2\
 +@item @kbd{\key1\}
 +@itemx @kbd{\key2\}
 +@end ifclear
  @end macro
 +@c -----------------------------------------------------------------------------
 +
 +@iftex
 +@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
 +@end iftex
  
  @c Subheadings inside a table.
  @macro tsubheading{text}
  @copying
  This manual is for Org version @value{VERSION}.
  
 -Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation
 +Copyright @copyright{} 2004-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -286,9 -66,9 +286,9 @@@ license to the document, as described i
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs editing modes
  @direntry
 -* Org Mode: (org).              Outline-based notes management and organizer.
 +* Org Mode: (org).      Outline-based notes management and organizer
  @end direntry
  
  @titlepage
  
  @subtitle Release @value{VERSION}
  @author by Carsten Dominik
 +with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
  
  @c The following two commands start the copyright page.
  @page
  * Markup::                      Prepare text for rich export
  * Exporting::                   Sharing and publishing of notes
  * Publishing::                  Create a web site of linked Org files
 +* Working With Source Code::    Export, evaluate, and tangle code blocks
  * Miscellaneous::               All the rest which did not fit elsewhere
  * Hacking::                     How to hack your way around
  * MobileOrg::                   Viewing and capture on a mobile device
  * History and Acknowledgments::  How Org came into being
  * Main Index::                  An index of Org's concepts and features
  * Key Index::                   Key bindings and where they are described
 +* Command and Function Index::  Command names and some internal functions
  * Variable Index::              Variables mentioned in the manual
  
  @detailmenu
@@@ -349,7 -126,7 +349,7 @@@ Introductio
  * Feedback::                    Bug reports, ideas, patches etc.
  * Conventions::                 Type-setting conventions in the manual
  
 -Document Structure
 +Document structure
  
  * Outlines::                    Org is based on Outline mode
  * Headlines::                   How to typeset Org tree headlines
@@@ -398,7 -175,7 +398,7 @@@ Internal link
  
  * Radio targets::               Make targets trigger links in plain text
  
 -TODO Items
 +TODO items
  
  * TODO basics::                 Marking and displaying TODO entries
  * TODO extensions::             Workflow and assignments
@@@ -429,10 -206,10 +429,10 @@@ Tag
  * Setting tags::                How to assign tags to a headline
  * Tag searches::                Searching for combinations of tags
  
 -Properties and Columns
 +Properties and columns
  
  * Property syntax::             How properties are spelled out
 -* Special properties::          Access to other Org mode features
 +* Special properties::          Access to other Org-mode features
  * Property searches::           Matching property values
  * Property inheritance::        Passing values down the tree
  * Column view::                 Tabular viewing and editing
@@@ -449,19 -226,19 +449,19 @@@ Defining column
  * Scope of column definitions::  Where defined, where valid?
  * Column attributes::           Appearance and content of a column
  
 -Dates and Times
 +Dates and times
  
  * Timestamps::                  Assigning a time to a tree entry
  * Creating timestamps::         Commands which insert timestamps
  * Deadlines and scheduling::    Planning your work
  * Clocking work time::          Tracking how long you spend on a task
 -* Resolving idle time::         Resolving time if you've been idle
  * Effort estimates::            Planning work effort in advance
  * Relative timer::              Notes with a running timer
 +* Countdown timer::             Starting a countdown timer for a task
  
  Creating timestamps
  
 -* The date/time prompt::        How Org mode helps you entering date and time
 +* The date/time prompt::        How Org-mode helps you entering date and time
  * Custom time format::          Making dates look different
  
  Deadlines and scheduling
  * Inserting deadline/schedule::  Planning items
  * Repeated tasks::              Items that show up again and again
  
 +Clocking work time
 +
 +* Clocking commands::           Starting and stopping a clock
 +* The clock table::             Detailed reports
 +* Resolving idle time::         Resolving time when you've been idle
 +
  Capture - Refile - Archive
  
 -* Remember::                    Capture new tasks/ideas with little interruption
 -* Attachments::                 Add files to tasks.
 +* Capture::                     Capturing new stuff
 +* Attachments::                 Add files to tasks
  * RSS Feeds::                   Getting input from RSS feeds
  * Protocols::                   External (e.g. Browser) access to Emacs and Org
  * Refiling notes::              Moving a tree from one place to another
  * Archiving::                   What to do with finished projects
  
 -Remember
 +Capture
 +
 +* Setting up capture::          Where notes will be stored
 +* Using capture::               Commands to invoke and terminate capture
 +* Capture templates::           Define the outline of different note types
  
 -* Setting up Remember for Org::  Some code for .emacs to get things going
 -* Remember templates::          Define the outline of different note types
 -* Storing notes::               Directly get the note to where it belongs
 +Capture templates
 +
 +* Template elements::           What is needed for a complete template entry
 +* Template expansion::          Filling in information about time and context
  
  Archiving
  
  * Moving subtrees::             Moving a tree to an archive file
 -* Internal archiving::          Switch off a tree but keep i in the file
 +* Internal archiving::          Switch off a tree but keep it in the file
  
 -Agenda Views
 +Agenda views
  
  * Agenda files::                Files being searched for agenda information
  * Agenda dispatcher::           Keyboard access to agenda views
@@@ -538,7 -304,6 +538,7 @@@ Markup for rich expor
  * Images and tables::           Tables and Images will be included
  * Literal examples::            Source code examples with special formatting
  * Include files::               Include additional files into a document
 +* Index entries::               Making an index
  * Macro replacement::           Use macros to create complex output
  * Embedded LaTeX::              LaTeX can be freely used inside Org documents
  
@@@ -555,7 -320,7 +555,7 @@@ Structural markup element
  * Horizontal rules::            Make a line
  * Comment lines::               What will *not* be exported
  
 -Embedded La@TeX{}
 +Embedded @LaTeX{}
  
  * Special symbols::             Greek letters and other symbols
  * Subscripts and superscripts::  Simple syntax for raising/lowering text
@@@ -568,11 -333,10 +568,11 @@@ Exportin
  * Selective export::            Using tags to select and exclude trees
  * Export options::              Per-file export settings
  * The export dispatcher::       How to access exporter commands
 -* ASCII export::                Exporting to plain ASCII
 +* ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
  * HTML export::                 Exporting to HTML
 -* LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
 +* LaTeX and PDF export::        Exporting to @LaTeX{}, and processing to PDF
  * DocBook export::              Exporting to DocBook
 +* TaskJuggler export::          Exporting to TaskJuggler
  * Freemind export::             Exporting to Freemind mind maps
  * XOXO export::                 Exporting to XOXO
  * iCalendar export::            Exporting in iCalendar format
  HTML export
  
  * HTML Export commands::        How to invoke HTML export
 -* Quoting HTML tags::           Using direct HTML in Org mode
 +* Quoting HTML tags::           Using direct HTML in Org-mode
  * Links in HTML export::        How links will be interpreted and formatted
  * Tables in HTML export::       How to modify the formatting of tables
  * Images in HTML export::       How to insert figures into HTML output
 +* Math formatting in HTML export::  Beautiful math also on the web
  * Text areas in HTML export::   An alternative way to show an example
  * CSS support::                 Changing the appearance of the output
 -* Javascript support::          Info and Folding in a web browser
 +* JavaScript support::          Info and Folding in a web browser
  
 -La@TeX{} and PDF export
 +@LaTeX{} and PDF export
  
  * LaTeX/PDF export commands::   Which key invokes which commands
 -* Quoting LaTeX code::          Incorporating literal La@TeX{} code
 -* Sectioning structure::        Changing sectioning in La@TeX{} output
 -* Tables in LaTeX export::      Options for exporting tables to La@TeX{}
 -* Images in LaTeX export::      How to insert figures into La@TeX{} output
 +* Header and sectioning::       Setting up the export file structure
 +* Quoting LaTeX code::          Incorporating literal @LaTeX{} code
 +* Tables in LaTeX export::      Options for exporting tables to @LaTeX{}
 +* Images in LaTeX export::      How to insert figures into @LaTeX{} output
 +* Beamer class export::         Turning the file into a presentation
  
  DocBook export
  
@@@ -622,72 -384,17 +622,72 @@@ Configuratio
  * Publishing action::           Setting the function doing the publishing
  * Publishing options::          Tweaking HTML export
  * Publishing links::            Which links keep working after publishing?
 -* Project page index::          Publishing a list of project files
 +* Sitemap::                     Generating a list of all pages
 +* Generating an index::         An index that reaches across pages
  
  Sample configuration
  
  * Simple example::              One-component publishing
  * Complex example::             A multi-component publishing example
  
 +Working with source code
 +
 +* Structure of code blocks::    Code block syntax described
 +* Editing source code::         Language major-mode editing
 +* Exporting code blocks::       Export contents and/or results
 +* Extracting source code::      Create pure source code files
 +* Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
 +* Library of Babel::            Use and contribute to a library of useful code blocks
 +* Languages::                   List of supported code block languages
 +* Header arguments::            Configure code block functionality
 +* Results of evaluation::       How evaluation results are handled
 +* Noweb reference syntax::      Literate programming in Org-mode
 +* Key bindings and useful functions::  Work quickly with code blocks
 +* Batch execution::             Call functions from the command line
 +
 +Header arguments
 +
 +* Using header arguments::      Different ways to set header arguments
 +* Specific header arguments::   List of header arguments
 +
 +Using header arguments
 +
 +* System-wide header arguments::  Set global default values
 +* Language-specific header arguments::  Set default values by language
 +* Buffer-wide header arguments::  Set default values for a specific buffer
 +* Header arguments in Org-mode properties::  Set default values for a buffer or heading
 +* Code block specific header arguments::  The most common way to set values
 +* Header arguments in function calls::  The most specific level
 +
 +Specific header arguments
 +
 +* var::                         Pass arguments to code blocks
 +* results::                     Specify the type of results and how they will
 +                                be collected and handled
 +* file::                        Specify a path for file output
 +* dir::                         Specify the default (possibly remote)
 +                                directory for code block execution
 +* exports::                     Export code and/or results
 +* tangle::                      Toggle tangling and specify file name
 +* comments::                    Toggle insertion of comments in tangled
 +                                code files
 +* no-expand::                   Turn off variable assignment and noweb
 +                                expansion during tangling
 +* session::                     Preserve the state of code evaluation
 +* noweb::                       Toggle expansion of noweb references
 +* cache::                       Avoid re-evaluating unchanged code blocks
 +* hlines::                      Handle horizontal lines in tables
 +* colnames::                    Handle column names in tables
 +* rownames::                    Handle row names in tables
 +* shebang::                     Make tangled files executable
 +* eval::                        Limit evaluation of specific code blocks
 +
  Miscellaneous
  
  * Completion::                  M-TAB knows what you need
 -* Speed keys::                  Electic commands at the beginning of a headline
 +* Easy Templates::              Quick insertion of structural elements
 +* Speed keys::                  Electric commands at the beginning of a headline
 +* Code evaluation security::    Org mode files evaluate inline code
  * Customization::               Adapting Org to your taste
  * In-buffer settings::          Overview of the #+KEYWORDS
  * The very busy C-c C-c key::   When in doubt, press C-c C-c
@@@ -706,7 -413,7 +706,7 @@@ Hackin
  * Add-on packages::             Available extensions
  * Adding hyperlink types::      New custom link types
  * Context-sensitive commands::  How to add functionality to such commands
 -* Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
 +* Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
  * Dynamic blocks::              Automatically filled blocks
  * Special agenda views::        Customized views
  * Extracting agenda information::  Postprocessing of agenda information
@@@ -763,39 -470,40 +763,39 @@@ structured ASCII file, as HTML, or (TOD
  iCalendar file.  It can also serve as a publishing tool for a set of
  linked web pages.
  
 -An important design aspect that distinguishes Org from, for example,
 -Planner/Muse is that it encourages you to store every piece of information
 -only once.  In Planner, you have project pages, day pages and possibly
 -other files, duplicating some information such as tasks.  In Org,
 -you only have notes files.  In your notes you mark entries as tasks, and
 -label them with tags and timestamps.  All necessary lists, like a
 -schedule for the day, the agenda for a meeting, tasks lists selected by
 -tags, etc., are created dynamically when you need them.
 +As a project planning environment, Org works by adding metadata to outline
 +nodes.  Based on this data, specific entries can be extracted in queries and
 +create dynamic @i{agenda views}.
 +
 +Org mode contains the Org Babel environment which allows you to work with
 +embedded source code blocks in a file, to facilitate code evaluation,
 +documentation, and tangling.
 +
 +Org'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 arbitrary file types, for example in @LaTeX{}.  The structure
 +editing and list creation capabilities can be used outside Org with
 +the minor Orgstruct mode.
  
  Org 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 is a toolbox and can be used in different ways, for
 -example as:
 +it.  Org is a toolbox and can be used in different ways and for different
 +ends, for example:
  
  @example
  @r{@bullet{} an outline extension with visibility cycling and structure editing}
  @r{@bullet{} an ASCII system and table editor for taking structured notes}
 -@r{@bullet{} an ASCII table editor with spreadsheet-like capabilities}
  @r{@bullet{} a TODO list editor}
  @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
  @pindex GTD, Getting Things Done
 -@r{@bullet{} an environment to implement David Allen's GTD system}
 -@r{@bullet{} a basic database application}
 -@r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
 +@r{@bullet{} an environment in which to implement David Allen's GTD system}
 +@r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
  @r{@bullet{} a publishing tool to create a set of interlinked webpages}
 +@r{@bullet{} an environment for literate programming}
  @end example
  
 -Org'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 arbitrary file types, for example in La@TeX{}.  The structure
 -editing and list creation capabilities can be used outside Org with
 -the minor Orgstruct mode.
  
  @cindex FAQ
  There is a website for Org which provides links to the newest
@@@ -837,6 -545,18 +837,6 @@@ step for this directory
  (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
  @end example
  
 -@sp 2
 -@cartouche
 -XEmacs users now need to install the file @file{noutline.el} from
 -the @file{xemacs} sub-directory of the Org distribution.  Use the
 -command:
 -
 -@example
 -     make install-noutline
 -@end example
 -@end cartouche
 -@sp 2
 -
  @noindent Now byte-compile the Lisp files with the shell command:
  
  @example
@@@ -880,6 -600,14 +880,6 @@@ Do not forget to activate Org as descri
  @cindex global key bindings
  @cindex key bindings, global
  
 -@iftex
 -@b{Important:} @i{If you use copy-and-paste to copy Lisp code from the
 -PDF documentation as viewed by some PDF viewers to your @file{.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 three lines
  define @emph{global} keys for the commands @command{org-store-link},
  @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
@@@ -902,9 -630,9 +902,9 @@@ active.  You can do this with either on
  (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
  @end lisp
  
 -@cindex Org mode, turning on
 +@cindex Org-mode, turning on
  With this setup, all files with extension @samp{.org} will be put
 -into Org mode.  As an alternative, make the first line of a file look
 +into Org-mode.  As an alternative, make the first line of a file look
  like this:
  
  @example
@@@ -912,7 -640,7 +912,7 @@@ MY PROJECTS    -*- mode: org; -*
  @end example
  
  @vindex org-insert-mode-line-in-empty-file
 -@noindent which will select Org mode for this buffer no matter what
 +@noindent which will select Org-mode for this buffer no matter what
  the file's name is.  See also the variable
  @code{org-insert-mode-line-in-empty-file}.
  
@@@ -937,15 -665,10 +937,15 @@@ active region by using the mouse to sel
  If you find problems with Org, or if you have questions, remarks, or ideas
  about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
  If you are not a member of the mailing list, your mail will be passed to the
 -list after a moderator has approved it.
 -
 -For bug reports, please provide as much information as possible, including
 -the version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
 +list after a moderator has approved it@footnote{Please consider subscribing
 +to the mailing list, in order to minimize the work the mailing list
 +moderators have to do.}.
 +
 +For bug reports, please first try to reproduce the bug with the latest
 +version of Org available---if you are running an outdated version, it is
 +quite possible that the bug has been fixed already.  If the bug persists,
 +prepare a report and provide as much information as possible, including the
 +version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
  (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
  @file{.emacs}.  The easiest way to do this is to use the command
  @example
@@@ -964,7 -687,7 +964,7 @@@ about
  @item What did you expect to happen?
  @item What happened instead?
  @end enumerate
 -@noindent Thank you for helping to improve this mode.
 +@noindent Thank you for helping to improve this program.
  
  @subsubheading How to create a useful backtrace
  
@@@ -1019,20 -742,8 +1019,20 @@@ User-defined properties are capitalized
  special meaning are written with all capitals.
  @end table
  
 +The manual lists both the keys and the corresponding commands for accessing
 +functionality.  Org mode often uses the same key for different functions,
 +depending on context.  The command that is bound to such keys has a generic
 +name, like @code{org-metaright}.  In the manual we will, wherever possible,
 +give the function that is internally called by the generic command.  For
 +example, in the chapter on document structure, @kbd{M-@key{right}} will be
 +listed to call @code{org-do-demote}, while in the chapter on tables, it will
 +be listed to call org-table-move-column-right.
 +
 +If you prefer, you can compile the manual without the command names by
 +unsetting the flag @code{cmdnames} in @file{org.texi}.
 +
  @node Document Structure, Tables, Introduction, Top
 -@chapter Document Structure
 +@chapter Document structure
  @cindex document structure
  @cindex structure of document
  
@@@ -1072,14 -783,11 +1072,14 @@@ command, @command{org-cycle}, which is 
  @cindex headlines
  @cindex outline tree
  @vindex org-special-ctrl-a/e
 +@vindex org-special-ctrl-k
 +@vindex org-ctrl-k-protect-subtree
  
 -Headlines define the structure of an outline tree.  The headlines in
 -Org 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:
 +Headlines define the structure of an outline tree.  The headlines in Org
 +start with one or more stars, on the left margin@footnote{See the variables
 +@code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
 +@code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
 +@kbd{C-e}, and @kbd{C-k} in headlines.}.  For example:
  
  @example
  * Top level headline
@@@ -1120,8 -828,9 +1120,8 @@@ Org uses just two commands, bound to @k
  @cindex folded, subtree visibility state
  @cindex children, subtree visibility state
  @cindex subtree, subtree visibility state
 -@table @kbd
 -@kindex @key{TAB}
 -@item @key{TAB}
 +@table @asis
 +@orgcmd{@key{TAB},org-cycle}
  @emph{Subtree cycling}: Rotate current subtree among the states
  
  @example
@@@ -1143,7 -852,8 +1143,7 @@@ argument (@kbd{C-u @key{TAB}}), global 
  @cindex overview, global visibility state
  @cindex contents, global visibility state
  @cindex show all, global visibility state
 -@kindex S-@key{TAB}
 -@item S-@key{TAB}
 +@orgcmd{S-@key{TAB},org-global-cycle}
  @itemx C-u @key{TAB}
  @emph{Global cycling}: Rotate the entire buffer among the states
  
@@@ -1157,18 -867,18 +1157,18 @@@ CONTENTS view up to headlines of level 
  tables, @kbd{S-@key{TAB}} jumps to the previous field.
  
  @cindex show all, command
 -@kindex C-u C-u C-u @key{TAB}
 -@item C-u C-u C-u @key{TAB}
 +@orgcmd{C-u C-u C-u @key{TAB},show-all}
  Show all, including drawers.
 -@kindex C-c C-r
 -@item C-c C-r
 +@orgcmd{C-c C-r,org-reveal}
  Reveal context around point, showing the current entry, the following heading
  and the hierarchy above.  Useful for working near a location that has been
  exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
  (@pxref{Agenda commands}).  With a prefix argument show, on each
 -level, all sibling headings.
 -@kindex C-c C-x b
 -@item C-c C-x b
 +level, all sibling headings.  With double prefix arg, also show the entire
 +subtree of the parent.
 +@orgcmd{C-c C-k,show-branches}
 +Expose all the headings of the subtree, CONTENT view for just one subtree.
 +@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
  Show the current subtree in an indirect buffer@footnote{The indirect
  buffer
  @ifinfo
@@@ -1210,8 -920,9 +1210,8 @@@ Furthermore, any entries with a @samp{V
  and Columns}) will get their visibility adapted accordingly.  Allowed values
  for this property are @code{folded}, @code{children}, @code{content}, and
  @code{all}.
 -@table @kbd
 -@kindex C-u C-u @key{TAB}
 -@item C-u C-u @key{TAB}
 +@table @asis
 +@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
  Switch back to the startup visibility of the buffer, i.e. whatever is
  requested by startup options and @samp{VISIBILITY} properties in individual
  entries.
  @cindex headline navigation
  The following commands jump to other headlines in the buffer.
  
 -@table @kbd
 -@kindex C-c C-n
 -@item C-c C-n
 +@table @asis
 +@orgcmd{C-c C-n,outline-next-visible-heading}
  Next heading.
 -@kindex C-c C-p
 -@item C-c C-p
 +@orgcmd{C-c C-p,outline-previous-visible-heading}
  Previous heading.
 -@kindex C-c C-f
 -@item C-c C-f
 +@orgcmd{C-c C-f,org-forward-same-level}
  Next heading same level.
 -@kindex C-c C-b
 -@item C-c C-b
 +@orgcmd{C-c C-b,org-backward-same-level}
  Previous heading same level.
 -@kindex C-c C-u
 -@item C-c C-u
 +@orgcmd{C-c C-u,outline-up-heading}
  Backward to higher level heading.
 -@kindex C-c C-j
 -@item C-c C-j
 +@orgcmd{C-c C-j,org-goto}
  Jump to a different place without changing the current outline
  visibility.  Shows the document structure in a temporary buffer, where
  you can use the following keys to find your destination:
@@@ -1270,8 -987,9 +1270,8 @@@ See also the variable @code{org-goto-in
  @cindex sorting, of subtrees
  @cindex subtrees, cut and paste
  
 -@table @kbd
 -@kindex M-@key{RET}
 -@item M-@key{RET}
 +@table @asis
 +@orgcmd{M-@key{RET},org-insert-heading}
  @vindex org-M-RET-may-split-line
  Insert new heading with same level as current.  If the cursor is in a
  plain list item, a new item is created (@pxref{Plain lists}).  To force
@@@ -1286,48 -1004,62 +1286,48 @@@ the content of that line is made the ne
  used at the end of a folded subtree (i.e. behind the ellipses at the end
  of a headline), then a headline like the current one will be inserted
  after the end of the subtree.
 -@kindex C-@key{RET}
 -@item C-@key{RET}
 +@orgcmd{C-@key{RET},org-insert-heading-respect-content}
  Just like @kbd{M-@key{RET}}, except when adding a new heading below the
  current heading, the new heading is placed after the body instead of before
  it.  This command works from anywhere in the entry.
 -@kindex M-S-@key{RET}
 -@item M-S-@key{RET}
 +@orgcmd{M-S-@key{RET},org-insert-todo-heading}
  @vindex org-treat-insert-todo-heading-as-state-change
  Insert new TODO entry with same level as current heading.  See also the
  variable @code{org-treat-insert-todo-heading-as-state-change}.
 -@kindex C-S-@key{RET}
 -@item C-S-@key{RET}
 +@orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
  Insert new TODO entry with same level as current heading.  Like
  @kbd{C-@key{RET}}, the new headline will be inserted after the current
  subtree.
 -@kindex @key{TAB}
 -@item @key{TAB} @r{in new, empty entry}
 +@orgcmd{@key{TAB},org-cycle}
  In a new entry with no text yet, the first @key{TAB} demotes the entry to
  become a child of the previous one.  The next @key{TAB} makes it a parent,
  and so on, all the way to top level.  Yet another @key{TAB}, and you are back
  to the initial level.
 -@kindex M-@key{left}
 -@item M-@key{left}
 +@orgcmd{M-@key{left},org-do-promote}
  Promote current heading by one level.
 -@kindex M-@key{right}
 -@item M-@key{right}
 +@orgcmd{M-@key{right},org-do-demote}
  Demote current heading by one level.
 -@kindex M-S-@key{left}
 -@item M-S-@key{left}
 +@orgcmd{M-S-@key{left},org-promote-subtree}
  Promote the current subtree by one level.
 -@kindex M-S-@key{right}
 -@item M-S-@key{right}
 +@orgcmd{M-S-@key{right},org-demote-subtree}
  Demote the current subtree by one level.
 -@kindex M-S-@key{up}
 -@item M-S-@key{up}
 +@orgcmd{M-S-@key{up},org-move-subtree-up}
  Move subtree up (swap with previous subtree of same
  level).
 -@kindex M-S-@key{down}
 -@item M-S-@key{down}
 +@orgcmd{M-S-@key{down},org-move-subtree-down}
  Move subtree down (swap with next subtree of same level).
 -@kindex C-c C-x C-w
 -@item C-c C-x C-w
 +@orgcmd{C-c C-x C-w,org-cut-subtree}
  Kill subtree, i.e. remove it from buffer but save in kill ring.
  With a numeric prefix argument N, kill N sequential subtrees.
 -@kindex C-c C-x M-w
 -@item C-c C-x M-w
 +@orgcmd{C-c C-x M-w,org-copy-subtree}
  Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
  sequential subtrees.
 -@kindex C-c C-x C-y
 -@item C-c C-x C-y
 +@orgcmd{C-c C-x C-y,org-paste-subtree}
  Yank subtree from kill ring.  This does modify the level of the subtree to
  make sure the tree fits in nicely at the yank position.  The yank level can
  also be specified with a numeric prefix argument, or by yanking after a
  headline marker like @samp{****}.
 -@kindex C-y
 -@item C-y
 +@orgcmd{C-y,org-yank}
  @vindex org-yank-adjusted-subtrees
  @vindex org-yank-folded-subtrees
  Depending on the variables @code{org-yank-adjusted-subtrees} and
@@@ -1340,16 -1072,19 +1340,16 @@@ previously visible.  Any prefix argumen
  force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
  yank, it will yank previous kill items plainly, without adjustment and
  folding.
 -@kindex C-c C-x c
 -@item C-c C-x c
 +@orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
  Clone a subtree by making a number of sibling copies of it.  You will be
  prompted for the number of copies to make, and you can also specify if any
  timestamps in the entry should be shifted.  This can be useful, for example,
  to create a number of tasks related to a series of lectures to prepare.  For
  more details, see the docstring of the command
  @code{org-clone-subtree-with-time-shift}.
 -@kindex C-c C-w
 -@item C-c C-w
 +@orgcmd{C-c C-w,org-refile}
  Refile entry or region to a different location.  @xref{Refiling notes}.
 -@kindex C-c ^
 -@item C-c ^
 +@orgcmd{C-c ^,org-sort-entries-or-items}
  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
@@@ -1360,11 -1095,14 +1360,11 @@@ of a property.  Reverse sorting is poss
  your own function to extract the sorting key.  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.
 -@kindex C-x n s
 -@item C-x n s
 +@orgcmd{C-x n s,org-narrow-to-subtree}
  Narrow buffer to current subtree.
 -@kindex C-x n w
 -@item C-x n w
 +@orgcmd{C-x n w,widen}
  Widen buffer to remove narrowing.
 -@kindex C-c *
 -@item C-c *
 +@orgcmd{C-c *,org-toggle-heading}
  Turn a normal line or plain list item into a headline (so that it becomes a
  subheading at its location).  Also turn a headline into a normal line by
  removing the stars.  If there is an active region, turn all lines in the
@@@ -1396,7 -1134,7 +1396,7 @@@ functionality
  @vindex org-show-following-heading
  @vindex org-show-siblings
  @vindex org-show-entry-below
 -An important feature of Org mode is the ability to construct @emph{sparse
 +An important feature of Org-mode is the ability to construct @emph{sparse
  trees} for selected information in an outline tree, so that the entire
  document is folded as much as possible, but the selected information is made
  visible along with the headline structure above it@footnote{See also the
@@@ -1405,13 -1143,15 +1405,13 @@@ variables @code{org-show-hierarchy-abov
  control on how much context is shown around each match.}.  Just try it out
  and you will see immediately how it works.
  
 -Org mode contains several commands creating such trees, all these
 +Org-mode contains several commands creating such trees, all these
  commands can be accessed through a dispatcher:
  
 -@table @kbd
 -@kindex C-c /
 -@item C-c /
 +@table @asis
 +@orgcmd{C-c /,org-sparse-tree}
  This prompts for an extra key to select a sparse-tree creating command.
 -@kindex C-c / r
 -@item C-c / r
 +@orgcmd{C-c / r,org-occur}
  @vindex org-remove-highlights-with-change
  Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
  the match is in a headline, the headline is made visible.  If the match is in
@@@ -1462,9 -1202,9 +1462,9 @@@ part of the document and print the resu
  @cindex ordered lists
  
  Within an entry of the outline tree, hand-formatted lists can provide
 -additional structure.  They also provide a way to create lists of
 -checkboxes (@pxref{Checkboxes}).  Org supports editing such lists,
 -and the HTML exporter (@pxref{Exporting}) parses and formats them.
 +additional structure.  They also provide a way to create lists of checkboxes
 +(@pxref{Checkboxes}).  Org supports editing such lists, and every exporter
 +(@pxref{Exporting}) can parse and format them.
  
  Org knows ordered lists, unordered lists, and description lists.
  @itemize @bullet
@@@ -1477,39 -1217,24 +1477,39 @@@ visually indistinguishable from true he
  @samp{*} is supported, it may be better to not use it for plain list items.}
  as bullets.
  @item
 +@vindex org-plain-list-ordered-item-terminator
  @emph{Ordered} list items start with a numeral followed by either a period or
 -a right parenthesis, such as @samp{1.} or @samp{1)}.
 +a right parenthesis@footnote{You can filter out any of them by configuring
 +@code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
 +@samp{1)}.  If you want a list to start with a different value (e.g. 20), start
 +the text of the item with @code{[@@20]}@footnote{If there's a checkbox in the
 +item, the cookie must be put @emph{before} the checkbox.}.  Those constructs
 +can be used in any item of the list in order to enforce a particular
 +numbering.
  @item
  @emph{Description} list items are unordered list items, and contain the
  separator @samp{ :: } to separate the description @emph{term} from the
  description.
  @end itemize
  
 -@vindex org-empty-line-terminates-plain-lists
  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.  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:
 +list.
 +
 +@vindex org-list-ending-method
 +@vindex org-list-end-regexp
 +@vindex org-empty-line-terminates-plain-lists
 +Two methods@footnote{To disable either of them, configure
 +@code{org-list-ending-method}.} are provided to terminate lists.  A list ends
 +before the next line that is indented like the bullet/number or less, or it
 +ends before two blank lines@footnote{See also
 +@code{org-empty-line-terminates-plain-lists}.}.  In both cases, all levels of
 +the list are closed@footnote{So you cannot have a sublist, some text and then
 +another sublist while still in the same top-level list item.  This used to be
 +possible, but it was only supported in the HTML exporter and difficult to
 +manage with automatic indentation.}.  For finer control, you can end lists
 +with any pattern set in @code{org-list-end-regexp}.  Here is an example:
  
  @example
  @group
        + this was already my favorite scene in the book
        + I really like Miranda Otto.
     3. Peter Jackson being shot by Legolas
 -       - on DVD only
        He makes a really funny face when it happens.
 +      - on DVD only
     But in the end, no individual scenes matter but the film as a whole.
     Important actors in this film are:
     - @b{Elijah Wood} :: He plays Frodo
@@@ -1536,54 -1261,46 +1536,54 @@@ XEmacs, you should use Kyle E. Jones' @
  put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
  properly (@pxref{Exporting}).  Since indentation is what governs the
  structure of these lists, many structural constructs like @code{#+BEGIN_...}
 -blocks can be indented to signal that they should be part of a list item.
 +blocks can be indented to signal that they should be considered as a list
 +item.
  
 -The following commands act on items when the cursor is in the first line
 -of an item (the line with the bullet or number).
 +@vindex org-list-demote-modify-bullet
 +If you find that using a different bullet for a sub-list (than that used for
 +the current list-level) improves readability, customize the variable
 +@code{org-list-demote-modify-bullet}.
  
 -@table @kbd
 -@kindex @key{TAB}
 -@item @key{TAB}
 +@vindex org-list-automatic-rules
 +The following commands act on items when the cursor is in the first line of
 +an item (the line with the bullet or number).  Some of them imply the
 +application of automatic rules to keep list structure intact.  If some of
 +these actions get in your way, configure @code{org-list-automatic-rules}
 +to disable them individually.
 +
 +@table @asis
 +@orgcmd{@key{TAB},org-cycle}
  @vindex org-cycle-include-plain-lists
  Items can be folded just like headline levels.  Normally this works only if
  the cursor is on a plain list item.  For more details, see the variable
 -@code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
 -will be treated like low-level.  The level of an item is then given by the
 +@code{org-cycle-include-plain-lists}.  If this variable is set to
 +@code{integrate}, plain list items will be treated like low-level
 +headlines.  The level of an item is then 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 current line in a heuristic way.
 -@kindex M-@key{RET}
 -@item M-@key{RET}
 +@orgcmd{M-@key{RET},org-insert-heading}
  @vindex org-M-RET-may-split-line
 +@vindex org-list-automatic-rules
  Insert new item at current level.  With a prefix argument, force a new
  heading (@pxref{Structure editing}).  If this command is used in the middle
  of a line, the line is @emph{split} and the rest of the line becomes the new
  item@footnote{If you do not want the line to be split, customize the variable
 -@code{org-M-RET-may-split-line}.}.  If this command is executed in the
 -@emph{whitespace before a bullet or number}, the new item is created
 -@emph{before} the current item.  If the command is executed in the white
 -space before the text that is part of an item but does not contain the
 -bullet, a bullet is added to the current line.
 +@code{org-M-RET-may-split-line}.}.  If this command is executed @emph{before
 +an item's body}, the new item is created @emph{before} the current item.  If the
 +command is executed in the white space before the text that is part of an
 +item but does not contain the bullet, a bullet is added to the current line.
 +
 +As a new item cannot be inserted in a structural construct (like an example
 +or source code block) within a list, Org will instead insert it right before
 +the structure, or return an error.
  @kindex M-S-@key{RET}
  @item M-S-@key{RET}
  Insert a new item with a checkbox (@pxref{Checkboxes}).
 -@kindex @key{TAB}
 -@item @key{TAB} @r{in new, empty item}
 +@orgcmd{@key{TAB},org-cycle}
  In a new item with no text yet, the first @key{TAB} demotes the item to
 -become a child of the previous one.  The next @key{TAB} makes it a parent,
 -and so on, all the way to the left margin.  Yet another @key{TAB}, and you
 -are back to the initial level.
 -@kindex S-@key{up}
 +become a child of the previous one.  Subsequent @key{TAB}s move the item to
 +meaningful levels in the list and eventually get it back to its initial
 +position.
  @kindex S-@key{down}
  @item S-@key{up}
  @itemx S-@key{down}
@@@ -1600,45 -1317,30 +1600,45 @@@ similar effect
  Move the item including subitems up/down (swap with previous/next item
  of same indentation).  If the list is ordered, renumbering is
  automatic.
 +@kindex M-@key{left}
 +@kindex M-@key{right}
 +@item M-@key{left}
 +@itemx M-@key{right}
 +Decrease/increase the indentation of an item, leaving children alone.
  @kindex M-S-@key{left}
  @kindex M-S-@key{right}
  @item M-S-@key{left}
  @itemx M-S-@key{right}
  Decrease/increase the indentation of the item, including subitems.
 -Initially, the item tree is selected based on current indentation.
 -When these commands are executed several times in direct succession,
 -the initially selected region is used, even if the new indentation
 -would imply a different hierarchy.  To use the new hierarchy, break
 -the command chain with a cursor motion or so.
 +Initially, the item tree is selected based on current indentation.  When
 +these commands are executed several times in direct succession, the initially
 +selected region is used, even if the new indentation would imply a different
 +hierarchy.  To use the new hierarchy, break the command chain with a cursor
 +motion or so.
 +
 +As a special case, using this command on the very first item of a list will
 +move the whole list.  This behavior can be disabled by configuring
 +@code{org-list-automatic-rules}.  The global indentation of a list has no
 +influence on the text @emph{after} the list.
  @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.  If not, 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.
 +state of the checkbox.  Also, makes sure that all the
 +items on this list level use the same bullet and that the numbering of list
 +items (if applicable) is correct.
  @kindex C-c -
 +@vindex org-plain-list-ordered-item-terminator
 +@vindex org-list-automatic-rules
  @item C-c -
  Cycle the entire list level through the different itemize/enumerate bullets
 -(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).  With a numeric prefix
 -argument N, select the Nth bullet from this list.  If there is an active
 -region when calling this, all lines will be converted to list items.  If the
 -first line already was a list item, any item markers will be removed from the
 -list.  Finally, even without an active region, a normal line will be
 +(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
 +depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
 +and its position@footnote{See @code{bullet} rule in
 +@code{org-list-automatic-rules} for more information.}.  With a numeric
 +prefix argument N, select the Nth bullet from this list.  If there is an
 +active region when calling this, all lines will be converted to list items.
 +If the first line already was a list item, any item markers will be removed
 +from the list.  Finally, even without an active region, a normal line will be
  converted into a list item.
  @kindex C-c *
  @item C-c *
@@@ -1665,7 -1367,7 +1665,7 @@@ numerically, alphabetically, by time, o
  
  @vindex org-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}.
 +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}@footnote{You can define drawers on a per-file basis
  with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
@@@ -1683,17 -1385,10 +1683,17 @@@ look like this
  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 the @code{PROPERTIES} drawer for
 +press @key{TAB} there.  Org-mode uses the @code{PROPERTIES} drawer for
  storing properties (@pxref{Properties and Columns}), and you can also arrange
  for state change notes (@pxref{Tracking TODO state changes}) and clock times
 -(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.
 +(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
 +want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
 +
 +@table @kbd
 +@kindex C-c C-z
 +@item C-c C-z
 +Add a time-stamped note to the LOGBOOK drawer.
 +@end table
  
  @node Blocks, Footnotes, Drawers, Document Structure
  @section Blocks
@@@ -1718,13 -1413,13 +1718,13 @@@ or on a per-file basis by usin
  @section Footnotes
  @cindex footnotes
  
 -Org mode supports the creation of footnotes.  In contrast to the
 -@file{footnote.el} package, Org mode's footnotes are designed for work on a
 +Org-mode supports the creation of footnotes.  In contrast to the
 +@file{footnote.el} package, Org-mode's footnotes are designed for work on a
  larger document, not only for one-off documents like emails.  The basic
  syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
  defined in a paragraph that is started by a footnote marker in square
  brackets in column 0, no indentation allowed.  If you need a paragraph break
 -inside a footnote, use the La@TeX{} idiom @samp{\par}.  The footnote reference
 +inside a footnote, use the @LaTeX{} idiom @samp{\par}.  The footnote reference
  is simply the marker in square brackets, inside text.  For example:
  
  @example
@@@ -1733,10 -1428,10 +1733,10 @@@ The Org homepage[fn:1] now looks a lot 
  [fn:1] The link is: http://orgmode.org
  @end example
  
 -Org mode extends the number-based syntax to @emph{named} footnotes and
 +Org-mode extends the number-based syntax to @emph{named} footnotes and
  optional inline definition.  Using plain numbers as markers (as
  @file{footnote.el} does) is supported for backward compatibility, but not
 -encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
 +encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
  LaTeX}).  Here are the valid references:
  
  @table @code
@@@ -1748,7 -1443,7 +1748,7 @@@ snippet
  A named footnote reference, where @code{name} is a unique label word, or, for
  simplicity of automatic creation, a number.
  @item [fn:: This is the inline definition of this footnote]
 -A La@TeX{}-like anonymous footnote where the definition is given directly at the
 +A @LaTeX{}-like anonymous footnote where the definition is given directly at the
  reference point.
  @item [fn:name: a definition]
  An inline definition of a footnote, which also specifies a name for the note.
@@@ -1759,7 -1454,7 +1759,7 @@@ Since Org allows multiple references t
  @vindex org-footnote-auto-label
  Footnote labels can be created automatically, or you can create names yourself.
  This is handled by the variable @code{org-footnote-auto-label} and its
 -corresponding @code{#+STARTUP} keywords, see the docstring of that variable
 +corresponding @code{#+STARTUP} keywords.  See the docstring of that variable
  for details.
  
  @noindent The following command handles footnotes:
@@@ -1827,7 -1522,7 +1827,7 @@@ you can use the usual commands to follo
  @cindex Orgstruct mode
  @cindex minor mode for structure editing
  
 -If you like the intuitive way the Org mode structure editing and list
 +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 @code{orgstruct-mode} makes
  this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
@@@ -1842,7 -1537,7 +1842,7 @@@ When this mode is active and the curso
  headline or 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.  When you use
 +lines, Orgstruct mode lurks silently in the shadows.  When you use
  @code{orgstruct++-mode}, Org will also export indentation and autofill
  settings into that mode, and detect item context after the first line of an
  item.
  @cindex editing tables
  
  Org comes with a fast and intuitive table editor.  Spreadsheet-like
 -calculations are supported in connection with the Emacs @file{calc}
 -package
 +calculations are supported using the Emacs @file{calc} package
  @ifinfo
  (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
  @end ifinfo
@@@ -1918,7 -1614,8 +1918,7 @@@ unpredictable for you, configure the va
  
  @table @kbd
  @tsubheading{Creation and conversion}
 -@kindex C-c |
 -@item C-c |
 +@orgcmd{C-c |,org-table-create-or-convert-from-region}
  Convert the active region to table. If every line contains at least one
  TAB character, the function assumes that the material is tab separated.
  If every line contains a comma, comma-separated values (CSV) are assumed.
@@@ -1932,55 -1629,74 +1932,55 @@@ table.  But it's easier just to start t
  @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
  
  @tsubheading{Re-aligning and field motion}
 -@kindex C-c C-c
 -@item C-c C-c
 +@orgcmd{C-c C-c,org-table-align}
  Re-align the table without moving the cursor.
  @c
 -@kindex @key{TAB}
 -@item @key{TAB}
 +@orgcmd{<TAB>,org-table-next-field}
  Re-align the table, move to the next field.  Creates a new row if
  necessary.
  @c
 -@kindex S-@key{TAB}
 -@item S-@key{TAB}
 +@orgcmd{S-@key{TAB},org-table-previous-field}
  Re-align, move to previous field.
  @c
 -@kindex @key{RET}
 -@item @key{RET}
 +@orgcmd{@key{RET},org-table-next-row}
  Re-align the table and move down to next row.  Creates a new row if
  necessary.  At the beginning or end of a line, @key{RET} still does
  NEWLINE, so it can be used to split a table.
  @c
 -@kindex M-a
 -@item M-a
 +@orgcmd{M-a,org-table-beginning-of-field}
  Move to beginning of the current table field, or on to the previous field.
 -@kindex M-e
 -@item M-e
 +@orgcmd{M-e,org-table-end-of-field}
  Move to end of the current table field, or on to the next field.
  
  @tsubheading{Column and row editing}
 -@kindex M-@key{left}
 -@kindex M-@key{right}
 -@item M-@key{left}
 -@itemx M-@key{right}
 +@orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
  Move the current column left/right.
  @c
 -@kindex M-S-@key{left}
 -@item M-S-@key{left}
 +@orgcmd{M-S-@key{left},org-table-delete-column}
  Kill the current column.
  @c
 -@kindex M-S-@key{right}
 -@item M-S-@key{right}
 +@orgcmd{M-S-@key{right},org-table-insert-column}
  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}
 +@orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
  Move the current row up/down.
  @c
 -@kindex M-S-@key{up}
 -@item M-S-@key{up}
 +@orgcmd{M-S-@key{up},org-table-kill-row}
  Kill the current row or horizontal line.
  @c
 -@kindex M-S-@key{down}
 -@item M-S-@key{down}
 +@orgcmd{M-S-@key{down},org-table-insert-row}
  Insert a new row above the current row.  With a prefix argument, the line is
  created below the current one.
  @c
 -@kindex C-c -
 -@item C-c -
 +@orgcmd{C-c -,org-table-insert-hline}
  Insert a horizontal line below current row.  With a prefix argument, the line
  is created above the current line.
  @c
 -@kindex C-c @key{RET}
 -@item C-c @key{RET}
 +@orgcmd{C-c @key{RET},org-table-hline-and-move}
  Insert a horizontal line below current row, and move the cursor into the row
  below that line.
  @c
 -@kindex C-c ^
 -@item C-c ^
 +@orgcmd{C-c ^,org-table-sort-lines}
  Sort the table lines in the region.  The position of point indicates the
  column to be used for sorting, and the range of lines is the range
  between the nearest horizontal separator lines, or the entire table.  If
@@@ -1992,30 -1708,35 +1992,30 @@@ included into the sorting.  The comman
  argument, alphabetic sorting will be case-sensitive.
  
  @tsubheading{Regions}
 -@kindex C-c C-x M-w
 -@item C-c C-x M-w
 +@orgcmd{C-c C-x M-w,org-table-copy-region}
  Copy a rectangular region from a table to a special clipboard.  Point and
  mark determine edge fields of the rectangle.  If there is no active region,
  copy just the current field.  The process ignores horizontal separator lines.
  @c
 -@kindex C-c C-x C-w
 -@item C-c C-x C-w
 +@orgcmd{C-c C-x C-w,org-table-cut-region}
  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
 +@orgcmd{C-c C-x C-y,org-table-paste-rectangle}
  Paste a rectangular region into a table.
  The upper left 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 M-@key{RET}
 -@itemx M-@kbd{RET}
 -Wrap several fields in a column like a paragraph.  If there is an active
 -region, and both point and mark are in the same column, the text in the
 -column is wrapped to minimum width for the given number of lines.  A numeric
 -prefix argument may be used to change the number of desired lines.  If there
 -is no region, the current field is split at the cursor position and the text
 -fragment to the right of the cursor is prepended to the field one line
 -down. If there is no region, but you specify a prefix argument, the current
 -field is made blank, and the content is appended to the field above.
 +@orgcmd{M-@key{RET},org-table-wrap-region}
 +Split the current field at the cursor position and move the rest to the line
 +below.  If there is an active region, and both point and mark are in the same
 +column, the text in the column is wrapped to minimum width for the given
 +number of lines.  A numeric prefix argument may be used to change the number
 +of desired lines.  If there is no region, but you specify a prefix argument,
 +the current field is made blank, and the content is appended to the field
 +above.
  
  @tsubheading{Calculations}
  @cindex formula, in tables
  @cindex region, active
  @cindex active region
  @cindex transient mark mode
 -@kindex C-c +
 -@item C-c +
 +@orgcmd{C-c +,org-table-sum}
  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}
 +@orgcmd{S-@key{RET},org-table-copy-down}
  @vindex org-table-copy-increment
  When current field is empty, copy from first non-empty field above.  When not
  empty, copy current field down to next row and move cursor along with it.
@@@ -2039,7 -1762,8 +2039,7 @@@ increment.  This key is also used by sh
  (@pxref{Conflicts}).
  
  @tsubheading{Miscellaneous}
 -@kindex C-c `
 -@item C-c `
 +@orgcmd{C-c `,org-table-edit-field}
  Edit the current field in a separate window.  This is useful for fields that
  are not fully visible (@pxref{Column width and alignment}).  When called with
  a @kbd{C-u} prefix, just make the full field visible, so that it can be
@@@ -2053,13 -1777,12 +2053,13 @@@ TAB-separated text files.  This comman
  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 |
 +@orgcmd{C-c |,org-table-create-or-convert-from-region}
  Tables can also be imported by pasting tabular text into the Org
  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
 +@findex org-table-export
  @vindex org-table-export-default-format
  Export the table, by default as a TAB-separated file.  Use for data
  exchange with, for example, spreadsheet or database programs.  The format
@@@ -2092,13 -1815,13 +2092,13 @@@ The width of columns is automatically d
  also the alignment of a column is determined automatically from the fraction
  of number-like versus non-number fields in the column.
  
 -Sometimes a single field or a few fields need to carry more text,
 -leading to inconveniently wide columns.  To limit@footnote{This feature
 -does not work on XEmacs.} the width of a column, one field anywhere in
 -the column may contain just the string @samp{<N>} where @samp{N} is an
 -integer specifying the width of the column in characters.  The next
 -re-align will then set the width of this column to no more than this
 -value.
 +Sometimes a single field or a few fields need to carry more text, leading to
 +inconveniently wide columns.  Or maybe you want to make a table with several
 +columns having a fixed width, regardless of content.  To set@footnote{This
 +feature does not work on XEmacs.} the width of a column, one field anywhere
 +in the column may contain just the string @samp{<N>} where @samp{N} is an
 +integer specifying the width of the column in characters.  The next re-align
 +will then set the width of this column to this value.
  
  @example
  @group
  
  @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.
 +Note that the full text is still in the buffer but is hidden.
  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
@@@ -2135,13 -1858,9 +2135,13 @@@ on a per-file basis with
  @end example
  
  If you would like to overrule the automatic alignment of number-rich columns
 -to the right and of string-rich column to the left, you and use @samp{<r>} or
 -@samp{<l>} in a similar fashion.  You may also combine alignment and field
 -width like this: @samp{<l10>}.
 +to the right and of string-rich column to the left, you can use @samp{<r>},
 +@samp{c}@footnote{Centering does not work inside Emacs, but it does have an
 +effect when exporting to HTML.} or @samp{<l>} in a similar fashion.  You may
 +also combine alignment and field width like this: @samp{<l10>}.
 +
 +Lines which only contain these formatting cookies will be removed
 +automatically when exporting the document.
  
  @node Column groups, Orgtbl mode, Column width and alignment, Tables
  @section Column groups
@@@ -2159,18 -1878,18 +2159,18 @@@ a group of its own.  Boundaries betwee
  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)))
 +| 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: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
  @end example
  
  It is also sufficient to just insert the column group starters after
 -every vertical line you'd like to have:
 +every vertical line you would like to have:
  
  @example
  |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
@@@ -2195,7 -1914,7 +2195,7 @@@ example in mail mode, us
  
  Furthermore, with some special setup, it is possible to maintain tables
  in arbitrary syntax with Orgtbl mode.  For example, it is possible to
 -construct La@TeX{} tables with the underlying ease and power of
 +construct @LaTeX{} tables with the underlying ease and power of
  Orgtbl mode, including spreadsheet capabilities.  For details, see
  @ref{Tables in arbitrary syntax}.
  
  
  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.  While fully featured, Org's
 -implementation is not identical to other spreadsheets.  For example,
 -Org 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.
 +derive fields from other fields.  While fully featured, Org's implementation
 +is not identical to other spreadsheets.  For example, Org 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.  There is
 +also a formula debugger, and a formula editor with features for highlighting
 +fields in the table corresponding to the references at the point in the
 +formula, moving these references by arrow keys
  
  @menu
  * References::                  How to refer to another field or range
@@@ -2321,28 -2038,6 +2321,28 @@@ suppressed, so that the vector contain
  see the @samp{E} mode switch below).  If there are no non-empty fields,
  @samp{[0]} is returned to avoid syntax errors in formulas.
  
 +@subsubheading Field coordinates in formulas
 +@cindex field coordinates
 +@cindex coordinates, of field
 +@cindex row, of field coordinates
 +@cindex column, of field coordinates
 +
 +For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
 +get the row or column number of the field where the formula result goes.
 +The traditional Lisp formula equivalents are @code{org-table-current-dline}
 +and @code{org-table-current-column}.  Examples:
 +
 +@example
 +if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
 +$3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
 +                             @r{column 3 of the current table}
 +@end example
 +
 +@noindent For the second example, table FOO must have at least as many rows
 +as the current table.  Inefficient@footnote{The computation time scales as
 +O(N^2) because table FOO is parsed for each field to be copied.} for large
 +number of rows.
 +
  @subsubheading Named references
  @cindex named references
  @cindex references, named
@@@ -2432,11 -2127,8 +2432,11 @@@ compact.  The default settings can be c
  @code{org-calc-default-modes}.
  
  @example
 -p20           @r{switch the internal precision to 20 digits}
 -n3 s3 e2 f4   @r{normal, scientific, engineering, or fixed display format}
 +p20           @r{set the internal Calc calculation precision to 20 digits}
 +n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
 +              @r{format of the result of Calc passed back to Org.}
 +              @r{Calc formatting is unlimited in precision as}
 +              @r{long as the Calc calculation precision is greater.}
  D R           @r{angle modes: degrees, radians}
  F S           @r{fraction and symbolic modes}
  N             @r{interpret all fields as numbers, use 0 for non-numbers}
@@@ -2446,16 -2138,8 +2446,16 @@@ L             @r{literal
  @end example
  
  @noindent
 -In addition, you may provide a @code{printf} format specifier to
 -reformat the final result.  A few examples:
 +Unless you use large integer numbers or high-precision-calculation
 +and -display for floating point numbers you may alternatively provide a
 +@code{printf} format specifier to reformat the Calc result after it has been
 +passed back to Org instead of letting Calc already do the
 +formatting@footnote{The @code{printf} reformatting is limited in precision
 +because the value passed to it is converted into an @code{integer} or
 +@code{double}.  The @code{integer} is limited in size by truncating the
 +signed value to 32 bits.  The @code{double} is limited in precision to 64
 +bits overall which leaves approximately 16 significant decimal digits.}.
 +A few examples:
  
  @example
  $1+$2                @r{Sum of first and second field}
@@@ -2468,7 -2152,7 +2468,7 @@@ tan($1);Dp3s1        @r{Compute in degr
  sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
  vmean($2..$7)        @r{Compute column range mean, using vector function}
  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}
 +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
@@@ -2481,23 -2165,24 +2481,23 @@@ if($1<20,teen,string(""))  @r{``teen'' 
  @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 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 conscious 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, enclose 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.
 +It is also possible to write a formula in Emacs Lisp; this can be useful for
 +string manipulation and control structures, if 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 conscious 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, enclose 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.  Here are 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}
@@@ -2521,7 -2206,7 +2521,7 @@@ evaluated, and the current field replac
  
  @cindex #+TBLFM
  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
 +directly below the table.  If you type the equation in the 4th field of
  the 3rd data line in the table, the formula will look like
  @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
  with the appropriate commands, @i{absolute references} (but not relative
@@@ -2535,7 -2220,8 +2535,7 @@@ Instead of typing an equation into the 
  following command
  
  @table @kbd
 -@kindex C-u C-c =
 -@item C-u C-c =
 +@orgcmd{C-u C-c =,org-table-eval-formula}
  Install a new formula for the current field.  The command prompts for a
  formula with default taken from the @samp{#+TBLFM:} line, applies
  it to the current field, and stores it.
@@@ -2568,7 -2254,8 +2568,7 @@@ Instead of typing an equation into the 
  following command:
  
  @table @kbd
 -@kindex C-c =
 -@item C-c =
 +@orgcmd{C-c =,org-table-eval-formula}
  Install a new formula for the current column and replace current field with
  the result of the formula.  The command prompts for a formula, with default
  taken from the @samp{#+TBLFM} line, applies it to the current field and
@@@ -2591,29 -2278,32 +2591,29 @@@ if possible.  If you prefer to only wor
  @code{org-table-use-standard-references}.
  
  @table @kbd
 -@kindex C-c =
 -@kindex C-u C-c =
 -@item C-c =
 -@itemx C-u C-c =
 +@orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
  Edit the formula associated with the current column/field in the
  minibuffer.  See @ref{Column formulas}, and @ref{Field formulas}.
 -@kindex C-u C-u C-c =
 -@item C-u C-u C-c =
 +@orgcmd{C-u C-u C-c =,org-table-eval-formula}
  Re-insert the active formula (either a
  field formula, or a column formula) into the current field, so that you
  can edit it directly in the field.  The advantage over editing in the
  minibuffer is that you can use the command @kbd{C-c ?}.
 -@kindex C-c ?
 -@item C-c ?
 +@orgcmd{C-c ?,org-table-field-info}
  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 @}
 +@findex org-table-toggle-coordinate-overlays
  @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}.
 +Toggle the display of row and column numbers for a table, using overlays
 +(@command{org-table-toggle-coordinate-overlays}).  These are updated each
 +time the table is aligned; you can force it with @kbd{C-c C-c}.
  @kindex C-c @{
 +@findex org-table-toggle-formula-debugger
  @item C-c @{
 -Toggle the formula debugger on and off.  See below.
 -@kindex C-c '
 -@item C-c '
 +Toggle the formula debugger on and off
 +(@command{org-table-toggle-formula-debugger}).  See below.
 +@orgcmd{C-c ',org-table-edit-formulas}
  Edit all formulas for the current table in a special buffer, where the
  formulas will be displayed one per line.  If the current field has an
  active formula, the cursor in the formula editor will mark it.
@@@ -2621,40 -2311,46 +2621,40 @@@ While inside the special buffer, Org wi
  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
 -@itemx C-x C-s
 +@orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
  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
 +@orgcmd{C-c C-q,org-table-fedit-abort}
  Exit the formula editor without installing changes.
 -@kindex C-c C-r
 -@item C-c C-r
 +@orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
  Toggle all references in the formula editor between standard (like
  @code{B3}) and internal (like @code{@@3$2}).
 -@kindex @key{TAB}
 -@item @key{TAB}
 +@orgcmd{@key{TAB},org-table-fedit-lisp-indent}
  Pretty-print or indent Lisp formula at point.  When in a line containing
  a Lisp formula, format the formula according to Emacs Lisp rules.
  Another @key{TAB} collapses the formula back again.  In the open
  formula, @key{TAB} re-indents just like in Emacs Lisp mode.
 -@kindex M-@key{TAB}
 -@item M-@key{TAB}
 +@orgcmd{M-@key{TAB},lisp-complete-symbol}
  Complete Lisp symbols, just like in Emacs Lisp mode.
  @kindex S-@key{up}
  @kindex S-@key{down}
  @kindex S-@key{left}
  @kindex S-@key{right}
 +@findex org-table-fedit-ref-up
 +@findex org-table-fedit-ref-down
 +@findex org-table-fedit-ref-left
 +@findex org-table-fedit-ref-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}
 +@orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
  Move the test line for column formulas in the Org buffer up and
  down.
 -@kindex M-@key{up}
 -@kindex M-@key{down}
 -@item M-@key{up}/@key{down}
 +@orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
  Scroll the window displaying the table.
  @kindex C-c @}
 +@findex org-table-toggle-coordinate-overlays
  @item C-c @}
  Turn the coordinate grid in the table on and off.
  @end table
@@@ -2694,7 -2390,8 +2694,7 @@@ In order to recalculate a line of a tab
  following commands:
  
  @table @kbd
 -@kindex C-c *
 -@item C-c *
 +@orgcmd{C-c *,org-table-recalculate}
  Recalculate the current row by first applying the stored column formulas
  from left to right, and all field formulas in the current row.
  @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
 +@orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
  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.
 +@item M-x org-table-recalculate-buffer-tables
 +@findex org-table-recalculate-buffer-tables
 +Recompute all tables in the current buffer.
 +@item M-x org-table-iterate-buffer-tables
 +@findex org-table-iterate-buffer-tables
 +Iterate all tables in the current buffer, in order to converge table-to-table
 +dependencies.
  @end table
  
  @node Advanced features,  , Updating the table, The spreadsheet
@@@ -2725,7 -2418,8 +2725,7 @@@ If you want the recalculation of field
  you want to be able to assign @i{names} to fields and columns, you need
  to reserve the first column of the table for special marking characters.
  @table @kbd
 -@kindex C-#
 -@item C-#
 +@orgcmd{C-#,org-table-rotate-recalc-marks}
  Rotate the calculation mark in first column through the states @samp{ },
  @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
  change all marks in the region.
@@@ -2822,7 -2516,7 +2822,7 @@@ functions
  @node Org-Plot,  , The spreadsheet, Tables
  @section Org-Plot
  @cindex graph, in tables
 -@cindex plot tables using gnuplot
 +@cindex plot tables using Gnuplot
  @cindex #+PLOT
  
  Org-Plot can produce 2D and 3D graphs of information stored in org tables
@@@ -2881,8 -2575,8 +2881,8 @@@ Defaults to @code{lines}
  If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
  
  @item labels
 -List of labels to be used for the deps (defaults to the column headers if
 -they exist).
 +List of labels to be used for the @code{deps} (defaults to the column headers
 +if they exist).
  
  @item line
  Specify an entire line to be inserted in the Gnuplot script.
@@@ -2988,13 -2682,23 +2988,13 @@@ text before the first headline is usual
  target should be after the first headline, or in the line directly before the
  first headline.}.
  
 -If no dedicated target exists, Org will search for the words in the link.  In
 -the above example the search would be for @samp{my target}.  Links starting
 -with a star like @samp{*My Target} restrict the search to
 -headlines@footnote{To insert a link targeting a headline, in-buffer
 -completion can be used.  Just type a star followed by a few optional letters
 -into the buffer and press @kbd{M-@key{TAB}}.  All headlines in the current
 -buffer will be offered as completions.  @xref{Handling links}, for more
 -commands creating links.}.  When searching, Org mode will first try an
 -exact match, but then move on to more and more lenient searches.  For
 -example, the link @samp{[[*My Targets]]} will find any of the following:
 -
 -@example
 -** My targets
 -** TODO my targets are bright
 -** my 20 targets are
 -@end example
 -
 +If no dedicated target exists, Org will search for a headline that is exactly
 +the link text but may also include a TODO keyword and tags@footnote{To insert
 +a link targeting a headline, in-buffer completion can be used.  Just type a
 +star followed by a few optional letters into the buffer and press
 +@kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
 +completions.}.  In non-Org files, the search will look for the words in the
 +link text.  In the above example the search would be for @samp{my target}.
  
  Following a link pushes a mark onto Org's own mark ring.  You can
  return to the previous position with @kbd{C-c &}.  Using this command
@@@ -3048,18 -2752,14 +3048,18 @@@ the colon.  The following list shows ex
  
  @example
  http://www.astro.uva.nl/~dominik          @r{on the web}
 +doi:10.1000/182                           @r{DOI for an electronic resource}
  file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
  /home/dominik/images/jupiter.jpg          @r{same as above}
  file:papers/last.pdf                      @r{file, relative path}
  ./papers/last.pdf                         @r{same as above}
 +file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
 +/myself@@some.where:papers/last.pdf        @r{same as above}
  file:sometextfile::NNN                    @r{file with line number to jump to}
  file:projects.org                         @r{another Org file}
  file:projects.org::some words             @r{text search in Org file}
  file:projects.org::*task title            @r{heading search in Org file}
 +docview:papers/last.pdf::NNN              @r{open file in doc-view mode at page NNN}
  id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
  news:comp.emacs                           @r{Usenet link}
  mailto:adent@@galaxy.net                   @r{Mail link}
@@@ -3076,7 -2776,6 +3076,7 @@@ gnus:grou
  gnus:group#id                             @r{Gnus article link}
  bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
  irc:/irc.com/#emacs/bob                   @r{IRC link}
 +info:org:External%20links                 @r{Info node link (with encoded space)}
  shell:ls *.org                            @r{A shell command}
  elisp:org-agenda                          @r{Interactive Elisp command}
  elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
@@@ -3112,8 -2811,9 +3112,8 @@@ Org provides methods to create a link i
  insert it into an Org file, and to follow the link.
  
  @table @kbd
 -@kindex C-c l
 +@orgcmd{C-c l,org-store-link}
  @cindex storing links
 -@item C-c l
  Store a link to the current location.  This is a @emph{global} command (you
  must create the key binding yourself) which can be used in any buffer to
  create a link.  The link will be stored for later insertion into an Org
@@@ -3169,10 -2869,11 +3169,10 @@@ When the cursor is in an agenda view, t
  entry referenced by the current line.
  
  @c
 -@kindex C-c C-l
 +@orgcmd{C-c C-l,org-insert-link}
  @cindex link completion
  @cindex completion, of links
  @cindex inserting links
 -@item C-c C-l
  @vindex org-keep-stored-link-after-insertion
  Insert a link@footnote{ Note that you don't have to use this command to
  insert a link.  Links in Org are plain text, and you can type or paste them
@@@ -3202,9 -2903,10 +3202,9 @@@ calling a special function @code{org-PR
  example, if you type @kbd{file @key{RET}}, file name completion (alternative
  access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
  @key{RET}} you can complete contact names.
 -@kindex C-u C-c C-l
 +@orgkey C-u C-c C-l
  @cindex file name completion
  @cindex completion, of file names
 -@item C-u C-c C-l
  When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
  a file will be inserted and you may use file name completion to select
  the name of the file.  The path to the file is inserted relative to the
@@@ -3214,12 -2916,14 +3214,12 @@@ to the current directory using @samp{..
  is used, if possible with @samp{~/} for your home directory.  You can
  force an absolute path with two @kbd{C-u} prefixes.
  @c
 -@item C-c C-l @r{(with cursor on existing link)}
 +@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
 -@kindex RET
 -@item C-c C-o @r{or} @key{RET}
 +@orgcmd{C-c C-o,org-open-at-point}
  @vindex org-file-apps
  Open link at point.  This will launch a web browser for URLs (using
  @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
@@@ -3235,17 -2939,13 +3235,17 @@@ visit the file with Emacs, use a @kbd{C
  opening in Emacs, use a @kbd{C-u C-u} prefix.@*
  If the cursor is on a headline, but not on a link, offer all links in the
  headline and entry text.
 +@orgkey @key{RET}
 +@vindex org-return-follows-link
 +When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
 +the link at point.
  @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, @kbd{mouse-1} will also follow a link.
 +would.  Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
  @c
  @kindex mouse-3
  @item mouse-3
@@@ -3254,36 -2954,28 +3254,36 @@@ Like @kbd{mouse-2}, but force file link
  internal links to be displayed in another window@footnote{See the
  variable @code{org-display-internal-link-with-indirect-buffer}}.
  @c
 +@orgcmd{C-c C-x C-v,org-toggle-inline-images}
 +@cindex inlining images
 +@cindex images, inlining
 +@vindex org-startup-with-inline-images
 +@cindex @code{inlineimages}, STARTUP keyword
 +@cindex @code{noinlineimages}, STARTUP keyword
 +Toggle the inline display of linked images.  Normally this will only inline
 +images that have no description part in the link, i.e. images that will also
 +be inlined during export.  When called with a prefix argument, also display
 +images that do have a link description.  You can ask for inline images to be
 +displayed at startup by configuring the variable
 +@code{org-startup-with-inline-images}@footnote{with corresponding
 +@code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
 +@orgcmd{C-c %,org-mark-ring-push}
  @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
 +@orgcmd{C-c &,org-mark-ring-goto}
  @cindex links, returning to
 -@kindex C-c &
 -@item C-c &
  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
 +@orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
  @cindex links, finding next/previous
 -@item C-c C-x C-n
 -@itemx C-c C-x C-p
  Move forward/backward to the next link in the buffer.  At the limit of
  the buffer, the search fails once, and then wraps around.  The key
 -bindings for this are really too long, you might want to bind this also
 +bindings for this are really too long; you might want to bind this also
  to @kbd{C-n} and @kbd{C-p}
  @lisp
  (add-hook 'org-load-hook
@@@ -3321,22 -3013,20 +3321,22 @@@ abbreviated link looks like thi
  
  @noindent
  @vindex org-link-abbrev-alist
 -where the tag is optional.  The @i{linkword} must be a word; letter, numbers,
 -@samp{-}, and @samp{_} are allowed here.  Abbreviations are resolved
 +where the tag is optional.
 +The @i{linkword} must be a word, starting with a letter, followed by
 +letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
  according to the information in the variable @code{org-link-abbrev-alist}
  that relates the linkwords to replacement text.  Here is an example:
  
 -@lisp
 +@smalllisp
  @group
  (setq org-link-abbrev-alist
    '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
      ("google"   . "http://www.google.com/search?q=")
 -    ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
 -                   nph-abs_connect?author=%s&db_key=AST")))
 +    ("gmap"     . "http://maps.google.com/maps?q=%s")
 +    ("omap"     . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
 +    ("ads"      . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
  @end group
 -@end lisp
 +@end smalllisp
  
  If the replacement text contains the string @samp{%s}, it will be
  replaced with the tag.  Otherwise the tag will be appended to the string
@@@ -3345,11 -3035,8 +3345,11 @@@ be called with the tag as the only argu
  
  With the above setting, you could link to a specific bug with
  @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
 -@code{[[google:OrgMode]]} and find out what the Org author is
 -doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
 +@code{[[google:OrgMode]]}, show the map location of the Free Software
 +Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
 +@code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
 +what the Org author is doing besides Emacs hacking with
 +@code{[[ads:Dominik,C]]}.
  
  If you need special abbreviations just for a single Org buffer, you
  can define them in the file with
@@@ -3388,7 -3075,6 +3388,7 @@@ link, together with an explanation
  [[file:~/code/main.c::255]]
  [[file:~/xx.org::My Target]]
  [[file:~/xx.org::*My Target]]
 +[[file:~/xx.org::#my-custom-id]]
  [[file:~/xx.org::/regexp/]]
  @end example
  
@@@ -3403,12 -3089,10 +3403,12 @@@ link will become an HTML reference to t
  the linked file.
  @item *My Target
  In an Org file, restrict search to headlines.
 +@item #my-custom-id
 +Link to a heading with a @code{CUSTOM_ID} property
  @item /regexp/
  Do a regular expression search for @code{regexp}.  This uses the Emacs
  command @code{occur} to list all matches in a separate window.  If the
 -target file is in Org mode, @code{org-occur} is used to create a
 +target file is in Org-mode, @code{org-occur} is used to create a
  sparse tree with the matches.
  @c If the target file is a directory,
  @c @code{grep} will be used to search all files in the directory.
@@@ -3444,10 -3128,10 +3444,10 @@@ for Bib@TeX{} database files, and you c
  an implementation example.  See the file @file{org-bibtex.el}.
  
  @node TODO Items, Tags, Hyperlinks, Top
 -@chapter TODO Items
 +@chapter TODO items
  @cindex TODO items
  
 -Org mode does not maintain TODO lists as separate documents@footnote{Of
 +Org-mode does not maintain TODO lists as separate documents@footnote{Of
  course, you can make a document that contains only long lists of TODO items,
  but this is not required.}.  Instead, TODO items are an integral part of the
  notes file, because TODO items usually come up while taking notes!  With Org
@@@ -3456,7 -3140,7 +3456,7 @@@ information is not duplicated, and the 
  item emerged is always present.
  
  Of course, this technique for managing TODO items scatters them
 -throughout your notes file.  Org mode compensates for this by providing
 +throughout your notes file.  Org-mode compensates for this by providing
  methods to give you an overview of all the things that you have to do.
  
  @menu
@@@ -3482,8 -3166,9 +3482,8 @@@ Any headline becomes a TODO item when i
  The most important commands to work with TODO entries are:
  
  @table @kbd
 -@kindex C-c C-t
 +@orgcmd{C-c C-t,org-todo}
  @cindex cycling, of TODO states
 -@item C-c C-t
  Rotate the TODO state of the current item among
  
  @example
  The same rotation can also be done ``remotely'' from the timeline and
  agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
  
 -@kindex C-u C-c C-t
 -@item C-u C-c C-t
 +@orgkey{C-u C-c C-t}
  Select a specific keyword using completion or (if it has been set up)
  the fast selection interface.  For the latter, you need to assign keys
  to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
@@@ -3502,32 -3188,37 +3502,32 @@@ more information
  
  @kindex S-@key{right}
  @kindex S-@key{left}
 +@item S-@key{right} @ @r{/} @ S-@key{left}
  @vindex org-treat-S-cursor-todo-selection-as-state-change
 -@item S-@key{right}
 -@itemx S-@key{left}
  Select the following/preceding TODO state, similar to cycling.  Useful
  mostly if more than two TODO states are possible (@pxref{TODO
  extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
  with @code{shift-selection-mode}.  See also the variable
  @code{org-treat-S-cursor-todo-selection-as-state-change}.
 -@kindex C-c C-v
 -@kindex C-c / t
 +@orgcmd{C-c / t,org-show-todo-key}
  @cindex sparse tree, for TODO
 -@item C-c C-v
 -@itemx C-c / t
  @vindex org-todo-keywords
  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 a prefix argument, search for a specific TODO.  You will be
 -prompted for the keyword, and you can also give a list of keywords like
 -@code{KWD1|KWD2|...} to list entries that match any one of these keywords.
 -With numeric prefix argument N, show the tree for the Nth keyword in the
 -variable @code{org-todo-keywords}.  With two prefix arguments, find all TODO
 -and DONE entries.
 -@kindex C-c a t
 -@item C-c a t
 -Show the global TODO list.  Collects the TODO items from all agenda
 -files (@pxref{Agenda Views}) into a single buffer.  The new buffer will
 -be in @code{agenda-mode}, which provides commands to examine and
 -manipulate the TODO entries from the new buffer (@pxref{Agenda
 -commands}).  @xref{Global TODO list}, for more information.
 -@kindex S-M-@key{RET}
 -@item S-M-@key{RET}
 +entire buffer, but shows all TODO items (with not-DONE state) and the
 +headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
 +/ T}), search for a specific TODO.  You will be prompted for the keyword, and
 +you can also give a list of keywords like @code{KWD1|KWD2|...} to list
 +entries that match any one of these keywords.  With numeric prefix argument
 +N, show the tree for the Nth keyword in the variable
 +@code{org-todo-keywords}.  With two prefix arguments, find all TODO states,
 +both un-done and done.
 +@orgcmd{C-c a t,org-todo-list}
 +Show the global TODO list.  Collects the TODO items (with not-DONE states)
 +from all agenda files (@pxref{Agenda Views}) into a single buffer.  The new
 +buffer will be in @code{agenda-mode}, which provides commands to examine and
 +manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
 +@xref{Global TODO list}, for more information.
 +@orgcmd{S-M-@key{RET},org-insert-todo-heading}
  Insert a new TODO entry below the current one.
  @end table
  
@@@ -3542,7 -3233,7 +3542,7 @@@ option @code{org-todo-state-tags-trigge
  
  @vindex org-todo-keywords
  By default, marked TODO entries have one of only two states: TODO and
 -DONE.  Org mode allows you to classify TODO items in more complex ways
 +DONE.  Org-mode allows you to classify TODO items in more complex ways
  with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
  special setup, the TODO keyword system can work differently in different
  files.
@@@ -3567,7 -3258,7 +3567,7 @@@ TODO items in particular (@pxref{Tags})
  
  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
 +this variable only becomes effective after restarting Org-mode in a
  buffer.}:
  
  @lisp
@@@ -3610,7 -3301,7 +3610,7 @@@ be set up like this
  
  In this case, different keywords do not indicate a sequence, but rather
  different types.  So the normal work flow would be to assign a task to a
 -person, and later to mark it DONE.  Org mode supports this style by adapting
 +person, and later to mark it DONE.  Org-mode supports this style by adapting
  the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
  @kbd{t} command in the timeline and agenda buffers.}.  When used several
  times in succession, it will still cycle through all names, in order to first
@@@ -3618,10 -3309,10 +3618,10 @@@ select the right type for a task.  But 
  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
 +by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
 +Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
  from all agenda files into a single buffer, you would use the numeric prefix
 -argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
 +argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
  
  @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
  @subsection Multiple keyword sets in one file
@@@ -3641,7 -3332,7 +3641,7 @@@ like this
          (sequence "|" "CANCELED")))
  @end lisp
  
 -The keywords should all be different, this helps Org mode to keep track
 +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
@@@ -3738,9 -3429,9 +3738,9 @@@ Remember that the keywords after the ve
  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
 +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 Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
  @vindex org-todo @r{(face)}
  @vindex org-done @r{(face)}
  @vindex org-todo-keyword-faces
 -Org mode highlights TODO keywords with special faces: @code{org-todo}
 +Org-mode highlights TODO keywords with special faces: @code{org-todo}
  for keywords indicating that an item still has to be acted upon, and
  @code{org-done} for keywords indicating that an item is finished.  If
  you are using more than 2 different states, you might want to use
@@@ -3760,16 -3451,15 +3760,16 @@@ special faces for some of them.  This c
  @lisp
  @group
  (setq org-todo-keyword-faces
 -      '(("TODO"      . org-warning)
 -        ("DEFERRED"  . shadow)
 -        ("CANCELED"  . (:foreground "blue" :weight bold))))
 +      '(("TODO" . org-warning) ("STARTED" . "yellow")
 +        ("CANCELED" . (:foreground "blue" :weight bold))))
  @end group
  @end lisp
  
 -While using a list with face properties as shown for CANCELED
 -@emph{should} work, this does not aways seem to be the case.  If
 -necessary, define a special face and use that.
 +While using a list with face properties as shown for CANCELED @emph{should}
 +work, this does not aways seem to be the case.  If necessary, define a
 +special face and use that.  A string is interpreted as a color.  The variable
 +@code{org-faces-easy-properties} determines if that color is interpreted as a
 +foreground or a background color.
  
  @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
  @subsection TODO dependencies
@@@ -3804,7 -3494,8 +3804,7 @@@ example
  @end example
  
  @table @kbd
 -@kindex C-c C-x o
 -@item C-c C-x o
 +@orgcmd{C-c C-x o,org-toggle-ordered-property}
  @vindex org-track-ordered-property-with-tag
  @cindex property, ORDERED
  Toggle the @code{ORDERED} property of the current entry.  A property is used
@@@ -3812,7 -3503,8 +3812,7 @@@ for this behavior because this should b
  inherited like a tag.  However, if you would like to @i{track} the value of
  this property with a tag for better visibility, customize the variable
  @code{org-track-ordered-property-with-tag}.
 -@kindex C-u C-u C-u C-c C-t
 -@item C-u C-u C-u C-c C-t
 +@orgkey{C-u C-u C-u C-c C-t}
  Change TODO state, circumventing any state blocking.
  @end table
  
@@@ -3838,7 -3530,7 +3838,7 @@@ module @file{org-depend.el}
  @cindex progress logging
  @cindex logging, of progress
  
 -Org mode can automatically record a timestamp and possibly a note when
 +Org-mode can automatically record a timestamp and possibly a note when
  you mark a TODO item as DONE, or even each time you change the state of
  a TODO item.  This system is highly configurable, settings can be on a
  per-keyword basis and can be localized to a file or even a subtree.  For
@@@ -3856,7 -3548,7 +3856,7 @@@ work time}
  
  The most basic logging is to keep track of @emph{when} a certain TODO
  item was finished.  This is achieved with@footnote{The corresponding
 -in-buffer setting is: @code{#+STARTUP: logdone}}.
 +in-buffer setting is: @code{#+STARTUP: logdone}}
  
  @lisp
  (setq org-log-done 'time)
@@@ -3902,7 -3594,7 +3902,7 @@@ behavior---the recommended drawer for t
  also overrule the setting of this variable for a subtree by setting a
  @code{LOG_INTO_DRAWER} property.
  
 -Since it is normally too much to record a note for every state, Org mode
 +Since it is normally too much to record a note for every state, Org-mode
  expects configuration on a per-keyword basis for this.  This is achieved by
  adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
  in parentheses after each keyword.  For example, with the setting
  @vindex org-log-done
  you not only define global TODO keywords and fast access keys, but also
  request that a time is recorded when the entry is set to
 -DONE@footnote{It is possible that Org mode will record two timestamps
 +DONE@footnote{It is possible that Org-mode will record two timestamps
  when you are using both @code{org-log-done} and state change logging.
  However, it will never prompt for two notes---if you have configured
  both, the state change recording note will take precedence and cancel
@@@ -3976,10 -3668,7 +3976,10 @@@ The habit is a TODO, with a TODO keywor
  @item
  The property @code{STYLE} is set to the value @code{habit}.
  @item
 -The TODO has a scheduled date, with a @code{.+} style repeat interval.
 +The TODO has a scheduled date, usually with a @code{.+} style repeat
 +interval.  A @code{++} style may be appropriate for habits with time
 +constraints, e.g., must be done on weekends, or a @code{+} style for an
 +unusual habit that can have a backlog, e.g., weekly reports.
  @item
  The TODO may also have minimum and maximum ranges specified by using the
  syntax @samp{.+2d/3d}, which says that you want to do the task at least every
@@@ -4035,7 -3724,7 +4035,7 @@@ If the task was going to be overdue th
  If the task was overdue on that day.
  @end table
  
 -In addition to coloring each day, the day is also marked with an asterix if
 +In addition to coloring each day, the day is also marked with an asterisk if
  the task was actually done that day, and an exclamation mark to show where
  the current day falls in the graph.
  
@@@ -4065,37 -3754,38 +4065,37 @@@ which should only be done in certain co
  @section Priorities
  @cindex priorities
  
 -If you use Org mode extensively, you may end up enough TODO items that
 +If you use Org-mode extensively, you may end up with enough TODO items that
  it starts to make sense to prioritize them.  Prioritizing can be done by
 -placing a @emph{priority cookie} into the headline of a TODO item, like
 -this
 +placing a @emph{priority cookie} into the headline of a TODO item, like this
  
  @example
  *** TODO [#A] Write letter to Sam Fortune
  @end example
  
  @noindent
 -By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
 -@samp{C}.  @samp{A} is the highest priority.  An entry without a cookie
 -is treated as priority @samp{B}.  Priorities make a difference only in
 -the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have
 -no inherent meaning to Org mode.
 +@vindex org-priority-faces
 +By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
 +@samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
 +treated just like priority @samp{B}.  Priorities make a difference only for
 +sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
 +have no inherent meaning to Org-mode.  The cookies can be highlighted with
 +special faces by customizing the variable @code{org-priority-faces}.
  
 -Priorities can be attached to any outline tree entries; they do not need
 -to be TODO items.
 +Priorities can be attached to any outline node; they do not need to be TODO
 +items.
  
  @table @kbd
 -@kindex @kbd{C-c ,}
  @item @kbd{C-c ,}
 -Set the priority of the current headline.  The command prompts for a
 -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}).
 +@kindex @kbd{C-c ,}
 +@findex org-priority
 +Set the priority of the current headline (@command{org-priority}).  The
 +command prompts for a 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}
 -@itemx S-@key{down}
 +@orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
  @vindex org-priority-start-cycle-with-default
  Increase/decrease priority of current headline@footnote{See also the option
  @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
@@@ -4131,7 -3821,7 +4131,7 @@@ with detailed subtasks on the tree@foot
  global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
  the overview over the fraction of subtasks that are already completed, insert
  either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
 -be updates each time the todo status of a child changes, or when pressing
 +be updated each time the TODO status of a child changes, or when pressing
  @kbd{C-c C-c} on the cookie.  For example:
  
  @example
@@@ -4184,16 -3874,13 +4184,16 @@@ large number of subtasks (@pxref{Checkb
  @section Checkboxes
  @cindex checkboxes
  
 -Every item in a plain list (@pxref{Plain lists}) can be made into a
 -checkbox by starting it with the string @samp{[ ]}.  This feature is
 -similar to TODO items (@pxref{TODO Items}), but is more lightweight.
 -Checkboxes are not included into the global TODO list, so they are often
 -great to split a task into a number of simple steps.  Or you can use
 -them in a shopping list.  To toggle a checkbox, use @kbd{C-c C-c}, or
 -use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
 +@vindex org-list-automatic-rules
 +Every item in a plain list@footnote{With the exception of description
 +lists. But you can allow it by modifying @code{org-list-automatic-rules}
 +accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
 +it with the string @samp{[ ]}.  This feature is similar to TODO items
 +(@pxref{TODO Items}), but is more lightweight.  Checkboxes are not included
 +into the global TODO list, so they are often great to split a task into a
 +number of simple steps.  Or you can use them in a shopping list.  To toggle a
 +checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
 +@file{org-mouse.el}).
  
  Here is an example of a checkbox list.
  
@@@ -4245,11 -3932,13 +4245,11 @@@ off a box while there are unchecked box
  @noindent The following commands work with checkboxes:
  
  @table @kbd
 -@kindex C-c C-c
 -@item C-c C-c
 +@orgcmd{C-c C-c,org-toggle-checkbox}
  Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
  double 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
 +@orgcmd{C-c C-x C-b,org-toggle-checkbox}
  Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
  double prefix argument, set it to @samp{[-]}, which is considered to be an
  intermediate state.
@@@ -4264,11 -3953,13 +4264,11 @@@ this headline and the next (so @emph{no
  @item
  If there is no active region, just toggle the checkbox at point.
  @end itemize
 -@kindex M-S-@key{RET}
 -@item M-S-@key{RET}
 +@orgcmd{M-S-@key{RET},org-insert-todo-heading}
  Insert a new item with a checkbox.
  This works only if the cursor is already in a plain list item
  (@pxref{Plain lists}).
 -@kindex C-c C-x o
 -@item C-c C-x o
 +@orgcmd{C-c C-x o,org-toggle-ordered-property}
  @vindex org-track-ordered-property-with-tag
  @cindex property, ORDERED
  Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
@@@ -4277,7 -3968,8 +4277,7 @@@ this should be local to the current ent
  However, if you would like to @i{track} the value of this property with a tag
  for better visibility, customize the variable
  @code{org-track-ordered-property-with-tag}.
 -@kindex C-c #
 -@item C-c #
 +@orgcmd{C-c #,org-update-statistics-cookies}
  Update the statistics cookie in the current outline entry.  When called with
  a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
  updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
@@@ -4295,7 -3987,7 +4295,7 @@@ entry twice (checkboxes with @kbd{C-c C
  @cindex sparse tree, tag based
  
  An excellent way to implement labels and contexts for cross-correlating
 -information is to assign @i{tags} to headlines.  Org mode has extensive
 +information is to assign @i{tags} to headlines.  Org-mode has extensive
  support for tags.
  
  @vindex org-tag-faces
@@@ -4371,17 -4063,19 +4371,17 @@@ After a colon, @kbd{M-@key{TAB}} offer
  also a special command for inserting tags:
  
  @table @kbd
 -@kindex C-c C-q
 -@item C-c C-q
 +@orgcmd{C-c C-q,org-set-tags-command}
  @cindex completion, of tags
  @vindex org-tags-column
 -Enter new tags for the current headline.  Org mode will either offer
 +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}).
 -@kindex C-c C-c
 -@item C-c C-c
 +@orgcmd{C-c C-c,org-set-tags-command}
  When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
  @end table
  
@@@ -4417,7 -4111,7 +4417,7 @@@ by adding a STARTUP option line to tha
  #+STARTUP: noptag
  @end example
  
 -By default Org mode uses the standard minibuffer completion facilities for
 +By default Org-mode uses the standard minibuffer completion facilities for
  entering tags.  However, it also implements another, quicker, tag selection
  method called @emph{fast tag selection}.  This allows you to select and
  deselect tags with just a single key press.  For this to work well you should
@@@ -4548,13 -4242,18 +4548,13 @@@ Once a system of tags has been set up, 
  information into special lists.
  
  @table @kbd
 -@kindex C-c \
 -@kindex C-c / m
 -@item C-c \
 -@itemx C-c / m
 +@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
  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
 +@orgcmd{C-c a m,org-tags-view}
  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
 +@orgcmd{C-c a M,org-tags-view}
  @vindex org-tags-match-list-sublevels
  Create a global list of tag matches from all agenda files, but check
  only TODO items and force checking subitems (see variable
@@@ -4571,11 -4270,11 +4571,11 @@@ and properties.  For a complete descrip
  
  
  @node Properties and Columns, Dates and Times, Tags, Top
 -@chapter Properties and Columns
 +@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 two main applications for properties in Org-mode.  First, properties
  are like tags, but with a value.  Second, you can use properties to
  implement (very basic) database capabilities in an Org buffer.  For
  an example of the first application, imagine maintaining a file where
@@@ -4592,7 -4291,7 +4592,7 @@@ Properties can be conveniently edited a
  
  @menu
  * Property syntax::             How properties are spelled out
 -* Special properties::          Access to other Org mode features
 +* Special properties::          Access to other Org-mode features
  * Property searches::           Matching property values
  * Property inheritance::        Passing values down the tree
  * Column view::                 Tabular viewing and editing
@@@ -4655,29 -4354,33 +4655,29 @@@ Org files
  The following commands help to work with properties:
  
  @table @kbd
 -@kindex M-@key{TAB}
 -@item M-@key{TAB}
 +@orgcmd{M-@key{TAB},org-complete}
  After an initial colon in a line, complete property keys.  All keys used
  in the current file will be offered as possible completions.
 -@kindex C-c C-x p
 -@item C-c C-x p
 +@orgcmd{C-c C-x p,org-set-property}
  Set a property.  This prompts for a property name and a value.  If
  necessary, the property drawer is created as well.
  @item M-x org-insert-property-drawer
 +@findex 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
 +@orgcmd{C-c C-c,org-property-action}
  With the cursor in a property drawer, this executes property commands.
 -@item C-c C-c s
 +@orgcmd{C-c C-c s,org-set-property}
  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}
 +@orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
  Switch property at point to the next/previous allowed value.
 -@item C-c C-c d
 +@orgcmd{C-c C-c d,org-delete-property}
  Remove a property from the current entry.
 -@item C-c C-c D
 +@orgcmd{C-c C-c D,org-delete-property-globally}
  Globally remove a property, from all entries in the current file.
 -@item C-c C-c c
 +@orgcmd{C-c C-c c,org-compute-property-at-point}
  Compute the property at point, using the operator and scope from the
  nearest column format definition.
  @end table
  @section Special properties
  @cindex properties, special
  
 -Special properties provide an alternative access method to Org mode
 +Special properties provide an alternative access method to Org-mode
  features, like the TODO state or the priority of an entry, discussed in the
  previous chapters.  This interface exists so that you can include
  these states in a column view (@pxref{Column view}), or to use them in
@@@ -4704,7 -4407,6 +4704,7 @@@ used as keys in the properties drawer
  @cindex property, special, TIMESTAMP
  @cindex property, special, TIMESTAMP_IA
  @cindex property, special, CLOCKSUM
 +@cindex property, special, BLOCKED
  @c guessing that ITEM is needed in this area; also, should this list be sorted?
  @cindex property, special, ITEM
  @example
@@@ -4720,7 -4422,6 +4720,7 @@@ TIMESTAMP    @r{The first keyword-less 
  TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
  CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
               @r{must be run first to compute the values.}
 +BLOCKED      @r{"t" if task is currently blocked by children or siblings}
  ITEM         @r{The content of the entry.}
  @end example
  
  To create sparse trees and special lists with selection based on properties,
  the same commands are used as for tag searches (@pxref{Tag searches}).
  @table @kbd
 -@kindex C-c \
 -@kindex C-c / m
 -@item C-c \
 -@itemx C-c / m
 +@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
  Create a sparse tree with all matching entries.  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
 +@orgcmd{C-c a m,org-tags-view}
  Create a global list of tag/property  matches from all agenda files.
  @xref{Matching tags and properties}.
 -@kindex C-c a M
 -@item C-c a M
 +@orgcmd{C-c a M,org-tags-view}
  @vindex org-tags-match-list-sublevels
  Create a global list of tag matches from all agenda files, but check
  only TODO items and force checking of subitems (see variable
@@@ -4752,11 -4458,12 +4752,11 @@@ There is also a special command for cre
  single property:
  
  @table @kbd
 -@kindex C-c / p
 -@item C-c / p
 +@orgkey{C-c / p}
  Create a sparse tree based on the value of a property.  This first
  prompts for the name of a property, and then for a value.  A sparse tree
  is created with all entries that define this property with the given
 -value.  If you enclose the value into curly braces, it is interpreted as
 +value.  If you enclose the value in curly braces, it is interpreted as
  a regular expression and matched against the property values.
  @end table
  
  @cindex inheritance, of properties
  
  @vindex org-use-property-inheritance
 -The outline structure of Org-mode documents lends itself for an
 +The outline structure of Org-mode documents lends itself to an
  inheritance model of properties: if the parent in a tree has a certain
 -property, the children can inherit this property.  Org mode does not
 +property, the children can inherit this property.  Org-mode does not
  turn this on by default, because it can slow down property searches
  significantly and is often not needed.  However, if you find inheritance
  useful, you can turn it on by setting the variable
  @code{org-use-property-inheritance}.  It may be set to @code{t} to make
  all properties inherited from the parent, to a list of properties
  that should be inherited, or to a regular expression that matches
 -inherited properties.
 +inherited properties.  If a property has the value @samp{nil}, this is
 +interpreted as an explicit undefine of the property, so that inheritance
 +search will stop at this value and return @code{nil}.
  
 -Org mode has a few properties for which inheritance is hard-coded, at
 +Org-mode has a few properties for which inheritance is hard-coded, at
  least for the special applications for which they are used:
  
  @cindex property, COLUMNS
@@@ -4810,7 -4515,7 +4810,7 @@@ subtree (@pxref{Tracking TODO state cha
  A great way to view and edit properties in an outline tree is
  @emph{column view}.  In column view, each outline node 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
 +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
@@@ -4886,15 -4591,15 +4886,15 @@@ optional.  The individual parts have th
  @var{property}        @r{The property that should be edited in this column.}
                  @r{Special properties representing meta data are allowed here}
                  @r{as well (@pxref{Special properties})}
 -(title)         @r{The header text for the column. If omitted, the}
 -                @r{property name is used.}
 +@var{title}     @r{The header text for the column. If omitted, the property}
 +                @r{name is used.}
  @{@var{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.}
                  @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
                  @{$@}       @r{Currency, short for @samp{+;%.2f}.}
 -                @{:@}       @r{Sum times, HH:MM:SS, plain numbers are hours.}
 +                @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
                  @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
                  @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
                  @{X%@}      @r{Checkbox status, @samp{[n%]}.}
                  @{:min@}    @r{Smallest time value in column.}
                  @{:max@}    @r{Largest time value.}
                  @{:mean@}   @r{Arithmetic mean of time values.}
 -                @{@@min@}   @r{Minimum age (in days/hours/mins/seconds).}
 -                @{@@max@}   @r{Maximum age (in days/hours/mins/seconds).}
 -                @{@@mean@}  @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
 +                @{@@min@}    @r{Minimum age (in days/hours/mins/seconds).}
 +                @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
 +                @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
 +                @{est+@}    @r{Add low-high estimates.}
  @end example
  
  @noindent
@@@ -4915,22 -4619,6 +4915,22 @@@ Be aware that you can only have one sum
  include. Subsequent columns referencing the same property will all display the
  same summary information.
  
 +The @code{est+} summary type requires further explanation.  It is used for
 +combining estimates, expressed as low-high ranges.  For example, instead
 +of estimating a particular task will take 5 days, you might estimate it as
 +5-6 days if you're fairly confident you know how much work is required, or
 +1-10 days if you don't really know what needs to be done.  Both ranges
 +average at 5.5 days, but the first represents a more predictable delivery.
 +
 +When combining a set of such estimates, simply adding the lows and highs
 +produces an unrealistically wide result. Instead, @code{est+} adds the
 +statistical mean and variance of the sub-tasks, generating a final estimate
 +from the sum.  For example, suppose you had ten tasks, each of which was
 +estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
 +of 5 to 20 days, representing what to expect if everything goes either
 +extremely well or extremely poorly. In contrast, @code{est+} estimates the
 +full job more realistically, at 10-15 days.
 +
  Here is an example for a complete columns definition, along with allowed
  values.
  
@@@ -4963,7 -4651,8 +4963,7 @@@ in the subtree
  
  @table @kbd
  @tsubheading{Turning column view on and off}
 -@kindex C-c C-x C-c
 -@item C-c C-x C-c
 +@orgcmd{C-c C-x C-c,org-columns}
  @vindex org-columns-default-format
  Turn on column view.  If the cursor is before the first headline in the file,
  column view is turned on for the entire file, using the @code{#+COLUMNS}
@@@ -4974,11 -4663,14 +4974,11 @@@ for the tree starting at the entry tha
  property.  If no such property 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 r
 -@item r
 +@orgcmd{r,org-columns-redo}
  Recreate the column view, to include recent changes made in the buffer.
 -@kindex g
 -@item g
 +@orgcmd{g,org-columns-redo}
  Same as @kbd{r}.
 -@kindex q
 -@item q
 +@orgcmd{q,org-columns-quit}
  Exit column view.
  @tsubheading{Editing values}
  @item @key{left} @key{right} @key{up} @key{down}
@@@ -4989,30 -4681,40 +4989,30 @@@ Move through the column view from fiel
  Switch to the next/previous allowed value of the field.  For this, you
  have to have specified allowed values for a property.
  @item 1..9,0
 -Directly select the nth allowed value, @kbd{0} selects the 10th value.
 -@kindex n
 -@kindex p
 -@itemx  n / p
 +Directly select the Nth allowed value, @kbd{0} selects the 10th value.
 +@orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
  Same as @kbd{S-@key{left}/@key{right}}
 -@kindex e
 -@item e
 +@orgcmd{e,org-columns-edit-value}
  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 C-c C-c
 -@item C-c C-c
 +@orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
  When there is a checkbox at point, toggle it.
 -@kindex v
 -@item v
 +@orgcmd{v,org-columns-show-value}
  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
 +@orgcmd{a,org-columns-edit-allowed}
  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 < / >
 +@orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
  Make the column narrower/wider by one character.
 -@kindex S-M-@key{right}
 -@item S-M-@key{right}
 +@orgcmd{S-M-@key{right},org-columns-new}
  Insert a new column, to the left of the current column.
 -@kindex S-M-@key{left}
 -@item S-M-@key{left}
 +@orgcmd{S-M-@key{left},org-columns-delete}
  Delete the current column.
  @end table
  
@@@ -5068,16 -4770,20 +5068,16 @@@ column view is @code{ITEM}
  The following commands insert or update the dynamic block:
  
  @table @kbd
 -@kindex C-c C-x i
 -@item C-c C-x i
 +@orgcmd{C-c C-x i,org-insert-columns-dblock}
  Insert a dynamic block capturing a column view.  You will be prompted
  for the scope or ID of the view.
 -@kindex C-c C-c
 -@item C-c C-c
 -@kindex C-c C-x C-u
 -@itemx C-c C-x C-u
 +@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
  Update dynamic block at point.  The cursor needs to be in the
  @code{#+BEGIN} line of the dynamic block.
 -@kindex C-u C-c C-x C-u
 -@item C-u C-c C-x C-u
 +@orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
  Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
 -you have several clock table blocks in a buffer.
 +you have several clock table blocks, column-capturing blocks or other dynamic
 +blocks in a buffer.
  @end table
  
  You can add formulas to the column view table and you may add plotting
@@@ -5104,7 -4810,7 +5104,7 @@@ features based on them.  For more infor
  property API}.
  
  @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
 -@chapter Dates and Times
 +@chapter Dates and times
  @cindex dates
  @cindex times
  @cindex timestamp
  
  To assist project planning, TODO items can be labeled with a date and/or
  a time.  The specially formatted string carrying the date and time
 -information is called a @emph{timestamp} in Org mode.  This may be a
 +information is called a @emph{timestamp} in Org-mode.  This may be a
  little confusing because timestamp is often used as indicating when
 -something was created or last changed.  However, in Org mode this term
 +something was created or last changed.  However, in Org-mode this term
  is used in a much wider sense.
  
  @menu
  * Creating timestamps::         Commands which insert timestamps
  * Deadlines and scheduling::    Planning your work
  * Clocking work time::          Tracking how long you spend on a task
 -* Resolving idle time::         Resolving time if you've been idle
  * Effort estimates::            Planning work effort in advance
  * Relative timer::              Notes with a running timer
 +* Countdown timer::             Starting a countdown timer for a task
  @end menu
  
  
  A timestamp is a specification of a date (possibly with a 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 inspired by the standard ISO 6801 date/time
 +12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
  format.  To use an alternative format, see @ref{Custom time format}.}.  A
  timestamp 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
@@@ -5170,7 -4876,7 +5170,7 @@@ following will show up in the agenda ev
  @end example
  
  @item Diary-style sexp entries
 -For more complex date specifications, Org mode supports using the
 +For more complex date specifications, Org-mode supports using the
  special sexp diary entries implemented in the Emacs calendar/diary
  package.  For example
  
@@@ -5209,18 -4915,20 +5209,18 @@@ angular ones.  These timestamps are ina
  @cindex creating timestamps
  @cindex timestamps, creating
  
 -For Org mode to recognize timestamps, they need to be in the specific
 +For Org-mode to recognize timestamps, they need to be in the specific
  format.  All commands listed below produce timestamps in the correct
  format.
  
  @table @kbd
 -@kindex C-c .
 -@item C-c .
 +@orgcmd{C-c .,org-time-stamp}
  Prompt for a date and insert a corresponding timestamp.  When the cursor is
  at an existing timestamp in the buffer, the command is used to modify this
  timestamp instead of inserting a new one.  When this command is used twice in
  succession, a time range is inserted.
  @c
 -@kindex C-c !
 -@item C-c !
 +@orgcmd{C-c !,org-time-stamp-inactive}
  Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
  an agenda entry.
  @c
@@@ -5233,23 -4941,32 +5233,23 @@@ Like @kbd{C-c .} and @kbd{C-c !}, but u
  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 <
 +@orgcmd{C-c <,org-date-from-calendar}
  Insert a timestamp corresponding to the cursor date in the Calendar.
  @c
 -@kindex C-c >
 -@item C-c >
 +@orgcmd{C-c >,org-goto-calendar}
  Access the Emacs calendar for the current date.  If there is a
  timestamp in the current line, go to the corresponding date
  instead.
  @c
 -@kindex C-c C-o
 -@item C-c C-o
 +@orgcmd{C-c C-o,org-open-at-point}
  Access the agenda for the date given by the timestamp or -range at
  point (@pxref{Weekly/daily agenda}).
  @c
 -@kindex S-@key{left}
 -@kindex S-@key{right}
 -@item S-@key{left}
 -@itemx S-@key{right}
 +@orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
  Change date at cursor by one day.  These key bindings conflict with
  shift-selection and related modes (@pxref{Conflicts}).
  @c
 -@kindex S-@key{up}
 -@kindex S-@key{down}
 -@item S-@key{up}
 -@itemx S-@key{down}
 +@orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
  Change the item under the cursor in a timestamp.  The cursor can be on a
  year, month, day, hour or minute.  When the timestamp contains a time range
  like @samp{15:30-16:30}, modifying the first time will also shift the second,
@@@ -5259,8 -4976,9 +5259,8 @@@ timestamp, these same keys modify the p
  (@pxref{Priorities}). The key bindings also conflict with shift-selection and
  related modes (@pxref{Conflicts}).
  @c
 -@kindex C-c C-y
 +@orgcmd{C-c C-y,org-evaluate-time-range}
  @cindex evaluate time range
 -@item C-c C-y
  Evaluate a time range by computing the difference between start and end.
  With a prefix argument, insert result after the time range (in a table: into
  the following column).
  
  
  @menu
 -* The date/time prompt::        How Org mode helps you entering date and time
 +* The date/time prompt::        How Org-mode helps you entering date and time
  * Custom time format::          Making dates look different
  @end menu
  
  @cindex time, reading in minibuffer
  
  @vindex org-read-date-prefer-future
 -When Org mode prompts for a date/time, the default is shown in default
 +When Org-mode prompts for a date/time, the default is shown in default
  date/time format, and the prompt therefore seems to ask for a specific
  format.  But it will in fact accept any string containing some date and/or
  time information, and it is really smart about interpreting your input.  You
  can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
 -copied from an email message.  Org mode will find whatever information is in
 +copied from an email message.  Org-mode will find whatever information is in
  there and derive anything you have not specified from the @emph{default date
  and time}.  The default is usually the current date and time, but when
  modifying an existing timestamp, or when entering the second stamp of a
  range, it is taken from the stamp in the buffer.  When filling in
 -information, Org mode assumes that most of the time you will want to enter a
 +information, Org-mode assumes that most of the time you will want to enter a
  date in the future: if you omit the month/year and the given day/month is
  @i{before} today, it will assume that you mean a future date@footnote{See the
  variable @code{org-read-date-prefer-future}.  You may set that variable to
@@@ -5297,16 -5015,14 +5297,16 @@@ tomorrow.}.  If the date has been autom
  time prompt will show this with @samp{(=>F).}
  
  For example, let's assume that today is @b{June 13, 2006}.  Here is how
 -various inputs will be interpreted, the items filled in by Org mode are
 +various inputs will be interpreted, the items filled in by Org-mode are
  in @b{bold}.
  
  @example
  3-2-5         --> 2003-02-05
 +2/5/3         --> 2003-02-05
  14            --> @b{2006}-@b{06}-14
  12            --> @b{2006}-@b{07}-12
 -Fri           --> nearest Friday (defaultdate or later)
 +2/5           --> @b{2007}-02-05
 +Fri           --> nearest Friday (default date or later)
  sep 15        --> @b{2006}-09-15
  feb 15        --> @b{2007}-02-15
  sep 12 9      --> 2009-09-12
@@@ -5323,7 -5039,7 +5323,7 @@@ letter ([dwmy]) to indicate change in d
  single plus or minus, the date is always relative to today.  With a
  double plus or minus, it is relative to the default date.  If instead of
  a single letter, you use the abbreviation of day name, the date will be
 -the nth such day.  E.g.
 +the Nth such day.  E.g.
  
  @example
  +0            --> today
@@@ -5341,16 -5057,6 +5341,16 @@@ The function understands English month 
  you want to use unabbreviated names and/or other languages, configure
  the variables @code{parse-time-months} and @code{parse-time-weekdays}.
  
 +You can specify a time range by giving start and end times or by giving a
 +start time and a duration (in HH:MM format). Use `-' or `-@{@}-' as the separator
 +in the former case and use '+' as the separator in the latter case. E.g.
 +
 +@example
 +11am-1:15pm    --> 11:00-13:15
 +11am--1:15pm   --> same as above
 +11am+2:15      --> same as above
 +@end example
 +
  @cindex calendar, for selecting date
  @vindex org-popup-calendar-for-date-prompt
  Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
@@@ -5363,8 -5069,6 +5363,8 @@@ from the minibuffer
  
  @kindex <
  @kindex >
 +@kindex M-v
 +@kindex C-v
  @kindex mouse-1
  @kindex S-@key{right}
  @kindex S-@key{left}
  @kindex M-S-@key{left}
  @kindex @key{RET}
  @example
 -> / <          @r{Scroll calendar forward/backward by one month.}
 +@key{RET}           @r{Choose date at cursor in calendar.}
  mouse-1        @r{Select date by clicking on it.}
  S-@key{right}/@key{left}     @r{One day forward/backward.}
  S-@key{down}/@key{up}     @r{One week forward/backward.}
  M-S-@key{right}/@key{left}   @r{One month forward/backward.}
 -@key{RET}           @r{Choose date in calendar.}
 +> / <          @r{Scroll calendar forward/backward by one month.}
 +M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
  @end example
  
  @vindex org-read-date-display-live
@@@ -5399,19 -5102,20 +5399,19 @@@ minibuffer@footnote{If you find this di
  
  @vindex org-display-custom-times
  @vindex org-time-stamp-custom-formats
 -Org mode uses the standard ISO notation for dates and times as it is
 +Org-mode uses the standard ISO notation for dates and times as it is
  defined in ISO 8601.  If you cannot get used to this and require another
  representation of date and time to keep you happy, you can get it by
  customizing the variables @code{org-display-custom-times} and
  @code{org-time-stamp-custom-formats}.
  
  @table @kbd
 -@kindex C-c C-x C-t
 -@item C-c C-x C-t
 +@orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
  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
 +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:
@@@ -5427,7 -5131,7 +5427,7 @@@ just like @kbd{S-@key{left}/@key{right}
  time will be changed by one minute.
  @item
  If the timestamp contains a range of clock times or a repeater, these
 -will not be overlayed, but remain in the buffer as they were.
 +will not be overlaid, but remain in the buffer as they were.
  @item
  When you delete a timestamp character-by-character, it will only
  disappear from the buffer after @emph{all} (invisible) characters
@@@ -5479,8 -5183,8 +5479,8 @@@ The headline will be listed under the g
  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.
 +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.
  @end example
  
  @noindent
 -@b{Important:} Scheduling an item in Org mode should @i{not} be
 +@b{Important:} Scheduling an item in Org-mode should @i{not} be
  understood in the same way that we understand @i{scheduling a meeting}.
  Setting a date for a meeting is just a simple appointment, you should
  mark this entry with a simple plain timestamp, to get this item shown
  on the date where it applies.  This is a frequent misunderstanding by
 -Org users.  In Org mode, @i{scheduling} means setting a date when you
 +Org users.  In Org-mode, @i{scheduling} means setting a date when you
  want to start working on an action item.
  @end table
  
  You may use timestamps with repeaters in scheduling and deadline
 -entries.  Org mode will issue early and late warnings based on the
 +entries.  Org-mode will issue early and late warnings based on the
  assumption that the timestamp represents the @i{nearest instance} of
  the repeater.  However, the use of diary sexp entries like
  @c
  @code{<%%(diary-float t 42)>}
  @c
 -in scheduling and deadline timestamps is limited.  Org mode does not
 +in scheduling and deadline timestamps is limited.  Org-mode does not
  know enough about the internals of each sexp function to issue early and
  late warnings.  However, it will show the item on each day where the
  sexp entry matches.
@@@ -5522,7 -5226,8 +5522,7 @@@ an item
  
  @table @kbd
  @c
 -@kindex C-c C-d
 -@item C-c C-d
 +@orgcmd{C-c C-d,org-deadline}
  Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
  in the line directly following the headline.  When called with a prefix arg,
  an existing deadline will be removed from the entry.  Depending on the
@@@ -5532,7 -5237,8 +5532,7 @@@ and @code{nologredeadline}}, a note wil
  deadline.
  @c FIXME Any CLOSED timestamp will be removed.????????
  @c
 -@kindex C-c C-s
 -@item C-c C-s
 +@orgcmd{C-c C-s,org-schedule}
  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.  When called with a prefix argument, remove the scheduling
@@@ -5542,16 -5248,18 +5542,16 @@@ keywords @code{logredeadline}, @code{lo
  @code{nologredeadline}}, a note will be taken when changing an existing
  scheduling time.
  @c
 -@kindex C-c C-x C-k
 +@orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
  @kindex k a
  @kindex k s
 -@item C-c C-x C-k
  Mark the current entry for agenda action.  After you have marked the entry
  like this, you can open the agenda or the calendar to find an appropriate
  date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
  schedule the marked item.
  @c
 -@kindex C-c / d
 +@orgcmd{C-c / d,org-check-deadlines}
  @cindex sparse tree, for deadlines
 -@item C-c / d
  @vindex org-deadline-warning-days
  Create a sparse tree with all deadlines that are either past-due, or
  which will become due within @code{org-deadline-warning-days}.
@@@ -5559,10 -5267,12 +5559,10 @@@ With @kbd{C-u} prefix, show all deadlin
  prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
  all deadlines due tomorrow.
  @c
 -@kindex C-c / b
 -@item C-c / b
 +@orgcmd{C-c / b,org-check-before-date}
  Sparse tree for deadlines and scheduled items before a given date.
  @c
 -@kindex C-c / a
 -@item C-c / a
 +@orgcmd{C-c / a,org-check-after-date}
  Sparse tree for deadlines and scheduled items after a given date.
  @end table
  
  @cindex tasks, repeated
  @cindex repeated tasks
  
 -Some tasks need to be repeated again and again.  Org mode helps to
 +Some tasks need to be repeated again and again.  Org-mode helps to
  organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
  or plain timestamp.  In the following example
  @example
@@@ -5585,21 -5295,17 +5585,21 @@@ from that time.  If you need both a rep
  a deadline entry, the repeater should come first and the warning period last:
  @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
  
 -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
 -timestamp 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:
 +@vindex org-todo-repeat-to-state
 +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 timestamp by the repeater interval, and
 +immediately set the entry state back to TODO@footnote{In fact, the target
 +state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
 +the variable @code{org-todo-repeat-to-state}.  If neither of these is
 +specified, the target state defaults to the first state of the TODO state
 +sequence.}.  In the example above, setting the state to DONE would actually
 +switch the date like this:
  
  @example
  ** TODO Pay the rent
@@@ -5621,11 -5327,11 +5621,11 @@@ With the @samp{+1m} cookie, the date sh
  month.  So if you have not paid the rent for three months, marking this
  entry DONE will still keep it as an overdue deadline.  Depending on the
  task, this may not be the best way to handle it.  For example, if you
 -forgot to call you father for 3 weeks, it does not make sense to call
 +forgot to call your father for 3 weeks, it does not make sense to call
  him 3 times in a single day to make up for it.  Finally, there are tasks
  like changing batteries which should always repeat a certain time
 -@i{after} the last time you did it.  For these tasks, Org mode has
 -special repeaters markers with @samp{++} and @samp{.+}.  For example:
 +@i{after} the last time you did it.  For these tasks, Org-mode has
 +special repeaters  @samp{++} and @samp{.+}.  For example:
  
  @example
  ** TODO Call Father
@@@ -5648,12 -5354,10 +5648,12 @@@ subtree, with dates shifted in each cop
  created for this purpose, it is described in @ref{Structure editing}.
  
  
 -@node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
 +@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
  @section Clocking work time
 +@cindex clocking time
 +@cindex time clocking
  
 -Org mode allows you to clock the time you spend on specific tasks in a
 +Org-mode allows you to clock the time you spend 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
@@@ -5672,17 -5376,9 +5672,17 @@@ on this task while outside Emacs, use @
  will be found (@pxref{Resolving idle time}) and you will be prompted about
  what to do with it.
  
 +@menu
 +* Clocking commands::           Starting and stopping a clock
 +* The clock table::             Detailed reports
 +* Resolving idle time::         Resolving time when you've been idle
 +@end menu
 +
 +@node Clocking commands, The clock table, Clocking work time, Clocking work time
 +@subsection Clocking commands
 +
  @table @kbd
 -@kindex C-c C-x C-i
 -@item C-c C-x C-i
 +@orgcmd{C-c C-x C-i,org-clock-in}
  @vindex org-clock-into-drawer
  Start the clock on the current item (clock-in).  This inserts the CLOCK
  keyword together with a timestamp.  If this is not the first clocking of
@@@ -5712,8 -5408,8 +5712,8 @@@ show all time clocked on this tasks tod
  @code{auto} which is the default@footnote{See also the variable
  @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
  mode line entry will pop up a menu with clocking options.
 -@kindex C-c C-x C-o
 -@item C-c C-x C-o
 +@c
 +@orgcmd{C-c C-x C-o,org-clock-out}
  @vindex org-log-note-clock-out
  Stop the clock (clock-out).  This inserts another timestamp at the same
  location where the clock was last started.  It also directly computes
@@@ -5722,24 -5418,30 +5722,24 @@@ HH:MM}.  See the variable @code{org-log
  possibility to record an additional note together with the clock-out
  timestamp@footnote{The corresponding in-buffer setting is:
  @code{#+STARTUP: lognoteclock-out}}.
 -@kindex C-c C-x C-e
 -@item C-c C-x C-e
 +@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
  Update the effort estimate for the current clock task.
  @kindex C-c C-y
  @kindex C-c C-c
 -@item C-c C-y @ @ @r{or}@ @ C-c C-c
 +@orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
  Recompute the time interval after changing one of the timestamps.  This
  is only necessary if you edit the timestamps 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
 +@orgcmd{C-c C-t,org-todo}
  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
 +@orgcmd{C-c C-x C-x,org-clock-cancel}
  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-j
 -@item C-c C-x C-j
 -Jump to the entry that contains the currently running clock.  With a
 -@kbd{C-u} prefix arg, select the target task from a list of recently clocked
 -tasks.
 -@kindex C-c C-x C-d
 -@item C-c C-x C-d
 +@orgcmd{C-c C-x C-j,org-clock-goto}
 +Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
 +prefix arg, select the target task from a list of recently clocked tasks.
 +@orgcmd{C-c C-x C-d,org-clock-display}
  @vindex org-remove-highlights-with-change
  Display time summaries for each subtree in the current buffer.  This
  puts overlays at the end of each headline, showing the total time
@@@ -5747,60 -5449,24 +5747,60 @@@ recorded under that heading, including 
  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
 +@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 The clock table, Resolving idle time, Clocking commands, Clocking work time
 +@subsection The clock table
 +@cindex clocktable, dynamic block
 +@cindex report, of clocked time
 +
 +Org mode can produce quite complex reports based on the time clocking
 +information.  Such a report is called a @emph{clock table}, because it is
 +formatted as one or several Org tables.
 +
 +@table @kbd
 +@orgcmd{C-c C-x C-r,org-clock-report}
  Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
  report as an Org-mode table into the current file.  When the cursor is
  at an existing clock table, just update it.  When called with a prefix
  argument, jump to the first clock report in the current document and
  update it.
 -@cindex #+BEGIN, clocktable
 -@example
 -#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
 -#+END: clocktable
 +@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
 +Update dynamic block at point.  The cursor needs to be in the
 +@code{#+BEGIN} line of the dynamic block.
 +@orgkey{C-u C-c C-x C-u}
 +Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
 +you have several clock table blocks in a buffer.
 +@orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
 +Shift the current @code{:block} interval and update the table.  The cursor
 +needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
 +@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
 +@end table
 +
 +
 +Here is an example of the frame for a clock table as it is inserted into the
 +buffer with the @kbd{C-c C-x C-r} command:
 +
 +@cindex #+BEGIN, clocktable
 +@example
 +#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
 +#+END: clocktable
  @end example
  @noindent
 -If such a block already exists at point, its content is replaced by the
 -new table.  The @samp{BEGIN} line can specify options:
 +@vindex org-clocktable-defaults
 +The @samp{BEGIN} line and specify a number of options to define the scope,
 +structure, and formatting of the report.  Defaults for all these options can
 +be configured in the variable @code{org-clocktable-defaults}.
 +
 +@noindent First there are options that determine which clock entries are to
 +be selected:
  @example
  :maxlevel    @r{Maximum level depth to which times are listed in the table.}
 -:emphasize   @r{When @code{t}, emphasize level one and level two items.}
 +             @r{Clocks at deeper levels will be summed into the upper level.}
  :scope       @r{The scope to consider.  This can be any of the following:}
               nil        @r{the current buffer or narrowed region}
               file       @r{the full current buffer}
               2007-12-31    @r{New year eve 2007}
               2007-12       @r{December 2007}
               2007-W50      @r{ISO-week 50 in 2007}
 +             2007-Q2       @r{2nd quarter in 2007}
               2007          @r{the year 2007}
               today, yesterday, today-@var{N}          @r{a relative day}
               thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
  :tend        @r{A time string specifying when to stop considering times.}
  :step        @r{@code{week} or @code{day}, to split the table into chunks.}
               @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
 +:stepskip0   @r{Do not show steps that have zero time.}
 +:fileskip0   @r{Do not show table sections from files which did not contribute.}
 +:tags        @r{A tags match to select entries that should contribute}.
 +@end example
 +
 +Then there are options which determine the formatting of the table.  There
 +options are interpreted by the function @code{org-clocktable-write-default},
 +but you can specify your own function using the @code{:formatter} parameter.
 +@example
 +:emphasize   @r{When @code{t}, emphasize level one and level two items.}
  :link        @r{Link the item headlines in the table to their origins.}
 +:narrow      @r{An integer to limit the width of the headline column in}
 +             @r{the org table.  If you write it like @samp{50!}, then the}
 +             @r{headline will also be shortened in export.}
 +:indent      @r{Indent each headline field according to its level.}
 +:tcolumns    @r{Number of columns to be used for times.  If this is smaller}
 +             @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
 +:level       @r{Should a level number column be included?}
 +:compact     @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
 +             @r{All are overwritten except if there is an explicit @code{:narrow}}
 +:timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
 +             @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
  :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
               @r{As a special case, @samp{:formula %} adds a column with % time.}
 -             @r{If you do not specify a formula here, any existing formula.}
 +             @r{If you do not specify a formula here, any existing formula}
               @r{below the clock table will survive updates and be evaluated.}
 -:timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
 -             @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
 +:formatter   @r{A function to format clock data and insert it into the buffer.}
  @end example
  To get a clock summary of the current level 1 tree, for the current
  day, you could write
@@@ -5876,15 -5521,31 +5876,15 @@@ A summary of the current subtree with 
  #+BEGIN: clocktable :scope subtree :link t :formula %
  #+END: clocktable
  @end example
 -@kindex C-c C-c
 -@item C-c C-c
 -@kindex C-c C-x C-u
 -@itemx C-c C-x C-u
 -Update dynamic block at point.  The cursor needs to be in the
 -@code{#+BEGIN} line of the dynamic block.
 -@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 clock table blocks in a buffer.
 -@kindex S-@key{left}
 -@kindex S-@key{right}
 -@item S-@key{left}
 -@itemx S-@key{right}
 -Shift the current @code{:block} interval and update the table.  The cursor
 -needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
 -@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
 -@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.
 +A horizontally compact representation of everything clocked during last week
 +would be
 +@example
 +#+BEGIN: clocktable :scope agenda :block lastweek :compact t
 +#+END: clocktable
 +@end example
  
 -@node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
 -@section Resolving idle time
 +@node Resolving idle time,  , The clock table, Clocking work time
 +@subsection Resolving idle time
  @cindex resolve idle time
  
  @cindex idle, resolve, dangling
@@@ -5924,8 -5585,8 +5924,8 @@@ use the shift key and press @kbd{S}.  R
  leave you clocked out, no matter which option you choose.
  @item C
  To cancel the clock altogether, use @kbd{C}.  Note that if instead of
 -cancelling you subtract the away time, and the resulting clock amount is less
 -than a minute, the clock will still be cancelled rather than clutter up the
 +canceling you subtract the away time, and the resulting clock amount is less
 +than a minute, the clock will still be canceled rather than clutter up the
  log with an empty entry.
  @end table
  
@@@ -5945,13 -5606,13 +5945,13 @@@ If you restart Emacs and clock into an
  dangling clock which was never clocked out from your last session.  Using
  that clock's starting time as the beginning of the unaccounted-for period,
  Org will ask how you want to resolve that time.  The logic and behavior is
 -identical to dealing with away time due to idleness, it's just happening due
 +identical to dealing with away time due to idleness; it's just happening due
  to a recovery event rather than a set amount of idle time.
  
  You can also check all the files visited by your Org agenda for dangling
  clocks at any time using @kbd{M-x org-resolve-clocks}.
  
 -@node Effort estimates, Relative timer, Resolving idle time, Dates and Times
 +@node Effort estimates, Relative timer, Clocking work time, Dates and Times
  @section Effort estimates
  @cindex effort estimates
  
@@@ -5967,11 -5628,13 +5967,11 @@@ used with the variable @code{org-effort
  for an entry with the following commands:
  
  @table @kbd
 -@kindex C-c C-x e
 -@item C-c C-x e
 +@orgcmd{C-c C-x e,org-set-effort}
  Set the effort estimate for the current entry.  With a numeric prefix
 -argument, set it to the NTH allowed value (see below).  This command is also
 +argument, set it to the Nth allowed value (see below).  This command is also
  accessible from the agenda with the @kbd{e} key.
 -@kindex C-c C-x C-e
 -@item C-c C-x C-e
 +@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
  Modify the effort estimate of the item currently being clocked.
  @end table
  
@@@ -6014,7 -5677,7 +6014,7 @@@ with the @kbd{/} key in the agenda (@px
  these estimates defined consistently, two or three key presses will narrow
  down the list to stuff that fits into an available time slot.
  
 -@node Relative timer,  , Effort estimates, Dates and Times
 +@node Relative timer, Countdown timer, Effort estimates, Dates and Times
  @section Taking notes with a relative timer
  @cindex relative timer
  
@@@ -6023,356 -5686,194 +6023,356 @@@ be useful to have access to times relat
  such a relative timer and make it easy to create timed notes.
  
  @table @kbd
 -@kindex C-c C-x .
 -@item C-c C-x .
 +@orgcmd{C-c C-x .,org-timer}
  Insert a relative time into the buffer.  The first time you use this, the
  timer will be started.  When called with a prefix argument, the timer is
  restarted.
 -@kindex C-c C-x -
 -@item C-c C-x -
 +@orgcmd{C-c C-x -,org-timer-item}
  Insert a description list item with the current relative time.  With a prefix
  argument, first reset the timer to 0.
 -@kindex M-@key{RET}
 -@item M-@key{RET}
 +@orgcmd{M-@key{RET},org-insert-heading}
  Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
  new timer items.
 +@c for key sequences with a comma, command name macros fail :(
  @kindex C-c C-x ,
  @item C-c C-x ,
 -Pause the timer, or continue it if it is already paused.
 +Pause the timer, or continue it if it is already paused
 +(@command{org-timer-pause-or-continue}).
  @c removed the sentence because it is redundant to the following item
  @kindex C-u C-c C-x ,
  @item C-u C-c C-x ,
  Stop the timer.  After this, you can only start a new timer, not continue the
  old one.  This command also removes the timer from the mode line.
 -@kindex C-c C-x 0
 -@item C-c C-x 0
 +@orgcmd{C-c C-x 0,org-timer-start}
  Reset the timer without inserting anything into the buffer.  By default, the
  timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
  specific starting offset.  The user is prompted for the offset, with a
  default taken from a timer string at point, if any, So this can be used to
  restart taking notes after a break in the process.  When called with a double
 -prefix argument @kbd{C-c C-u}, change all timer strings in the active region
 +prefix argument @kbd{C-u C-u}, change all timer strings in the active region
  by a certain amount.  This can be used to fix timer strings if the timer was
  not started at exactly the right moment.
  @end table
  
 +@node Countdown timer,  , Relative timer, Dates and Times
 +@section Countdown timer
 +@cindex Countdown timer
 +@kindex C-c C-x ;
 +@kindex ;
 +
 +Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
 +timer.  Use @key{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
 +
 +@code{org-timer-set-timer} prompts the user for a duration and displays a
 +countdown timer in the modeline.  @code{org-timer-default-timer} sets the
 +default countdown value.  Giving a prefix numeric argument overrides this
 +default value.
 +
  @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
  @chapter Capture - Refile - Archive
  @cindex capture
  
  An important part of any organization system is the ability to quickly
  capture new ideas and tasks, and to associate reference material with them.
 -Org uses the @file{remember.el} package to create tasks, and stores files
 +Org does this using a process called @i{capture}.  It also can store files
  related to a task (@i{attachments}) in a special directory.  Once in the
  system, tasks and projects need to be moved around.  Moving completed project
  trees to an archive file keeps the system compact and fast.
  
  @menu
 -* Remember::                    Capture new tasks/ideas with little interruption
 -* Attachments::                 Add files to tasks.
 +* Capture::                     Capturing new stuff
 +* Attachments::                 Add files to tasks
  * RSS Feeds::                   Getting input from RSS feeds
  * Protocols::                   External (e.g. Browser) access to Emacs and Org
  * Refiling notes::              Moving a tree from one place to another
  * Archiving::                   What to do with finished projects
  @end menu
  
 -@node Remember, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
 -@section Remember
 -@cindex @file{remember.el}
 +@node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
 +@section Capture
 +@cindex capture
  
 -The Remember package by John Wiegley lets you store quick notes with little
 -interruption of your work flow.  It is an excellent way to add new notes and
 -tasks to Org files.  The @code{remember.el} package is part of Emacs 23, not
 -Emacs 22.  See @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for
 -more information.
 +Org's method for capturing new items is heavily inspired by John Wiegley
 +excellent remember package.  Up to version 6.36 Org used a special setup
 +for @file{remember.el}.  @file{org-remember.el} is still part of Org-mode for
 +backward compatibility with existing setups.  You can find the documentation
 +for org-remember at @url{http://orgmode.org/org-remember.pdf}.
 +
 +The new capturing setup described here is preferred and should be used by new
 +users.  To convert your @code{org-remember-templates}, run the command
 +@example
 +@kbd{M-x org-capture-import-remember-templates @key{RET}}
 +@end example
 +@noindent and then customize the new variable with @kbd{M-x
 +customize-variable org-capture-templates}, check the result, and save the
 +customization.  You can then use both remember and capture until
 +you are familiar with the new mechanism.
  
 -Org significantly expands the possibilities of Remember: you may define
 -templates for different note types, and associate target files and headlines
 -with specific templates.  It also allows you to select the location where a
 -note should be stored interactively, on the fly.
 +Capture lets you quickly store notes with little interruption of your work
 +flow.  The basic process of capturing is very similar to remember, but Org
 +does enhance it with templates and more.
  
  @menu
 -* Setting up Remember for Org::  Some code for .emacs to get things going
 -* Remember templates::          Define the outline of different note types
 -* Storing notes::               Directly get the note to where it belongs
 +* Setting up capture::          Where notes will be stored
 +* Using capture::               Commands to invoke and terminate capture
 +* Capture templates::           Define the outline of different note types
  @end menu
  
 -@node Setting up Remember for Org, Remember templates, Remember, Remember
 -@subsection Setting up Remember for Org
 +@node Setting up capture, Using capture, Capture, Capture
 +@subsection Setting up capture
  
 -The following customization will tell Remember to use Org files as
 -target, and to create annotations compatible with Org links.
 +The following customization sets a default target file for notes, and defines
 +a global key@footnote{Please select your own key, @kbd{C-c c} is only a
 +suggestion.}  for capturing new material.
  
 +@vindex org-default-notes-file
  @example
 -(org-remember-insinuate)
 -(setq org-directory "~/path/to/my/orgfiles/")
  (setq org-default-notes-file (concat org-directory "/notes.org"))
 -(define-key global-map "\C-cr" 'org-remember)
 +(define-key global-map "\C-cc" 'org-capture)
  @end example
  
 -@noindent
 -The last line binds the command @code{org-remember} to a global
 -key@footnote{Please select your own key, @kbd{C-c r} is only a
 -suggestion.}.  @code{org-remember} basically just calls Remember,
 -but it makes a few things easier: if there is an active region, it will
 -automatically copy the region into the Remember buffer.  It also allows
 -to jump to the buffer and location where Remember notes are being
 -stored: just call @code{org-remember} with a prefix argument.  If you
 -use two prefix arguments, Org jumps to the location where the last
 -remember note was stored.
 -
 -The Remember buffer will actually use @code{org-mode} as its major mode, so
 -that all editing features of Org mode are available.  In addition to this, a
 -minor mode @code{org-remember-mode} is turned on, for the single purpose that
 -you can use its keymap @code{org-remember-mode-map} to overwrite some of
 -Org mode's key bindings.
 -
 -You can also call @code{org-remember} in a special way from the agenda,
 -using the @kbd{k r} key combination.  With this access, any timestamps
 -inserted by the selected Remember template (see below) will default to
 -the cursor date in the agenda, rather than to the current date.
 -
 -@node Remember templates, Storing notes, Setting up Remember for Org, Remember
 -@subsection Remember templates
 -@cindex templates, for Remember
 -
 -In combination with Org, you can use templates to generate
 -different types of Remember notes.  For example, if you would like
 -to use one template to create general TODO entries, another one for
 -journal entries, and a third one for collecting random ideas, you could
 -use:
 -
 -@example
 -(setq org-remember-templates
 - '(("Todo" ?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org" "Tasks")
 -   ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")
 -   ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
 -@end example
 -
 -@vindex org-remember-default-headline
 -@vindex org-directory
 -@noindent In these entries, the first string is just a name, and the
 -character specifies how to select the template.  It is useful if the
 -character is also the first letter of the name.  The next 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 (if not
 -present or @code{nil}) defaults to @code{org-default-notes-file}, the heading
 -to @code{org-remember-default-headline}.  If the file name is not an absolute
 -path, it will be interpreted relative to @code{org-directory}.
 -
 -The heading can also be the symbols @code{top} or @code{bottom} to send notes
 -as level 1 entries to the beginning or end of the file, respectively.  It may
 -also be the symbol @code{date-tree}.  Then, a tree with year on level 1,
 -month on level 2 and day on level three will be build in the file, and the
 -entry will be filed into the tree under the current date@footnote{If the file
 -contains an entry with a @code{DATE_TREE} property, the entire date tree will
 -be build under that entry.}
 -
 -An optional sixth element specifies the contexts in which the user can select
 -the template.  This element can be a list of major modes or a function.
 -@code{org-remember} will first check whether the function returns @code{t} or
 -if we are in any of the listed major modes, and exclude templates for which
 -this condition is not fulfilled.  Templates that do not specify this element
 -at all, or that use @code{nil} or @code{t} as a value will always be
 -selectable.
 -
 -So for example:
 -
 -@example
 -(setq org-remember-templates
 - '(("Bug" ?b "* BUG %?\n  %i\n  %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
 -   ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org" "X" my-check)
 -   ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
 -@end example
 +@node Using capture, Capture templates, Setting up capture, Capture
 +@subsection Using capture
  
 -@noindent
 -The first template will only be available when invoking @code{org-remember}
 -from an buffer in @code{emacs-lisp-mode}.  The second template will only be
 -available when the function @code{my-check} returns @code{t}.  The third
 -template will be proposed in any context.
 +@table @kbd
 +@orgcmd{C-c c,org-capture}
 +Call the command @code{org-capture}.  Note that this keybinding is global and
 +not active by default - you need to install it.  If you have templates
 +defined @pxref{Capture templates}, it will offer these templates for
 +selection or use a new Org outline node as the default template.  It will
 +insert the template into the target file and switch to an indirect buffer
 +narrowed to this new node.  You may then insert the information you want.
 +
 +@orgcmd{C-c C-c,org-capture-finalize}
 +Once you have finished entering information into the capture buffer, @kbd{C-c
 +C-c} will return you to the window configuration before the capture process,
 +so that you can resume your work without further distraction.  When called
 +with a prefix arg, finalize and then jump to the captured item.
 +
 +@orgcmd{C-c C-w,org-capture-refile}
 +Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
 +a different place.  Please realize that this is a normal refiling command
 +that will be executed---so the cursor position at the moment you run this
 +command is important.  If you have inserted a tree with a parent and
 +children, first move the cursor back to the parent.  Any prefix argument
 +given to this command will be passed on to the @code{org-refile} command.
 +
 +@orgcmd{C-c C-k,org-capture-kill}
 +Abort the capture process and return to the previous state.
 +
 +@end table
 +
 +You can also call @code{org-capture} in a special way from the agenda, using
 +the @kbd{k c} key combination.  With this access, any timestamps inserted by
 +the selected capture template will default to the cursor date in the agenda,
 +rather than to the current date.
 +
 +To find the locations of the last stored capture, use @code{org-capture} with
 +prefix commands:
 +
 +@table @kbd
 +@orgkey{C-u C-c c}
 +Visit the target location of a cpature template.  You get to select the
 +template in the usual way.
 +@orgkey{C-u C-u C-c c}
 +Visit the last stored capture item in its buffer.
 +@end table
  
 -When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
 -something, Org will prompt for a key to select the template (if you have
 -more than one template) and then prepare the buffer like
 +@node Capture templates,  , Using capture, Capture
 +@subsection Capture templates
 +@cindex templates, for Capture
 +
 +You can use templates for different types of capture items, and
 +for different target locations.  The easiest way to create such templates is
 +through the customize interface.
 +
 +@table @kbd
 +@orgkey{C-c c C}
 +Customize the variable @code{org-capture-templates}.
 +@end table
 +
 +Before we give the formal description of template definitions, let's look at
 +an example.  Say you would like to use one template to create general TODO
 +entries, and you want to put these entries under the heading @samp{Tasks} in
 +your file @file{~/org/gtd.org}.  Also, a date tree in the file
 +@file{journal.org} should capture journal entries.  A possible configuration
 +would look like:
 +
 +@example
 +(setq org-capture-templates
 + '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
 +        "* TODO %?\n  %i\n  %a")
 +   ("j" "Journal" entry (file+datetree "~/org/journal.org")
 +        "* %?\nEntered on %U\n  %i\n  %a")))
 +@end example
 +
 +@noindent If you then press @kbd{C-c c t}, Org will prepare the template
 +for you like this:
  @example
  * TODO
 -  [[file:@var{link to where you called remember}]]
 +  [[file:@var{link to where you initiated capture}]]
  @end example
  
  @noindent
 -During expansion of the template, special @kbd{%}-escapes@footnote{If you
 -need one of these sequences literally, escape the @kbd{%} with a backslash.}
 -allow dynamic insertion of content:
 +During expansion of the template, @code{%a} has been replaced by a link to
 +the location from where you called the capture command.  This can be
 +extremely useful for deriving tasks from emails, for example.  You fill in
 +the task definition, press @code{C-c C-c} and Org returns you to the same
 +place where you started the capture process.
 +
 +
 +@menu
 +* Template elements::           What is needed for a complete template entry
 +* Template expansion::          Filling in information about time and context
 +@end menu
 +
 +@node Template elements, Template expansion, Capture templates, Capture templates
 +@subsubsection Template elements
 +
 +Now lets look at the elements of a template definition.  Each entry in
 +@code{org-capture-templates} is a list with the following items: 
 +
 +@table @var
 +@item keys
 +The keys that will select the template, as a string, characters
 +only, for example @code{"a"} for a template to be selected with a
 +single key, or @code{"bt"} for selection with two keys.  When using
 +several keys, keys using the same prefix key must be sequential 
 +in the list and preceded by a 2-element entry explaining the
 +prefix key, for example
  @example
 +         ("b" "Templates for marking stuff to buy")
 +@end example
 +@noindent If you do not define a template for the @kbd{C} key, this key will
 +be used to open the customize buffer for this complex variable.
 +
 +@item description
 +A short string describing the template, which will be shown during
 +selection.
 +
 +@item type
 +The type of entry, a symbol.  Valid values are:
 +@table @code
 +@item entry
 +An Org-mode node, with a headline. Will be filed as the child of the
 +target entry or as a top-level entry.  The target file should be an Org-mode
 +file.
 +@item item
 +A plain list item, placed in the first plain  list at the target
 +location.  Again the target file should be an Org file.
 +@item checkitem
 +A checkbox item.  This only differs from the plain list item by the
 +default template.
 +@item table-line
 +a new line in the first table at the target location.  Where exactly the
 +line will be inserted depends on the properties @code{:prepend} and
 +@code{:table-line-pos} (see below).
 +@item plain
 +Text to be inserted as it is.
 +@end table
 +
 +@item target
 +@vindex org-default-notes-file
 +Specification of where the captured item should be placed.  In Org-mode
 +files, targets usually define a node.  Entries will become children of this
 +node.  Other types will be added to the table or list in the body of this
 +node.  Most target specifications contain a file name.  If that file name is
 +the empty string, it defaults to @code{org-default-notes-file}.
 +
 +Valid values are:
 +@table @code
 +@item (file "path/to/file")
 +Text will be placed at the beginning or end of that file.
 +
 +@item (id "id of existing org entry")
 +Filing as child of this entry, or in the body of the entry.
 +
 +@item (file+headline "path/to/file" "node headline")
 +Fast configuration if the target heading is unique in the file.
 +
 +@item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
 +For non-unique headings, the full path is safer.
 +
 +@item (file+regexp  "path/to/file" "regexp to find location")
 +Use a regular expression to position the cursor.
 +
 +@item (file+datetree "path/to/file")
 +Will create a heading in a date tree for today's date.
 +
 +@item (file+datetree+prompt "path/to/file")
 +Will create a heading in a date tree, but will prompt for the date.
 +
 +@item (file+function "path/to/file" function-finding-location)
 +A function to find the right location in the file.
 +
 +@item (clock)
 +File to the entry that is currently being clocked.
 +
 +@item (function function-finding-location)
 +Most general way, write your own function to find both
 +file and location.
 +@end table
 +
 +@item template
 +The template for creating the capture item.  If you leave this empty, an
 +appropriate default template will be used.  Otherwise this is a string with
 +escape codes, which will be replaced depending on time and context of the
 +capture call.  The string with escapes may be loaded from a template file,
 +using the special syntax @code{(file "path/to/template")}.  See below for
 +more details.
 +
 +@item properties
 +The rest of the entry is a property list of additional options.
 +Recognized properties are:
 +@table @code
 +@item :prepend
 +Normally new captured information will be appended at
 +the target location (last child, last table line, last list item...).
 +Setting this property will change that.
 +
 +@item :immediate-finish
 +When set, do not offer to edit the information, just
 +file it away immediately.  This makes sense if the template only needs
 +information that can be added automatically.
 +
 +@item :empty-lines
 +Set this to the number of lines to insert
 +before and after the new item.  Default 0, only common other value is 1.
 +
 +@item :clock-in
 +Start the clock in this item.
 +
 +@item :clock-resume
 +If starting the capture interrupted a clock, restart that clock when finished
 +with the capture.
 +
 +@item :unnarrowed
 +Do not narrow the target buffer, simply show the full buffer.  Default is to
 +narrow it so that you only see the new material.
 +
 +@item :kill-buffer
 +If the target file was not yet visited when capture was invoked, kill the
 +buffer again after capture is completed.
 +@end table
 +@end table
 +
 +@node Template expansion,  , Template elements, Capture templates
 +@subsubsection Template expansion
 +
 +In the template itself, special @kbd{%}-escapes@footnote{If you need one of
 +these sequences literally, escape the @kbd{%} with a backslash.}  allow
 +dynamic insertion of content:
 +
 +@comment SJE: should these sentences terminate in period?
 +@smallexample
  %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
              @r{You may specify a default value and a completion table with}
              @r{%^@{prompt|default|completion2|completion3...@}}
              @r{The arrow keys access a prompt-specific history.}
  %a          @r{annotation, normally the link created with @code{org-store-link}}
  %A          @r{like @code{%a}, but prompt for the description part}
 -%i          @r{initial content, the region when remember is called with C-u.}
 +%i          @r{initial content, the region when capture is called while the}
 +            @r{region is active.}
              @r{The entire text will be indented like @code{%i} itself.}
  %t          @r{timestamp, date only}
  %T          @r{timestamp with date and time}
  %x          @r{Content of the X clipboard.}
  %^C         @r{Interactive selection of which kill or clip to use.}
  %^L         @r{Like @code{%^C}, but insert as link.}
 +%k          @r{title of the currently clocked task}
 +%K          @r{link to the currently clocked task}
  %^g         @r{prompt for tags, with completion on tags in target file.}
 -%k          @r{title of currently clocked task}
 -%K          @r{link to currently clocked task}
  %^G         @r{prompt for tags, with completion all tags in all agenda files.}
  %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}}
  %:keyword   @r{specific information for certain link types, see below}
  %[@var{file}]     @r{insert the contents of the file given by @var{file}}
  %(@var{sexp})     @r{evaluate Elisp @var{sexp} and replace with the result}
 -%!          @r{immediately store note after completing the template}
 -            @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
 -%&          @r{jump to target location immediately after storing note}
 -@end example
 +@end smallexample
  
  @noindent
  For specific link types, the following keywords will be
  defined@footnote{If you define your own link types (@pxref{Adding
  hyperlink types}), any property you store with
 -@code{org-store-link-props} can be accessed in remember templates in a
 +@code{org-store-link-props} can be accessed in capture templates in a
  similar way.}:
  
  @vindex org-from-is-user-regexp
 -@example
 +@smallexample
  Link type          |  Available keywords
  -------------------+----------------------------------------------
 -bbdb               |  %:name %:company
 -bbdb               |  %::server %:port %:nick
 -vm, wl, mh, rmail  |  %:type %:subject %:message-id
 -                   |  %:from %:fromname %:fromaddress
 -                   |  %:to   %:toname   %:toaddress
 -                   |  %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user.  See the variable @code{org-from-is-user-regexp}.}}
 -gnus               |  %:group, @r{for messages also all email fields}
 -w3, w3m            |  %:url
 -info               |  %:file %:node
 -calendar           |  %:date"
 -@end example
 +bbdb                    |  %:name %:company
 +irc                     |  %:server %:port %:nick
 +vm, wl, mh, mew, rmail  |  %:type %:subject %:message-id
 +                        |  %:from %:fromname %:fromaddress
 +                        |  %:to   %:toname   %:toaddress
 +                        |  %:date @r{(message date header field)}
 +                        |  %:date-timestamp @r{(date as active timestamp)}
 +                        |  %:date-timestamp-inactive @r{(date as inactive timestamp)}
 +                        |  %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user.  See the variable @code{org-from-is-user-regexp}.}}
 +gnus                    |  %:group, @r{for messages also all email fields}
 +w3, w3m                 |  %:url
 +info                    |  %:file %:node
 +calendar                |  %:date
 +@end smallexample
  
  @noindent
  To place the cursor after template expansion use:
  
 -@example
 +@smallexample
  %?          @r{After completing the template, position cursor here.}
 -@end example
 -
 -@noindent
 -If you change your 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 previous context information.
 -
 -@node Storing notes,  , Remember templates, Remember
 -@subsection Storing notes
 -
 -@vindex org-remember-clock-out-on-exit
 -When you are finished preparing a note with Remember, you have to press
 -@kbd{C-c C-c} to file the note away.  If you have started the clock in the
 -Remember buffer, you will first be asked if you want to clock out
 -now@footnote{To avoid this query, configure the variable
 -@code{org-remember-clock-out-on-exit}.}.  If you answer @kbd{n}, the clock
 -will continue to run after the note was filed away.
 -
 -The handler will then store the note in the file and under the headline
 -specified in the template, or it will use the default file and headline.
 -The window configuration will be restored, sending you back to the working
 -context before the call to Remember.  To re-use the location found
 -during the last call to Remember, exit the Remember buffer with
 -@kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to @kbd{C-c C-c}.
 -Another special case is @kbd{C-2 C-c C-c} which files the note as a child of
 -the currently clocked item.
 -
 -@vindex org-remember-store-without-prompt
 -If you want to store the note directly to a different place, use
 -@kbd{C-1 C-c C-c} instead to exit Remember@footnote{Configure the
 -variable @code{org-remember-store-without-prompt} to make this behavior
 -the default.}.  The handler will then first prompt for a 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 specified one in the
 -template).  You can either immediately press @key{RET} to get the note
 -placed there.  Or you can use the following keys to find a different
 -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.
 -
 -@vindex org-reverse-note-order
 -@multitable @columnfractions 0.2 0.15 0.65
 -@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
 -@item on headline     @tab @key{RET}              @tab as sublevel of the heading at cursor, first or last
 -@item                 @tab                        @tab depending on @code{org-reverse-note-order}.
 -@item                 @tab @key{left}/@key{right} @tab as same level, before/after current heading
 -@item buffer-start    @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
 -@item                 @tab @tab depending on @code{org-reverse-note-order}.
 -@item not on headline @tab @key{RET}
 -      @tab at cursor position, level taken from context.
 -@end multitable
 -
 -Before inserting the text into a tree, the function ensures that the text has
 -a headline, i.e. a first line that starts with a @samp{*}.  If not, a
 -headline is constructed from the current date.  If you have indented the text
 -of the note below the headline, the indentation will be adapted if inserting
 -the note into the tree requires demotion from level 1.
 +@end smallexample
  
  
 -@node Attachments, RSS Feeds, Remember, Capture - Refile - Archive
 +@node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
  @section Attachments
  @cindex attachments
  
  @vindex org-attach-directory
  It is often useful to associate reference material with an outline node/task.
  Small chunks of plain text can simply be stored in the subtree of a project.
 -Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
 +Hyperlinks (@pxref{Hyperlinks}) can establish associations with
  files that live elsewhere on your computer or in the cloud, like emails or
  source code files belonging to a project.  Another method is @i{attachments},
  which are files located in a directory belonging to an outline node.  Org
@@@ -6452,17 -6019,19 +6452,17 @@@ choice to an entry.  You can also make 
  directory from a parent, so that an entire subtree uses the same attached
  directory.
  
 -@noindent The following commands deal with attachments.
 +@noindent The following commands deal with attachments:
  
  @table @kbd
  
 -@kindex C-c C-a
 -@item C-c C-a
 +@orgcmd{C-c C-a,org-attach}
  The dispatcher for commands related to the attachment system.  After these
 -keys, a list of commands is displayed and you need to press an additional key
 +keys, a list of commands is displayed and you must press an additional key
  to select a command:
  
  @table @kbd
 -@kindex C-c C-a a
 -@item a
 +@orgcmdtkc{a,C-c C-a a,org-attach-attach}
  @vindex org-attach-method
  Select a file and move it into the task's attachment directory.  The file
  will be copied, moved, or linked, depending on @code{org-attach-method}.
@@@ -6475,42 -6044,52 +6475,42 @@@ Note that hard links are not supported 
  Attach a file using the copy/move/link method.
  Note that hard links are not supported on all systems.
  
 -@kindex C-c C-a n
 -@item n
 +@orgcmdtkc{n,C-c C-a n,org-attach-new}
  Create a new attachment as an Emacs buffer.
  
 -@kindex C-c C-a z
 -@item z
 +@orgcmdtkc{z,C-c C-a z,org-attach-sync}
  Synchronize the current task with its attachment directory, in case you added
  attachments yourself.
  
 -@kindex C-c C-a o
 -@item o
 +@orgcmdtkc{p,C-c C-a o,org-attach-open}
  @vindex org-file-apps
 -Open current task's attachment.  If there are more than one, prompt for a
 +Open current task's attachment.  If there is more than one, prompt for a
  file name first.  Opening will follow the rules set by @code{org-file-apps}.
  For more details, see the information on following hyperlinks
  (@pxref{Handling links}).
  
 -@kindex C-c C-a O
 -@item O
 +@orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
  Also open the attachment, but force opening the file in Emacs.
  
 -@kindex C-c C-a f
 -@item f
 +@orgcmdtkc{f,C-c C-a f,org-attach-reveal}
  Open the current task's attachment directory.
  
 -@kindex C-c C-a F
 -@item F
 +@orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
  Also open the directory, but force using @command{dired} in Emacs.
  
 -@kindex C-c C-a d
 -@item d
 +@orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
  Select and delete a single attachment.
  
 -@kindex C-c C-a D
 -@item D
 +@orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
  Delete all of a task's attachments.  A safer way is to open the directory in
  @command{dired} and delete from there.
  
 -@kindex C-c C-a s
 -@item C-c C-a s
 +@orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
  @cindex property, ATTACH_DIR
  Set a specific directory as the entry's attachment directory.  This works by
  putting the directory path into the @code{ATTACH_DIR} property.
  
 -@kindex C-c C-a i
 -@item C-c C-a i
 +@orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
  @cindex property, ATTACH_DIR_INHERIT
  Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
  same directory for attachments as the parent does.
  @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
  @section RSS feeds
  @cindex RSS feeds
 +@cindex Atom feeds
  
 -Org has the capability to add and change entries based on information found in
 -RSS feeds.  You could use this to make a task out of each new podcast in a
 +Org can add and change entries based on information found in RSS feeds and
 +Atom feeds.  You could use this to make a task out of each new podcast in a
  podcast feed.  Or you could use a phone-based note-creating service on the
 -web to import tasks into Org.  To access feeds, you need to configure the
 -variable @code{org-feed-alist}.  The docstring of this variable has detailed
 +web to import tasks into Org.  To access feeds, configure the variable
 +@code{org-feed-alist}.  The docstring of this variable has detailed
  information.  Here is just an example:
  
  @example
  (setq org-feed-alist
 -      '(("ReQall" "http://www.reqall.com/user/feeds/rss/a1b2c3....."
 -         "~/org/feeds.org" "ReQall Entries")
 +     '(("Slashdot"
 +         "http://rss.slashdot.org/Slashdot/slashdot"
 +         "~/txt/org/feeds.org" "Slashdot Entries")))
  @end example
 +
  @noindent
 -will configure that new items from the feed provided by @file{reqall.com}
 -will result in new entries in the file @file{~/org/feeds.org} under the
 -heading @samp{ReQall Entries}, whenever the following command is used:
 +will configure that new items from the feed provided by
 +@code{rss.slashdot.org} will result in new entries in the file
 +@file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
 +the following command is used:
  
  @table @kbd
 -@kindex C-c C-x g
 +@orgcmd{C-c C-x g,org-feed-update-all}
  @item C-c C-x g
  Collect items from the feeds configured in @code{org-feed-alist} and act upon
  them.
 -@kindex C-c C-x G
 -@item C-c C-x G
 +@orgcmd{C-c C-x G,org-feed-goto-inbox}
  Prompt for a feed name and go to the inbox configured for this feed.
  @end table
  
@@@ -6560,8 -6136,8 +6560,8 @@@ list of drawers in that file
  #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
  @end example
  
 -For more information, see @file{org-feed.el} and the docstring of
 -@code{org-feed-alist}.
 +For more information, including how to read atom feeds, see
 +@file{org-feed.el} and the docstring of @code{org-feed-alist}.
  
  @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
  @section Protocols for external access
  You can set up Org for handling protocol calls from outside applications that
  are passed to Emacs through the @file{emacsserver}.  For example, you can
  configure bookmarks in your web browser to send a link to the current page to
 -Org and create a note from it using Remember (@pxref{Remember}).  Or you
 +Org and create a note from it using capture (@pxref{Capture}).  Or you
  could create a bookmark that will tell Emacs to open the local source file of
  a remote website you are looking at with the browser.  See
  @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
@@@ -6587,14 -6163,13 +6587,14 @@@ right location, and then pasting the no
  process, you can use the following special command:
  
  @table @kbd
 -@kindex C-c C-w
 -@item C-c C-w
 +@orgcmd{C-c C-w,org-refile}
  @vindex org-reverse-note-order
  @vindex org-refile-targets
  @vindex org-refile-use-outline-path
  @vindex org-outline-path-complete-in-steps
  @vindex org-refile-allow-creating-parent-nodes
 +@vindex org-log-refile
 +@vindex org-refile-use-cache
  Refile the entry or region at point.  This command offers possible locations
  for refiling the entry and lets you select one with completion.  The item (or
  all items in the region) is filed below the target heading as a subitem.
@@@ -6608,23 -6183,14 +6608,23 @@@ the variables @code{org-refile-use-outl
  @code{org-outline-path-complete-in-steps}.  If you would like to be able to
  create new nodes as new parents for refiling on the fly, check the
  variable @code{org-refile-allow-creating-parent-nodes}.
 -@kindex C-u C-c C-w
 -@item C-u C-c C-w
 +When the variable @code{org-log-refile}@footnote{with corresponding
 +@code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
 +and @code{nologrefile}} is set, a time stamp or a note will be
 +recorded when an entry has been refiled.
 +@orgkey{C-u C-c C-w}
  Use the refile interface to jump to a heading.
 -@kindex C-u C-u C-c C-w
 -@item C-u C-u C-c C-w
 +@orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
  Jump to the location where @code{org-refile} last moved a tree to.
  @item C-2 C-c C-w
  Refile as the child of the item currently being clocked.
 +@item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
 +
 +@orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
 +
 +Clear the target cache.  Caching of refile targets can be turned on by
 +setting @code{org-refile-use-cache}.  To make the command see new possible
 +targets, you have to clear the cache with this command.
  @end table
  
  @node Archiving,  , Refiling notes, Capture - Refile - Archive
@@@ -6637,7 -6203,8 +6637,7 @@@ agenda.  Archiving is important to kee
  searches like the construction of agenda views fast.
  
  @table @kbd
 -@kindex C-c C-x C-a
 -@item C-c C-x C-a
 +@orgcmd{C-c C-x C-a,org-archive-subtree-default}
  @vindex org-archive-default-command
  Archive the current entry using the command specified in the variable
  @code{org-archive-default-command}.
  
  @menu
  * Moving subtrees::             Moving a tree to an archive file
 -* Internal archiving::          Switch off a tree but keep i in the file
 +* Internal archiving::          Switch off a tree but keep it in the file
  @end menu
  
  @node Moving subtrees, Internal archiving, Archiving, Archiving
@@@ -6656,11 -6223,14 +6656,11 @@@ The most common archiving action is to 
  the archive file.
  
  @table @kbd
 -@kindex C-c $
 -@kindex C-c C-x C-s
 -@item C-c C-x C-s@ @r{or short} @ C-c $
 +@orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
  @vindex org-archive-location
  Archive the subtree starting at the cursor position to the location
  given by @code{org-archive-location}.
 -@kindex C-u C-c C-x C-s
 -@item C-u C-c C-x C-s
 +@orgkey{C-u C-c C-x C-s}
  Check if any direct children of the current headline could be moved to
  the archive.  To do this, each subtree is checked for open TODO entries.
  If none are found, the command offers to move it to the archive
@@@ -6735,27 -6305,31 +6735,27 @@@ Archived trees are not exported (@pxref
  is.  Configure the details using the variable
  @code{org-export-with-archived-trees}.
  @item
 -@vindex org-columns-skip-arrchived-trees
 +@vindex org-columns-skip-archived-trees
  Archived trees are excluded from column view unless the variable
 -@code{org-columns-skip-arrchived-trees} is configured to @code{nil}.
 +@code{org-columns-skip-archived-trees} is configured to @code{nil}.
  @end itemize
  
 -The following commands help managing the ARCHIVE tag:
 +The following commands help manage the ARCHIVE tag:
  
  @table @kbd
 -@kindex C-c C-x a
 -@item C-c C-x a
 +@orgcmd{C-c C-x a,org-toggle-archive-tag}
  Toggle the ARCHIVE tag for the current headline.  When the tag is set,
  the headline changes to a shadowed face, and the subtree below it is
  hidden.
 -@kindex C-u C-c C-x a
 -@item C-u C-c C-x a
 +@orgkey{C-u C-c C-x a}
  Check if any direct children of the current headline should be archived.
  To do this, each subtree is checked for open TODO entries.  If none are
  found, the command offers to set the ARCHIVE tag for the child.  If the
  cursor is @emph{not} on a headline when this command is invoked, the
  level 1 trees will be checked.
 -@kindex C-@kbd{TAB}
 -@item C-@kbd{TAB}
 +@orgcmd{C-@kbd{TAB},org-force-cycle-archived}
  Cycle a tree even if it is tagged with ARCHIVE.
 -@kindex C-c C-x A
 -@item C-c C-x A
 +@orgcmd{C-c C-x A,org-archive-to-archive-sibling}
  Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
  the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
  entry becomes a child of that sibling and in this way retains a lot of its
@@@ -6765,7 -6339,7 +6765,7 @@@ outline
  
  
  @node Agenda Views, Markup, Capture - Refile - Archive, Top
 -@chapter Agenda Views
 +@chapter Agenda views
  @cindex agenda views
  
  Due to the way Org works, TODO items, time-stamped items, and
@@@ -6848,15 -6422,18 +6848,15 @@@ the easiest way to maintain it is throu
  
  @cindex files, adding to agenda list
  @table @kbd
 -@kindex C-c [
 -@item C-c [
 +@orgcmd{C-c [,org-agenda-to-front}
  Add current file to the list of agenda files.  The file is added to
  the front of the list.  If it was already in the list, it is moved to
  the front.  With a prefix argument, file is added/moved to the end.
 -@kindex C-c ]
 -@item C-c ]
 +@orgcmd{C-c ],org-remove-file}
  Remove current file from the list of agenda files.
  @kindex C-,
 -@kindex C-'
 -@item C-,
 -@itemx C-'
 +@orgcmd{C-',org-cycle-agenda-files}
 +@itemx C-,
  Cycle through agenda file list, visiting one file after the other.
  @kindex M-x org-iswitchb
  @item M-x org-iswitchb
@@@ -6876,14 -6453,16 +6876,14 @@@ you may press @kbd{<} once or several t
  extended period, use the following commands:
  
  @table @kbd
 -@kindex C-c C-x <
 -@item C-c C-x <
 +@orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
  Permanently restrict the agenda to the current subtree.  When with a
  prefix argument, or with the cursor before the first headline in a file,
  the agenda scope is set to the entire file.  This restriction remains in
  effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
  or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
  agenda view, the new restriction takes effect immediately.
 -@kindex C-c C-x >
 -@item C-c C-x >
 +@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
  Remove the permanent restriction created by @kbd{C-c C-x <}.
  @end table
  
  When working with @file{speedbar.el}, you can use the following commands in
  the Speedbar frame:
  @table @kbd
 -@kindex <
 -@item < @r{in the speedbar frame}
 +@orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
  Permanently restrict the agenda to the item---either an Org file or a subtree
  in such a file---at the cursor in the Speedbar frame.
  If there is a window displaying an agenda view, the new restriction takes
  effect immediately.
 -@kindex >
 -@item > @r{in the speedbar frame}
 +@orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
  Lift the restriction.
  @end table
  
@@@ -6976,23 -6557,18 +6976,23 @@@ paper agenda, showing all the tasks fo
  
  @table @kbd
  @cindex org-agenda, command
 -@kindex C-c a a
 -@item C-c a a
 -@vindex org-agenda-ndays
 +@orgcmd{C-c a a,org-agenda-list}
  Compile an agenda for the current week from a list of Org files.  The agenda
  shows the entries for each day.  With a numeric prefix@footnote{For backward
  compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
  listed before the agenda.  This feature is deprecated, use the dedicated TODO
  list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
 -C-c a a}) you may set the number of days to be displayed (see also the
 -variable @code{org-agenda-ndays})
 +C-c a a}) you may set the number of days to be displayed.
  @end table
  
 +@vindex org-agenda-span
 +@vindex org-agenda-ndays
 +The default number of days displayed in the agenda is set by the variable
 +@code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}).  This
 +variable can be set to any number of days you want to see by default in the
 +agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
 +@code{year}.
 +
  Remote editing from the agenda buffer means, for example, that you can
  change the dates of deadlines and appointments from the agenda buffer.
  The commands available in the Agenda buffer are listed in @ref{Agenda
@@@ -7010,7 -6586,7 +7010,7 @@@ anniversaries, lunar phases, sunrise/se
  Org.  It can be very useful to combine output from Org with
  the diary.
  
 -In order to include entries from the Emacs diary into Org mode's
 +In order to include entries from the Emacs diary into Org-mode's
  agenda, you only need to customize the variable
  
  @lisp
  
  @noindent After that, everything will happen automatically.  All diary
  entries including holidays, anniversaries, etc., will be included in the
 -agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
 +agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
  @key{RET} can be used from the agenda buffer to jump to the diary
  file in order to edit existing diary entries.  The @kbd{i} command to
  insert new entries for the current date works in the agenda buffer, as
@@@ -7030,7 -6606,7 +7030,7 @@@ 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 file. Org mode evaluates diary-style sexp
 +the entries into an Org 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 whitespace is allowed before them.  For example,
@@@ -7042,8 -6618,8 +7042,8 @@@ will be made in the agenda
  #+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
 +%%(diary-anniversary  5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
 +%%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
  @end example
  
  @subsubheading Anniversaries from BBDB
@@@ -7060,7 -6636,7 +7060,7 @@@ following to one your your agenda files
  * Anniversaries
    :PROPERTIES:
    :CATEGORY: Anniv
 -  :END
 +  :END:
  %%(org-bbdb-anniversaries)
  @end example
  
@@@ -7103,20 -6679,22 +7103,20 @@@ The global TODO list contains all unfin
  collected into a single place.
  
  @table @kbd
 -@kindex C-c a t
 -@item C-c a t
 -Show the global TODO list.  This collects the TODO items from all
 -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}).
 -@kindex C-c a T
 -@item C-c a T
 +@orgcmd{C-c a t,org-todo-list}
 +Show the global TODO list.  This collects the TODO items from all agenda
 +files (@pxref{Agenda Views}) into a single buffer.  By default, this lists
 +items with a state the is not a DONE state.  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}).
 +@orgcmd{C-c a T,org-todo-list}
  @cindex TODO keyword matching
  @vindex org-todo-keywords
 -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 the boolean OR
 -operator.  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}.  You are
 +prompted for a keyword, and you may also specify several keywords by
 +separating them with @samp{|} as the 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,
@@@ -7138,15 -6716,13 +7138,15 @@@ it more compact
  @item
  @vindex org-agenda-todo-ignore-scheduled
  @vindex org-agenda-todo-ignore-deadlines
 +@vindex org-agenda-todo-ignore-timestamp
  @vindex org-agenda-todo-ignore-with-date
  Some people view a TODO item that has been @emph{scheduled} for execution or
  have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
  Configure the variables @code{org-agenda-todo-ignore-scheduled},
 -@code{org-agenda-todo-ignore-deadlines}, and/or
 -@code{org-agenda-todo-ignore-with-date} to exclude such items from the
 -global TODO list.
 +@code{org-agenda-todo-ignore-deadlines},
 +@code{org-agenda-todo-ignore-timestamp} and/or
 +@code{org-agenda-todo-ignore-with-date} to exclude such items from the global
 +TODO list.
  @item
  @vindex org-agenda-todo-list-sublevels
  TODO items may have sublevels to break up the task into subtasks.  In
@@@ -7169,21 -6745,22 +7169,21 @@@ syntax described here also applies whe
  m}.
  
  @table @kbd
 -@kindex C-c a m
 -@item C-c a m
 +@orgcmd{C-c a m,org-tags-view}
  Produce a list of all headlines that match a given set of tags.  The
  command prompts for a selection criterion, which is a boolean logic
  expression with tags, like @samp{+work+urgent-withboss} or
  @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
  define a custom command for it (@pxref{Agenda dispatcher}).
 -@kindex C-c a M
 -@item C-c a M
 +@orgcmd{C-c a M,org-tags-view}
  @vindex org-tags-match-list-sublevels
  @vindex org-agenda-tags-todo-honor-ignore-options
 -Like @kbd{C-c a m}, but only select headlines that are also TODO items and
 -force checking subitems (see variable @code{org-tags-match-list-sublevels}).
 -To exclude scheduled/deadline items, see the variable
 -@code{org-agenda-tags-todo-honor-ignore-options}.  Matching specific TODO
 -keywords together with a tags match is also possible, see @ref{Tag searches}.
 +Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
 +not-DONE state and force checking subitems (see variable
 +@code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
 +see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
 +specific TODO keywords together with a tags match is also possible, see
 +@ref{Tag searches}.
  @end table
  
  The commands available in the tags list are described in @ref{Agenda
@@@ -7288,7 -6865,7 +7288,7 @@@ other properties will slow down the sea
  price by accessing one property, testing additional properties is cheap
  again.
  
 -You can configure Org mode to use property inheritance during a search, but
 +You can configure Org-mode to use property inheritance during a search, but
  beware that this can slow down searches considerably.  See @ref{Property
  inheritance}, for details.
  
@@@ -7297,13 -6874,12 +7297,13 @@@ different way to test TODO states in a 
  tags/property part of the search string (which may include several terms
  connected with @samp{|}) with a @samp{/} and then specify a Boolean
  expression just for TODO keywords.  The syntax is then similar to that for
 -tags, but should be applied with care: for example, a positive
 -selection on several TODO keywords cannot meaningfully be combined with
 -boolean AND.  However, @emph{negative selection} combined with AND can be
 -meaningful.  To make sure that only lines are checked that actually have any
 -TODO keyword (resulting in a speed-up), use @kbd{C-c a M}, or equivalently
 -start the TODO part after the slash with @samp{!}.  Examples:
 +tags, but should be applied with care: for example, a positive selection on
 +several TODO keywords cannot meaningfully be combined with boolean AND.
 +However, @emph{negative selection} combined with AND can be meaningful.  To
 +make sure that only lines are checked that actually have any TODO keyword
 +(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
 +part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
 +not match TODO keywords in a DONE state.  Examples:
  
  @table @samp
  @item work/WAITING
@@@ -7321,12 -6897,13 +7321,12 @@@ Select @samp{:work:}-tagged TODO lines 
  @cindex timeline, single file
  @cindex time-sorted view
  
 -The timeline summarizes all time-stamped items from a single Org mode
 +The timeline summarizes all time-stamped items from a single Org-mode
  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-c a L
 -@item C-c a L
 +@orgcmd{C-c a L,org-timeline}
  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
  (scheduled or not) are also listed under the current date.
@@@ -7342,11 -6919,12 +7342,11 @@@ The commands available in the timeline 
  @cindex text search
  @cindex searching, for text
  
 -This agenda view is a general text search facility for Org mode entries.
 +This agenda view is a general text search facility for Org-mode entries.
  It is particularly useful to find notes.
  
  @table @kbd
 -@kindex C-c a s
 -@item C-c a s
 +@orgcmd{C-c a s,org-search-view}
  This is a special search that lets you select entries by matching a substring
  or specific words using a boolean logic.
  @end table
@@@ -7358,9 -6936,7 +7358,9 @@@ logic.  The search string @samp{+comput
  will search for note entries that contain the keywords @code{computer}
  and @code{wifi}, but not the keyword @code{ethernet}, and which are also
  not matched by the regular expression @code{8\.11[bg]}, meaning to
 -exclude both 8.11b and 8.11g.
 +exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
 +word search, other @samp{+} characters are optional.  For more details, see
 +the docstring of the command @code{org-search-view}.
  
  @vindex org-agenda-text-search-extra-files
  Note that in addition to the agenda files, this command will also search
@@@ -7373,11 -6949,12 +7373,11 @@@ If you are following a system like Davi
  work, one of the ``duties'' you have is a regular review to make sure
  that all projects move along.  A @emph{stuck} project is a project that
  has no defined next actions, so it will never show up in the TODO lists
 -Org mode produces.  During the review, you need to identify such
 +Org-mode produces.  During the review, you need to identify such
  projects and define next actions for them.
  
  @table @kbd
 -@kindex C-c a #
 -@item C-c a #
 +@orgcmd{C-c a #,org-agenda-list-stuck-projects}
  List projects that are stuck.
  @kindex C-c a !
  @item C-c a !
@@@ -7391,7 -6968,7 +7391,7 @@@ work for you.  The built-in default ass
  level-2 headlines, and that a project is not stuck if it has at least
  one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
  
 -Let's assume that you, in your own way of using Org mode, identify
 +Let's 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.  Let's further
  assume that the TODO keyword DONE marks finished projects, and that NEXT
@@@ -7418,7 -6995,7 +7418,7 @@@ will still be searched for stuck projec
  @cindex presentation, of agenda items
  
  @vindex org-agenda-prefix-format
 -Before displaying items in an agenda view, Org mode visually prepares
 +Before displaying items in an agenda view, Org-mode visually prepares
  the items and sorts them.  Each item occupies a single line.  The line
  starts with a @emph{prefix} that contains the @emph{category}
  (@pxref{Categories}) of the item and other important information.  You can
@@@ -7436,7 -7013,6 +7436,7 @@@ associated with the item
  @subsection Categories
  
  @cindex category
 +@cindex #+CATEGORY
  The category is a broad label assigned to each agenda item.  By default,
  the category is simply derived from the file name, but you can also
  specify it with a special line in the buffer, like this@footnote{For
@@@ -7462,15 -7038,11 +7462,15 @@@ special category you want to apply as t
  The display in the agenda buffer looks best if the category is not
  longer than 10 characters.
  
 +@noindent
 +You can set up icons for category by customizing the
 +@code{org-agenda-category-icon-alist} variable.
 +
  @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
  @subsection Time-of-day specifications
  @cindex time-of-day specification
  
 -Org mode checks each agenda item for a time-of-day specification.  The
 +Org-mode checks each agenda item for a time-of-day specification.  The
  time can be part of the timestamp that triggered inclusion into the
  agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
  ranges can be specified with two timestamps, like
@@@ -7482,7 -7054,7 +7482,7 @@@ plain text (like @samp{12:45} or a @sam
  integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
  specifications in diary entries are recognized as well.
  
 -For agenda display, Org mode extracts the time and displays it in a
 +For agenda display, Org-mode extracts the time and displays it in a
  standard 24 hour format as part of the prefix.  The example times in
  the previous paragraphs would end up in the agenda like this:
  
@@@ -7568,26 -7140,40 +7568,26 @@@ the other commands, the cursor needs t
  @table @kbd
  @tsubheading{Motion}
  @cindex motion commands in agenda
 -@kindex n
 -@item n
 +@orgcmd{n,org-agenda-next-line}
  Next line (same as @key{up} and @kbd{C-p}).
 -@kindex p
 -@item p
 +@orgcmd{p,org-agenda-previous-line}
  Previous line (same as @key{down} and @kbd{C-n}).
  @tsubheading{View/Go to Org file}
 -@kindex mouse-3
 -@kindex @key{SPC}
 -@item mouse-3
 -@itemx @key{SPC}
 +@orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
  Display the original location of the item in another window.
  With prefix arg, make sure that the entire entry is made visible in the
  outline, not only the heading.
  @c
 -@kindex L
 -@item L
 +@orgcmd{L,org-agenda-recenter}
  Display original location and recenter that window.
  @c
 -@kindex mouse-2
 -@kindex mouse-1
 -@kindex @key{TAB}
 -@item mouse-2
 -@itemx mouse-1
 -@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.
 +@orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
 +Go to the original location of the item in another window.
  @c
 -@kindex @key{RET}
 -@itemx @key{RET}
 +@orgcmd{@key{RET},org-agenda-switch-to}
  Go to the original location of the item and delete other windows.
  @c
 -@kindex F
 -@item F
 +@orgcmd{F,org-agenda-follow-mode}
  @vindex org-agenda-start-with-follow-mode
  Toggle Follow mode.  In Follow mode, as you move the cursor through
  the agenda buffer, the other window always shows the corresponding
@@@ -7595,13 -7181,15 +7595,13 @@@ location in the Org file.  The initial 
  agenda buffers can be set with the variable
  @code{org-agenda-start-with-follow-mode}.
  @c
 -@kindex C-c C-x b
 -@item C-c C-x b
 +@orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
  Display the entire subtree of the current item in an indirect buffer.  With a
  numeric prefix argument N, go up to level N and then take that tree.  If N is
  negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
  previously used indirect buffer.
  
 -@kindex C-c C-o
 -@item C-c C-o
 +@orgcmd{C-c C-o,org-agenda-open-link}
  Follow a link in the entry.  This will offer a selection of any links in the
  text belonging to the referenced Org node.  If there is only one link, it
  will be followed without a selection prompt.
  @item o
  Delete other windows.
  @c
 -@kindex v d
 -@kindex d
 -@kindex v w
 -@kindex w
 -@kindex v m
 -@kindex v y
 -@item v d @ @r{or short} @ d
 -@itemx v w @ @r{or short} @ w
 -@itemx v m
 -@itemx v y
 +@c @kindex v d
 +@c @kindex d
 +@c @kindex v w
 +@c @kindex w
 +@c @kindex v m
 +@c @kindex v y
 +@c @item v d @ @r{or short} @ d
 +@c @itemx v w @ @r{or short} @ w
 +@c @itemx v m
 +@c @itemx v y
 +@orgcmdkskc{v d,d,org-aganda-day-view}
 +@xorgcmdkskc{v w,w,org-aganda-day-view}
 +@xorgcmd{v m,org-agenda-month-view}
 +@xorgcmd{v y,org-agenda-month-year}
  Switch to day/week/month/year view.  When switching to day or week view,
  this setting becomes the default for subsequent agenda commands.  Since
  month and year views are slow to create, they do not become the default.
@@@ -7637,28 -7221,32 +7637,28 @@@ argument as well.  For example, @kbd{20
  2007.  If such a year specification has only one or two digits, it will
  be mapped to the interval 1938-2037.
  @c
 -@kindex f
 -@item f
 -@vindex org-agenda-ndays
 -Go forward in time to display the following @code{org-agenda-ndays} days.
 +@orgcmd{f,org-agenda-later}
 +Go forward in time to display the following @code{org-agenda-current-span} 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.
 +With prefix arg, go forward that many times @code{org-agenda-current-span} days.
  @c
 -@kindex b
 -@item b
 +@orgcmd{b,org-agenda-earlier}
  Go backward in time to display earlier dates.
  @c
 -@kindex .
 -@item .
 +@orgcmd{.,org-agenda-goto-today}
  Go to today.
  @c
 -@kindex j
 -@item j
 +@orgcmd{j,org-agenda-goto-date}
  Prompt for a date and go there.
  @c
 -@kindex D
 -@item D
 +@orgcmd{J,org-agenda-clock-goto}
 +Go to the currently clocked-in task @i{in the agenda buffer}.
 +@c
 +@orgcmd{D,org-agenda-toggle-diary}
  Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
  @c
 -@kindex v l
 -@kindex l
 -@item v l @ @r{or short} @ l
 +@orgcmdkskc{v l,l,org-agenda-log-mode}
 +@kindex v L
  @vindex org-log-done
  @vindex org-agenda-log-mode-items
  Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
@@@ -7668,31 -7256,35 +7668,31 @@@ types that should be included in log mo
  @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
  all possible logbook entries, including state changes.  When called with two
  prefix args @kbd{C-u C-u}, show only logging information, nothing else.
 +@kbd{v L} is equivalent to @kbd{C-u v l}.
  @c
 -@kindex v [
 -@kindex [
 -@item v [ @ @r{or short} @ [
 +@orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
  Include inactive timestamps into the current view.  Only for weekly/daily
  agenda and timeline views.
  @c
 -@kindex v a
 -@kindex v A
 -@item v a
 -@itemx v A
 +@orgcmd{v a,org-agenda-archives-mode}
 +@xorgcmd{v A,org-agenda-archives-mode 'files}
  Toggle Archives mode.  In Archives mode, trees that are marked
  @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
  capital @kbd{A}, even all archive files are included.  To exit archives mode,
  press @kbd{v a} again.
  @c
 -@kindex v R
 -@kindex R
 -@item v R @ @r{or short} @ R
 +@orgcmdkskc{v R,R,org-agenda-clockreport-mode}
  @vindex org-agenda-start-with-clockreport-mode
  Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
  always show a table with the clocked times for the timespan and file scope
  covered by the current agenda view.  The initial setting for this mode in new
  agenda buffers can be set with the variable
 -@code{org-agenda-start-with-clockreport-mode}.
 +@code{org-agenda-start-with-clockreport-mode}.  By using a prefix argument
 +when toggling this mode (i.e. @kbd{C-u R}), the clock table will not show
 +contributions from entries that are hidden by agenda filtering@footnote{Only
 +tags filtering will be respected here, effort filtering is ignored.}.
  @c
 -@kindex v E
 -@kindex E
 -@item v E @ @r{or short} @ E
 +@orgcmdkskc{v E,E,org-agenda-entry-text-mode}
  @vindex org-agenda-start-with-entry-text-mode
  @vindex org-agenda-entry-text-maxlines
  Toggle entry text mode.  In entry text mode, a number of lines from the Org
@@@ -7701,26 -7293,33 +7701,26 @@@ The maximum number of lines is given b
  @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
  prefix argument will temporarily modify that number to the prefix value.
  @c
 -@kindex G
 -@item G
 +@orgcmd{G,org-agenda-toggle-time-grid}
  @vindex org-agenda-use-time-grid
  @vindex org-agenda-time-grid
  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
 +@orgcmd{r,org-agenda-rodo}
  Recreate the agenda buffer, for example to reflect the changes after
  modification of the timestamps of items with @kbd{S-@key{left}} and
  @kbd{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.
 -@kindex g
 -@item g
 +@orgcmd{g,org-agenda-rodo}
  Same as @kbd{r}.
  @c
 -@kindex s
 -@kindex C-x C-s
 -@item s
 -@itemx C-x C-s
 +@orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
  Save all Org buffers in the current Emacs session, and also the locations of
  IDs.
  @c
 -@kindex C-c C-x C-c
 -@item C-c C-x C-c
 +@orgcmd{C-c C-x C-c,org-agenda-columns}
  @vindex org-columns-default-format
  Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
  view format is taken from the entry at point, or (if there is no entry at
@@@ -7729,7 -7328,8 +7729,7 @@@ that entry would be in the original buf
  @code{#+COLUMNS} line, or from the default variable
  @code{org-columns-default-format}), will be used in the agenda.
  
 -@kindex C-c C-x >
 -@item C-c C-x >
 +@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
  Remove the restriction lock on the agenda, if it is currently restricted to a
  file or subtree (@pxref{Agenda files}).
  
  @cindex effort filtering, in agenda
  @cindex query editing, in agenda
  
 -@kindex /
 -@item /
 +@orgcmd{/,org-agenda-filter-by-tag}
  @vindex org-agenda-filter-preset
  Filter the current agenda view with respect to a tag and/or effort estimates.
  The difference between this and a custom agenda command is that filtering is
  very fast, so that you can switch quickly between different filters without
 -having to recreate the agenda@footnote{Custom commands can preset a filter by
 +having to recreate the agenda.@footnote{Custom commands can preset a filter by
  binding the variable @code{org-agenda-filter-preset} as an option.  This
  filter will then be applied to the view and persist as a basic filter through
 -refreshes and more secondary filtering.}
 +refreshes and more secondary filtering.  The filter is a global property of
 +the entire agenda view---in a block agenda, you should only set this in the
 +global options section, not in the section of an individual block.}
  
 -You will be prompted for a tag selection letter, SPC will mean any tag at
 +You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
  all.  Pressing @key{TAB} at that prompt will offer use completion to select a
  tag (including any tags that do not have a selection character).  The command
  then hides all entries that do not contain or inherit this tag.  When called
@@@ -7763,7 -7362,7 +7763,7 @@@ Instead of pressing @kbd{+} or @kbd{-} 
  immediately use the @kbd{\} command.
  
  @vindex org-sort-agenda-noeffort-is-high
 -In order to filter for effort estimates, you should set-up allowed
 +In order to filter for effort estimates, you should set up allowed
  efforts globally, for example
  @lisp
  (setq org-global-properties
@@@ -7806,13 -7405,13 +7806,13 @@@ Internet, and outside of business hours
  @end group
  @end lisp
  
 -@kindex \
 -@item \
 +@orgcmd{\,org-agenda-filter-by-tag-refine}
  Narrow the current agenda filter by an additional condition.  When called with
  prefix arg, remove the entries that @emph{do} have the tag, or that do match
  the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
  @kbd{-} as the first key after the @kbd{/} command.
  
 +@c
  @kindex [
  @kindex ]
  @kindex @{
@@@ -7828,6 -7427,7 +7828,6 @@@ negative search term which @i{must not
  selected.
  @end table
  
 -@page
  @tsubheading{Remote editing}
  @cindex remote editing, from agenda
  
@@@ -7836,89 -7436,114 +7836,89 @@@ Digit argument
  @c
  @cindex undoing remote-editing events
  @cindex remote editing, undo
 -@kindex C-_
 -@item C-_
 +@orgcmd{C-_,org-agenda-undo}
  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
 +@orgcmd{t,org-agenda-todo}
  Change the TODO state of the item, both in the agenda and in the
  original org file.
  @c
 -@kindex C-S-@key{right}
 -@kindex C-S-@key{left}
 -@item C-S-@key{right}@r{/}@key{left}
 +@orgcmd{C-S-@key{right},org-agenda-todo-nextset}
 +@orgcmd{C-S-@key{left},org-agenda-todo-previousset}
  Switch to the next/previous set of TODO keywords.
  @c
 -@kindex C-k
 -@item C-k
 +@orgcmd{C-k,org-agenda-kill}
  @vindex org-agenda-confirm-kill
  Delete the current agenda item along with the entire subtree belonging
  to it in the original Org 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 C-c C-w
 -@item C-c C-w
 +@orgcmd{C-c C-w,org-agenda-refile}
  Refile the entry at point.
  @c
 -@kindex C-c C-x C-a
 -@kindex a
 -@item C-c C-x C-a @ @r{or short} @ a
 +@orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
  @vindex org-archive-default-command
  Archive the subtree corresponding to the entry at point using the default
  archiving command set in @code{org-archive-default-command}.  When using the
  @code{a} key, confirmation will be required.
  @c
 -@kindex C-c C-x a
 -@item C-c C-x a
 +@orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
  Toggle the ARCHIVE tag for the current headline.
  @c
 -@kindex C-c C-x A
 -@item C-c C-x A
 +@orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
  Move the subtree corresponding to the current entry to its @emph{archive
  sibling}.
  @c
 -@kindex $
 -@kindex C-c C-x C-s
 -@item C-c C-x C-s @ @r{or short} @ $
 +@orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
  Archive the subtree corresponding to the current headline.  This means the
  entry will be moved to the configured archive location, most likely a
  different file.
  @c
 -@kindex T
 -@item T
 +@orgcmd{T,org-agenda-show-tags}
  @vindex org-agenda-show-inherited-tags
  Show all tags associated with the current item.  This is useful if you have
  turned off @code{org-agenda-show-inherited-tags}, but still want to see all
  tags of a headline occasionally.
  @c
 -@kindex :
 -@item :
 +@orgcmd{:,org-agenda-set-tags}
  Set tags for the current headline.  If there is an active region in the
  agenda, change a tag for all headings in the region.
  @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.
 +Set the priority for the current item (@command{org-agenda-priority}).
 +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
 +@orgcmd{P,org-agenda-show-priority}
  Display weighted priority of current item.
  @c
 -@kindex +
 -@kindex S-@key{up}
 -@item +
 -@itemx S-@key{up}
 +@orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
  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}
 +@orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
  Decrease the priority of the current item.
  @c
 -@kindex z
 -@item z
 +@orgcmdkkc{z,C-c C-z,org-agenda-add-note}
  @vindex org-log-into-drawer
 -Add a note to the entry.  This note will be recorded, and then files to the
 +Add a note to the entry.  This note will be recorded, and then filed to the
  same location where state change notes are put.  Depending on
 -@code{org-log-into-drawer}, this maybe inside a drawer.
 +@code{org-log-into-drawer}, this may be inside a drawer.
  @c
 -@kindex C-c C-a
 -@item C-c C-a
 +@orgcmd{C-c C-a,org-attach}
  Dispatcher for all command related to attachments.
  @c
 -@kindex C-c C-s
 -@item C-c C-s
 -Schedule this item
 +@orgcmd{C-c C-s,org-agenda-schedule}
 +Schedule this item.  With prefix arg remove the scheduling timestamp
  @c
 -@kindex C-c C-d
 -@item C-c C-d
 -Set a deadline for this item.
 +@orgcmd{C-c C-d,org-agenda-deadline}
 +Set a deadline for this item.  With prefix arg remove the deadline.
  @c
 -@kindex k
 -@item k
 +@orgcmd{k,org-agenda-action}
  Agenda actions, to set dates for selected items to the cursor date.
  This command also works in the calendar!  The command prompts for an
  additional key:
@@@ -7927,13 -7552,14 +7927,13 @@@ m   @r{Mark the entry at point for acti
      @r{in Org files with @kbd{C-c C-x C-k}.}
  d   @r{Set the deadline of the marked entry to the date at point.}
  s   @r{Schedule the marked entry at the date at point.}
 -r   @r{Call @code{org-remember} with the cursor date as default date.}
 +r   @r{Call @code{org-capture} with the cursor date as default date.}
  @end example
  @noindent
  Press @kbd{r} afterward to refresh the agenda and see the effect of the
  command.
  @c
 -@kindex S-@key{right}
 -@item S-@key{right}
 +@orgcmd{S-@key{right},org-agenda-do-date-later}
  Change the timestamp associated with the current line by one day into the
  future.  With a numeric prefix argument, change it by that many days.  For
  example, @kbd{3 6 5 S-@key{right}} will change it by a year.  With a
@@@ -7943,48 -7569,56 +7943,48 @@@ a double @kbd{C-u C-u} prefix, do the s
  is changed in the original Org file, but the change is not directly reflected
  in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
  @c
 -@kindex S-@key{left}
 -@item S-@key{left}
 +@orgcmd{S-@key{left},org-agenda-do-date-earlier}
  Change the timestamp associated with the current line by one day
  into the past.
  @c
 -@kindex >
 -@item >
 -Change the timestamp associated with the current line to today.
 -The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
 -on my keyboard.
 +@orgcmd{>,org-agenda-date-prompt}
 +Change the timestamp associated with the current line.  The key @kbd{>} has
 +been chosen, because it is the same as @kbd{S-.}  on my keyboard.
  @c
 -@kindex I
 -@item I
 +@orgcmd{I,org-agenda-clock-in}
  Start the clock on the current item.  If a clock is running already, it
  is stopped first.
  @c
 -@kindex O
 -@item O
 +@orgcmd{O,org-agenda-clock-out}
  Stop the previously started clock.
  @c
 -@kindex X
 -@item X
 +@orgcmd{X,org-agenda-clock-cancel}
  Cancel the currently running clock.
 -
 -@kindex J
 -@item J
 +@c
 +@orgcmd{J,org-agenda-clock-goto}
  Jump to the running clock in another window.
  
  @tsubheading{Bulk remote editing selected entries}
  @cindex remote editing, bulk, from agenda
  
 -@kindex m
 -@item s
 -Mark the entry at point for bulk action.
 -
 -@kindex u
 -@item u
 +@orgcmd{m,org-agenda-bulk-mark}
 +Mark the entry at point for bulk action.  With prefix arg, mark that many
 +successive entries.
 +@c
 +@orgcmd{u,org-agenda-bulk-unmark}
  Unmark entry for bulk action.
 -
 -@kindex U
 -@item U
 +@c
 +@orgcmd{U,org-agenda-bulk-remove-all-marks}
  Unmark all marked entries for bulk action.
 -
 -@kindex B
 -@item B
 +@c
 +@orgcmd{B,org-agenda-bulk-action}
  Bulk action: act on all marked entries in the agenda.  This will prompt for
 -another key to select the action to be applied:
 +another key to select the action to be applied.  The prefix arg to @kbd{B}
 +will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
 +these special timestamps.
  @example
  r  @r{Prompt for a single refile target and move all entries.  The entries}
 -   @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
 +   @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
  $  @r{Archive all selected entries.}
  A  @r{Archive entries by moving them to their respective archive siblings.}
  t  @r{Change TODO state.  This prompts for a single TODO keyword and}
  s  @r{Schedule all items to a new date.  To shift existing schedule dates}
     @r{by a fixed number of days, use something starting with double plus}
     @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
 +S  @r{Reschedule randomly by N days.  N will be prompted for.  With prefix}
 +   @r{arg (@kbd{C-u B S}), scatter only accross weekdays.}
  d  @r{Set deadline to a specific date.}
  @end example
  
  
  @tsubheading{Calendar commands}
  @cindex calendar commands, from agenda
 -@kindex c
 -@item c
 +
 +@orgcmd{c,org-agenda-goto-calendar}
  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
 +@orgcmd{c,org-calendar-goto-agenda}
 +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
 +@orgcmd{i,org-agenda-diary-entry}
  @vindex org-agenda-diary-file
  Insert a new entry into the diary, using the date at the cursor and (for
  block entries) the date at the mark.  This will add to the Emacs diary
@@@ -8025,25 -7658,29 +8025,25 @@@ If you configure @code{org-agenda-diary
  Org will create entries (in org-mode syntax) in that file instead.  Most
  entries will be stored in a date-based outline tree that will later make it
  easy to archive appointments from previous months/years.  The tree will be
 -build under an entry with a @code{DATE_TREE} property, or else with years as
 -top-level entries.  Emacs will prompt you for the entry text - if you specify
 +built under an entry with a @code{DATE_TREE} property, or else with years as
 +top-level entries.  Emacs will prompt you for the entry text---if you specify
  it, the entry will be created in @code{org-agenda-diary-file} without further
  interaction.  If you directly press @key{RET} at the prompt without typing
  text, the target file will be shown in another window for you to finish the
  entry there.  See also the @kbd{k r} command.
  @c
 -@kindex M
 -@item M
 +@orgcmd{M,org-agenda-phases-of-moon}
  Show the phases of the moon for the three months around current date.
  @c
 -@kindex S
 -@item S
 +@orgcmd{S,org-agenda-sunrise-sunset}
  Show sunrise and sunset times.  The geographical location must be set
  with calendar variables, see the documentation for the Emacs calendar.
  @c
 -@kindex C
 -@item C
 +@orgcmd{C,org-agenda-convert-date}
  Convert the date at cursor into many other cultural and historic
  calendars.
  @c
 -@kindex H
 -@item H
 +@orgcmd{H,org-agenda-holidays}
  Show holidays for three months around the cursor date.
  
  @item M-x org-export-icalendar-combine-agenda-files
@@@ -8051,7 -7688,8 +8051,7 @@@ Export a single iCalendar file containi
  This is a globally available command, and also available in the agenda menu.
  
  @tsubheading{Exporting to a file}
 -@kindex C-x C-w
 -@item C-x C-w
 +@orgcmd{C-x C-w,org-write-agenda}
  @cindex exporting agenda views
  @cindex agenda views, exporting
  @vindex org-agenda-exporter-settings
@@@ -8064,11 -7702,13 +8064,11 @@@ argument, immediately open the newly cr
  for @file{htmlize} to be used during export.
  
  @tsubheading{Quit and Exit}
 -@kindex q
 -@item q
 +@orgcmd{q,org-agenda-quit}
  Quit agenda, remove the agenda buffer.
  @c
 -@kindex x
  @cindex agenda files, removing buffers
 -@item x
 +@orgcmd{x,org-agenda-exit}
  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.
@@@ -8198,7 -7838,7 +8198,7 @@@ command @kbd{C-c a o} provides a simila
  @cindex options, for custom agenda views
  
  @vindex org-agenda-custom-commands
 -Org mode contains a number of variables regulating agenda construction
 +Org-mode contains a number of variables regulating agenda construction
  and display.  The global variables define the behavior for all agenda
  commands, including the custom commands.  However, if you want to change
  some settings just for a single custom view, you can do so.  Setting
@@@ -8234,7 -7874,7 +8234,7 @@@ For command sets creating a block agend
  @code{org-agenda-custom-commands} has two separate spots for setting
  options.  You can add options that should be valid for just a single
  command in the set, and options that should be valid for all commands in
 -the set.  The former are just added to the command entry, the latter
 +the set.  The former are just added to the command entry; the latter
  must come after the list of command entries.  Going back to the block
  agenda example (@pxref{Block agenda}), let's change the sorting strategy
  for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
@@@ -8270,7 -7910,7 +8270,7 @@@ yourself
  @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
 +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's
  @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
  ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
@@@ -8278,7 -7918,8 +8278,7 @@@ a PDF file with also create the postscr
  you want to do this only occasionally, use the command
  
  @table @kbd
 -@kindex C-x C-w
 -@item C-x C-w
 +@orgcmd{C-x C-w,org-write-agenda}
  @cindex exporting agenda views
  @cindex agenda views, exporting
  @vindex org-agenda-exporter-settings
@@@ -8334,7 -7975,7 +8334,7 @@@ or absolute
  @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
 +@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.  If the extension is @file{.ics}, iCalendar export is
@@@ -8348,7 -7989,8 +8348,7 @@@ Instead, there is a special command to 
  files in one step:
  
  @table @kbd
 -@kindex C-c a e
 -@item C-c a e
 +@orgcmd{C-c a e,org-store-agenda-views}
  Export all agenda views that have export file names associated with
  them.
  @end table
@@@ -8388,7 -8030,7 +8388,7 @@@ or, if you need to modify some paramete
  system you use, please check the FAQ for examples.}
  @example
  emacs -eval '(org-batch-store-agenda-views                      \
 -              org-agenda-ndays 30                               \
 +              org-agenda-span month                             \
                org-agenda-start-day "2007-11-01"                 \
                org-agenda-include-diary nil                      \
                org-agenda-files (quote ("~/org/project.org")))'  \
@@@ -8415,7 -8057,8 +8415,7 @@@ quite useful to use column view also fr
  collected by certain criteria.
  
  @table @kbd
 -@kindex C-c C-x C-c
 -@item C-c C-x C-c
 +@orgcmd{C-c C-x C-c,org-agenda-columns}
  Turn on column view in the agenda.
  @end table
  
@@@ -8442,7 -8085,7 +8442,7 @@@ turning on column view in the agenda wi
  make sure that the computations of this property are up to date.  This is
  also true for the special @code{CLOCKSUM} property.  Org will then sum the
  values displayed in the agenda.  In the daily/weekly agenda, the sums will
 -cover a single day, in all other views they cover the entire block.  It is
 +cover a single day; in all other views they cover the entire block.  It is
  vital to realize that the agenda may show the same entry @emph{twice} (for
  example as scheduled and as a deadline), and it may show two entries from the
  same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
@@@ -8465,8 -8108,8 +8465,8 @@@ the agenda)
  
  When exporting Org-mode documents, the exporter tries to reflect the
  structure of the document as accurately as possible in the backend.  Since
 -export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
 -Org mode has rules on how to prepare text for rich export.  This section
 +export targets like HTML, @LaTeX{}, or DocBook allow much richer formatting,
 +Org-mode has rules on how to prepare text for rich export.  This section
  summarizes the markup rules used in an Org-mode buffer.
  
  @menu
  * Images and tables::           Tables and Images will be included
  * Literal examples::            Source code examples with special formatting
  * Include files::               Include additional files into a document
 +* Index entries::               Making an index
  * Macro replacement::           Use macros to create complex output
  * Embedded LaTeX::              LaTeX can be freely used inside Org documents
  @end menu
@@@ -8559,9 -8201,9 +8559,9 @@@ the table of contents entirely, by conf
  @cindex text before first headline, markup rules
  @cindex #+TEXT
  
 -Org mode normally exports the text before the first headline, and even uses
 +Org-mode normally exports the text before the first headline, and even uses
  the first line as the document title.  The text will be fully marked up.  If
 -you need to include literal HTML, La@TeX{}, or DocBook code, use the special
 +you need to include literal HTML, @LaTeX{}, or DocBook code, use the special
  constructs described below in the sections for the individual exporters.
  
  @vindex org-export-skip-text-before-1st-heading
@@@ -8654,7 -8296,7 +8654,7 @@@ different backends support this to vary
  You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
  and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
  in the code and verbatim string is not processed for Org-mode specific
 -syntax, it is exported verbatim.
 +syntax; it is exported verbatim.
  
  @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
  @subheading  Horizontal rules
@@@ -8687,12 -8329,11 +8687,12 @@@ Toggle the COMMENT keyword at the begin
  @cindex tables, markup rules
  @cindex #+CAPTION
  @cindex #+LABEL
 -Both the native Org mode tables (@pxref{Tables}) and tables formatted with
 -the @file{table.el} package will be exported properly.  For Org mode tables,
 +Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
 +the @file{table.el} package will be exported properly.  For Org-mode tables,
  the lines before the first horizontal separator line will become table header
  lines.  You can use the following lines somewhere before the table to assign
 -a caption and a label for cross references:
 +a caption and a label for cross references, and in the text you can refer to
 +the object with @code{\ref@{tab:basic-data@}}:
  
  @example
  #+CAPTION: This is the caption for the next table (or link)
  @end example
  
  @cindex inlined images, markup rules
 -Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
 +Some backends (HTML, @LaTeX{}, and DocBook) allow you to directly include
  images into the exported document.  Org does this, if a link to an image
  files does not have a description part, for example @code{[[./img/a.jpg]]}.
  If you wish to define a caption for the image and maybe a label for internal
 -cross references, you sure that the link is on a line by itself precede it
 -with:
 +cross references, make sure that the link is on a line by itself and precede
 +it with @code{#+CAPTION} and @code{#+LABEL} as follows:
  
  @example
  #+CAPTION: This is the caption for the next figure link (or table)
@@@ -8719,7 -8360,6 +8719,7 @@@ You may also define additional attribut
  backend-specific, see the sections about the individual backends for more
  information.
  
 +@xref{Handling links,the discussion of image links}.
  
  @node Literal examples, Include files, Images and tables, Markup
  @section Literal examples
@@@ -8751,31 -8391,20 +8751,31 @@@ Here is an exampl
  @cindex formatting source code, markup rules
  If the example is source code from a programming language, or any other text
  that can be marked up by font-lock in Emacs, you can ask for the example to
 -look like the fontified Emacs buffer@footnote{Currently this works for the
 -HTML backend, and requires the @file{htmlize.el} package version 1.34 or
 -later.  It also works for LaTeX with the listings package, if you turn on the
 -option @code{org-export-latex-listings} and make sure that the listings
 -package is included by the LaTeX header.}.  This is done with the @samp{src}
 -block, where you also need to specify the name of the major mode that should
 -be used to fontify the example:
 +look like the fontified Emacs buffer@footnote{This works automatically for
 +the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
 +which is distributed with Org).  Fontified code chunks in LaTeX can be
 +achieved using either the listings or the
 +@url{http://code.google.com/p/minted, minted,} package. To use listings, turn
 +on the variable @code{org-export-latex-listings} and ensure that the listings
 +package is included by the LaTeX header (e.g. by configuring
 +@code{org-export-latex-packages-alist}). See the listings documentation for
 +configuration options, including obtaining colored output.  For minted it is
 +necessary to install the program @url{http://pygments.org, pygments}, in
 +addition to setting @code{org-export-latex-minted}, ensuring that the minted
 +package is included by the LaTeX header, and ensuring that the
 +@code{-shell-escape} option is passed to @file{pdflatex} (see
 +@code{org-latex-to-pdf-process}). See the documentation of the variables
 +@code{org-export-latex-listings} and @code{org-export-latex-minted} for
 +further details.}.  This is done with the @samp{src} block, where you also
 +need to specify the name of the major mode that should be used to fontify the
 +example:
  @cindex #+BEGIN_SRC
  
  @example
  #+BEGIN_SRC emacs-lisp
 -(defun org-xor (a b)
 -   "Exclusive or."
 -   (if a (not b) b))
 +  (defun org-xor (a b)
 +     "Exclusive or."
 +     (if a (not b) b))
  #+END_SRC
  @end example
  
@@@ -8821,8 -8450,8 +8821,8 @@@ Edit the source code example at point i
  switching to a temporary buffer with the source code.  You need to exit by
  pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
  or @samp{#} will get a comma prepended, to keep them from being interpreted
 -by Org as outline nodes or special comments.  These commas will be striped
 -for editing with @kbd{C-c '}, and also for export.}, the edited version will
 +by Org as outline nodes or special comments.  These commas will be stripped
 +for editing with @kbd{C-c '}, and also for export.}.  The edited version will
  then replace the old version in the Org buffer.  Fixed-width regions
  (where each line starts with a colon followed by a space) will be edited
  using @code{artist-mode}@footnote{You may select a different-mode with the
@@@ -8832,14 -8461,14 +8832,14 @@@ fixed-width region
  @kindex C-c l
  @item C-c l
  Calling @code{org-store-link} while editing a source code example in a
 -temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
 +temporary buffer created with @kbd{C-c '} will prompt for a label.  Make sure
  that it is unique in the current buffer, and insert it with the proper
  formatting like @samp{(ref:label)} at the end of the current line.  Then the
  label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
  @end table
  
  
 -@node Include files, Macro replacement, Literal examples, Markup
 +@node Include files, Index entries, Literal examples, Markup
  @section Include files
  @cindex include files, markup rules
  
@@@ -8853,14 -8482,12 +8853,14 @@@ include your @file{.emacs} file, you co
  @noindent
  The optional second and third parameter are the markup (e.g. @samp{quote},
  @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
 -language for formatting the contents.  The markup is optional, if it is not
 -given, the text will be assumed to be in Org mode format and will be
 +language for formatting the contents.  The markup is optional; if it is not
 +given, the text will be assumed to be in Org-mode format and will be
  processed normally.  The include line will also allow additional keyword
  parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
 -first line and for each following line, as well as any options accepted by
 -the selected markup.  For example, to include a file as an item, use
 +first line and for each following line, @code{:minlevel} in order to get
 +org-mode content demoted to a specified level, as well as any options
 +accepted by the selected markup.  For example, to include a file as an item,
 +use
  
  @example
  #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
  Visit the include file at point.
  @end table
  
 +@node Index entries, Macro replacement, Include files, Markup
 +@section Index entries
 +@cindex index entries, for publishing
 +
 +You can specify entries that will be used for generating an index during
 +publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
 +the contains an exclamation mark will create a sub item.  See @ref{Generating
 +an index} for more information.
 +
 +@example
 +* Curriculum Vitae
 +#+INDEX: CV
 +#+INDEX: Application!CV
 +@end example
 +
 +
 +
  
 -@node Macro replacement, Embedded LaTeX, Include files, Markup
 +@node Macro replacement, Embedded LaTeX, Index entries, Markup
  @section Macro replacement
  @cindex macro replacement, during export
  @cindex #+MACRO
@@@ -8916,19 -8526,23 +8916,19 @@@ construct complex HTML code
  
  
  @node Embedded LaTeX,  , Macro replacement, Markup
 -@section Embedded La@TeX{}
 +@section Embedded @LaTeX{}
  @cindex @TeX{} interpretation
 -@cindex La@TeX{} interpretation
 -
 -Plain ASCII is normally sufficient for almost all note taking.  One
 -exception, however, are scientific notes which need to be able to contain
 -mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
 -is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
 -features described here as ``La@TeX{}'' are really from @TeX{}, but for
 -simplicity I am blurring this distinction.}  is widely used to typeset
 -scientific documents. Org mode supports embedding La@TeX{} code into its
 -files, because many academics are used to reading La@TeX{} source code, and
 -because it can be readily processed into images for HTML production.
 -
 -It is not necessary to mark La@TeX{} macros and code in any special way.
 -If you observe a few conventions, Org mode knows how to find it and what
 -to do with it.
 +@cindex @LaTeX{} interpretation
 +
 +Plain ASCII is normally sufficient for almost all note taking.  Exceptions
 +include scientific notes, which often require mathematical symbols and the
 +occasional formula.  @LaTeX{}@footnote{@LaTeX{} is a macro system based on
 +Donald E. Knuth's @TeX{} system.  Many of the features described here as
 +``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
 +distinction.}  is widely used to typeset scientific documents. Org-mode
 +supports embedding @LaTeX{} code into its files, because many academics are
 +used to writing and reading @LaTeX{} source code, and because it can be
 +readily processed to produce pretty output for a number of export backends.
  
  @menu
  * Special symbols::             Greek letters and other symbols
  @cindex math symbols
  @cindex special symbols
  @cindex @TeX{} macros
 -@cindex La@TeX{} fragments, markup rules
 +@cindex @LaTeX{} fragments, markup rules
  @cindex HTML entities
 -@cindex La@TeX{} entities
 +@cindex @LaTeX{} entities
  
 -You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
 +You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
  indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
  for these macros is available, just type @samp{\} and maybe a few letters,
 -and press @kbd{M-@key{TAB}} to see possible completions.  Unlike La@TeX{}
 -code, Org mode allows these macros to be present without surrounding math
 +and press @kbd{M-@key{TAB}} to see possible completions.  Unlike @LaTeX{}
 +code, Org-mode allows these macros to be present without surrounding math
  delimiters, for example:
  
  @example
  Angles are written as Greek letters \alpha, \beta and \gamma.
  @end example
  
 -@vindex org-html-entities
 +@vindex org-entities
  During export, these symbols will be transformed into the native format of
  the exporter backend.  Strings like @code{\alpha} will be exported as
 -@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
 +@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
  output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
 -@code{~} in La@TeX{}.  If you need such a symbol inside a word, terminate it
 +@code{~} in @LaTeX{}.  If you need such a symbol inside a word, terminate it
  like this: @samp{\Aacute@{@}stor}.
  
  A large number of entities is provided, with names taken from both HTML and
 -La@TeX{}, see the variable @code{org-html-entities} for the complete list.
 +@LaTeX{}; see the variable @code{org-entities} for the complete list.
  @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
  @samp{...} are all converted into special commands creating hyphens of
  different lengths or a compact set of dots.
  
 +If you would like to see entities displayed as UTF8 characters, use the
 +following command@footnote{You can turn this on by default by setting the
 +variable @code{org-pretty-entities}, or on a per-file base with the
 +@code{#+STARTUP} option @code{entitiespretty}.}:
 +
 +@table @kbd
 +@kindex C-c C-x \
 +@item C-c C-x \
 +Toggle display of entities as UTF-8 characters.  This does not change the
 +buffer content which remains plain ASCII, but it overlays the UTF-8 character
 +for display purposes only.
 +@end table
 +
  @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
  @subsection Subscripts and superscripts
  @cindex subscript
  @cindex superscript
  
 -Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
 +Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
  and subscripts.  Again, these can be used without embedding them in
  math-mode delimiters.  To increase the readability of ASCII text, it is
  not necessary (but OK) to surround multi-character sub- and superscripts
  with curly braces.  For example
  
  @example
 -The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
 +The mass of the sun is M_sun = 1.989 x 10^30 kg.  The radius of
  the sun is R_@{sun@} = 6.96 x 10^8 m.
  @end example
  
@@@ -9013,49 -8614,39 +9013,49 @@@ convention, or use, on a per-file basis
  #+OPTIONS: ^:@{@}
  @end example
  
 +@noindent With this setting, @samp{a_b} will not be interpreted as a
 +subscript, but @samp{a_@{b@}} will.
 +
 +@table @kbd
 +@kindex C-c C-x \
 +@item C-c C-x \
 +In addition to showing entities as UTF-8 characters, this command will also
 +format sub- and superscripts in a WYSIWYM way.
 +@end table
  
  @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
 -@subsection La@TeX{} fragments
 -@cindex La@TeX{} fragments
 +@subsection @LaTeX{} fragments
 +@cindex @LaTeX{} fragments
  
  @vindex org-format-latex-header
 -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 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
 +Going beyond symbols and sub- and superscripts, a full formula language is
 +needed.  Org-mode can contain @LaTeX{} math fragments, and it supports ways
 +to process these for several export backends.  When exporting to @LaTeX{},
 +the code is obviously left as it is.  When exporting to HTML, Org invokes the
 +@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
 +HTML export}) to process and display the math@footnote{If you plan to use
 +this regularly or on pages with significant page views, you should install
 +@file{MathJax} on your own
 +server in order to limit the load of our server.}.  Finally, it can also
 +process the mathematical expressions into images@footnote{For this to work
 +you need to be on a system with a working @LaTeX{} 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}.
 +@url{http://sourceforge.net/projects/dvipng/}.  The @LaTeX{} header that will
 +be used when processing a fragment can be configured with the variable
 +@code{org-format-latex-header}.}  that can be displayed in a browser or in
 +DocBook documents.
  
 -La@TeX{} fragments don't need any special marking at all.  The following
 -snippets will be identified as La@TeX{} source code:
 +@LaTeX{} fragments don't need any special marking at all.  The following
 +snippets will be identified as @LaTeX{} source code:
  @itemize @bullet
  @item
 -Environments of any kind.  The only requirement is that the
 -@code{\begin} statement appears on a new line, preceded by only
 -whitespace.
 +Environments of any kind@footnote{When @file{MathJax} is used, only the
 +environment recognized by @file{MathJax} will be processed.  When
 +@file{dvipng} is used to create images, any @LaTeX{} environments will be
 +handled.}.  The only requirement is that the @code{\begin} statement appears
 +on a new line, preceded by only whitespace.
  @item
 -Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
 +Text within the usual @LaTeX{} math delimiters.  To avoid conflicts with
  currency specifications, single @samp{$} characters are only recognized as
  math delimiters if the enclosed text contains at most two line breaks, is
  directly attached to the @samp{$} characters with no whitespace in between,
@@@ -9079,33 -8670,19 +9079,33 @@@ either $$ a=+\sqrt@{2@} $$ or \[ a=-\sq
  @vindex org-format-latex-options
  If you need any of the delimiter ASCII sequences for other purposes, you
  can configure the option @code{org-format-latex-options} to deselect the
 -ones you do not wish to have interpreted by the La@TeX{} converter.
 +ones you do not wish to have interpreted by the @LaTeX{} converter.
 +
 +@vindex org-export-with-LaTeX-fragments
 +LaTeX processing can be configured with the variable
 +@code{org-export-with-LaTeX-fragments}.  The default setting is @code{t}
 +which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
 +LaTeX backends.  You can also set this variable on a per-file basis using one
 +of these lines:
 +
 +@example
 +#+OPTIONS: LaTeX:t          @r{Do the right thing automatically (MathJax)}
 +#+OPTIONS: LaTeX:dvipng     @r{Force using dvipng images}
 +#+OPTIONS: LaTeX:nil        @r{Do not process @LaTeX{} fragments at all}
 +#+OPTIONS: LaTeX:verbatim   @r{Verbatim export, for jsMath or so}
 +@end example
  
  @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
  @subsection Previewing LaTeX fragments
  @cindex LaTeX fragments, preview
  
 -La@TeX{} fragments can be processed to produce preview images of the
 -typeset expressions:
 +If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
 +produce preview images of the typeset expressions:
  
  @table @kbd
  @kindex C-c C-x C-l
  @item C-c C-x C-l
 -Produce a preview image of the La@TeX{} fragment at point and overlay it
 +Produce a preview image of the @LaTeX{} fragment at point and overlay it
  over the source code.  If there is no fragment at point, process all
  fragments in the current entry (between two headlines).  When called
  with a prefix argument, process the entire subtree.  When called with
@@@ -9122,18 -8699,26 +9122,18 @@@ some aspects of the preview. In particu
  export, @code{:html-scale}) property can be used to adjust the size of the
  preview images.
  
 -During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
 -converted into images and inlined into the document if the following
 -setting is active:
 -
 -@lisp
 -(setq org-export-with-LaTeX-fragments t)
 -@end lisp
 -
  @node CDLaTeX mode,  , Previewing LaTeX fragments, Embedded LaTeX
  @subsection Using CDLa@TeX{} to enter math
  @cindex CDLa@TeX{}
  
  CDLa@TeX{} mode is a minor mode that is normally used in combination with a
 -major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
 -environments and math templates.  Inside Org mode, you can make use of
 +major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
 +environments and math templates.  Inside Org-mode, you can make use of
  some of the features of CDLa@TeX{} mode.  You need to install
  @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
  AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
 -Don't use CDLa@TeX{} mode itself under Org mode, but use the light
 -version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
 +Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
 +version @code{org-cdlatex-mode} that comes as part of Org-mode.  Turn it
  on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
  Org files with
  
@@@ -9150,7 -8735,7 +9150,7 @@@ Environment templates can be inserted w
  @item
  @kindex @key{TAB}
  The @key{TAB} key will do template expansion if the cursor is inside a
 -La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
 +@LaTeX{} 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
@@@ -9164,7 -8749,7 +9164,7 @@@ To get a list of all abbreviations, typ
  @kindex _
  @kindex ^
  @vindex cdlatex-simplify-sub-super-scripts
 -Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
 +Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} 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
  @item
  @kindex `
  Pressing the backquote @kbd{`} followed by a character inserts math
 -macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
 +macros, also outside @LaTeX{} fragments.  If you wait more than 1.5 seconds
  after the backquote, a help window will pop up.
  @item
  @kindex '
  Pressing the single-quote @kbd{'} followed by another character modifies
  the symbol before point with an accent or a font.  If you wait more than
 -1.5 seconds after the backquote, a help window will pop up.  Character
 -modification will work only inside La@TeX{} fragments, outside the quote
 +1.5 seconds after the single-quote, a help window will pop up.  Character
 +modification will work only inside @LaTeX{} fragments; outside the quote
  is normal.
  @end itemize
  
@@@ -9191,14 -8776,13 +9191,14 @@@ Org-mode documents can be exported int
  printing and sharing of notes, ASCII export produces a readable and simple
  version of an Org 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. La@TeX{} export lets you use Org mode and
 -its structured editing functions to easily create La@TeX{} files.  DocBook
 +broad range of other applications. @LaTeX{} export lets you use Org-mode and
 +its structured editing functions to easily create @LaTeX{} files.  DocBook
  export makes it possible to convert Org files to many other formats using
 -DocBook tools.  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.
 +DocBook tools.  For project management you can create gantt and resource
 +charts by using TaskJuggler export.  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.
  
  Org supports export of selected regions when @code{transient-mark-mode} is
  enabled (default in Emacs 23).
  * Selective export::            Using tags to select and exclude trees
  * Export options::              Per-file export settings
  * The export dispatcher::       How to access exporter commands
 -* ASCII export::                Exporting to plain ASCII
 +* ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
  * HTML export::                 Exporting to HTML
 -* LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
 +* LaTeX and PDF export::        Exporting to @LaTeX{}, and processing to PDF
  * DocBook export::              Exporting to DocBook
 +* TaskJuggler export::          Exporting to TaskJuggler
  * Freemind export::             Exporting to Freemind mind maps
  * XOXO export::                 Exporting to XOXO
  * iCalendar export::            Exporting in iCalendar format
@@@ -9256,7 -8839,8 +9256,7 @@@ In particular, note that you can place 
  a separate file which can be included using @code{#+SETUPFILE}.
  
  @table @kbd
 -@kindex C-c C-e t
 -@item C-c C-e t
 +@orgcmd{C-c C-e t,org-insert-export-options-template}
  Insert template with export options, see example below.
  @end table
  
  @cindex #+LINK_HOME
  @cindex #+EXPORT_SELECT_TAGS
  @cindex #+EXPORT_EXCLUDE_TAGS
 +@cindex #+XSLT
  @cindex #+LATEX_HEADER
  @vindex user-full-name
  @vindex user-mail-address
  @example
  #+TITLE:       the title to be shown (default is the buffer name)
  #+AUTHOR:      the author (default taken from @code{user-full-name})
 -#+DATE:        a date, fixed, of a format string for @code{format-time-string}
 +#+DATE:        a date, fixed, or a format string for @code{format-time-string}
  #+EMAIL:       his/her email address (default from @code{user-mail-address})
  #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
  #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
  #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
  #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
  #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
 +#+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file
  @end example
  
  @noindent
  The OPTIONS line is a compact@footnote{If you want to configure many options
 -this way, you can use several OPTIONS lines.} form to specify export settings.  Here
 -you can:
 +this way, you can use several OPTIONS lines.} form to specify export
 +settings.  Here you can:
  @cindex headline levels
  @cindex section-numbers
  @cindex table of contents
  @cindex special strings
  @cindex emphasized text
  @cindex @TeX{} macros
 -@cindex La@TeX{} fragments
 +@cindex @LaTeX{} 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 line-break-preservation}
 +\n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
  @@:         @r{turn on/off quoted HTML tags}
  ::         @r{turn on/off fixed-width sections}
  |:         @r{turn on/off tables}
@@@ -9338,21 -8920,17 +9338,21 @@@ tags:      @r{turn on/off inclusion of 
  <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
  *:         @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}
 +LaTeX:     @r{configure export of @LaTeX{} fragments.  Default @code{auto}}
  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}
 +email:     @r{turn on/off inclusion of author email into exported file}
  creator:   @r{turn on/off inclusion of creator info into exported file}
  timestamp: @r{turn on/off inclusion creation time into exported file}
  d:         @r{turn on/off inclusion of drawers}
  @end example
  @noindent
 -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.
 +These options take effect in both the HTML and @LaTeX{} export, except for
 +@code{TeX} and @code{LaTeX}, which are respectively @code{t} and @code{nil}
 +for the @LaTeX{} export.  The default values for these and many other options
 +are given by a set of variables.  For a list of such variables, the
 +corresponding OPTIONS keys and also the publishing keys (@pxref{Project
 +alist}), see the constant @code{org-export-plist-vars}.
  
  When exporting only a single subtree by selecting it with @kbd{C-c @@} before
  calling an export command, the subtree can overrule some of the file's export
@@@ -9360,7 -8938,7 +9360,7 @@@ settings with properties @code{EXPORT_F
  @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
  @code{EXPORT_OPTIONS}.
  
 -@node The export dispatcher, ASCII export, Export options, Exporting
 +@node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
  @section The export dispatcher
  @cindex dispatcher, for export commands
  
@@@ -9371,7 -8949,8 +9371,7 @@@ contains one outline tree, the first he
  the subtrees are exported.
  
  @table @kbd
 -@kindex C-c C-e
 -@item C-c C-e
 +@orgcmd{C-c C-e,org-export}
  @vindex org-export-run-in-background
  Dispatcher for export and publishing commands.  Displays a help-window
  listing the additional key(s) needed to launch an export or publishing
@@@ -9379,31 -8958,31 +9379,31 @@@ command.  The prefix arg is passed thro
  @kbd{C-u C-u} causes most commands to be executed in the background, in a
  separate Emacs process@footnote{To make this behavior the default, customize
  the variable @code{org-export-run-in-background}.}.
 -@kindex C-c C-e v
 -@item C-c C-e v
 +@orgcmd{C-c C-e v,org-export-visible}
  Like @kbd{C-c C-e}, but only export the text that is currently visible
  (i.e. not hidden by outline visibility).
 -@kindex C-u C-u C-c C-e
 -@item C-u C-u C-c C-e
 +@orgcmd{C-u C-u C-c C-e,org-export}
  @vindex org-export-run-in-background
 -Call an the exporter, but reverse the setting of
 +Call the exporter, but reverse the setting of
  @code{org-export-run-in-background}, i.e. request background processing if
  not set, or force processing in the current Emacs process if set.
  @end table
  
 -@node ASCII export, HTML export, The export dispatcher, Exporting
 -@section ASCII export
 +@node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
 +@section ASCII/Latin-1/UTF-8 export
  @cindex ASCII export
 +@cindex Latin-1 export
 +@cindex UTF-8 export
  
  ASCII export produces a simple and very readable version of an Org-mode
 -file.
 +file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
 +with special characters and symbols available in these encodings.
  
  @cindex region, active
  @cindex active region
  @cindex transient-mark-mode
  @table @kbd
 -@kindex C-c C-e a
 -@item C-c C-e a
 +@orgcmd{C-c C-e a,org-export-as-ascii}
  @cindex property, EXPORT_FILE_NAME
  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
@@@ -9414,15 -8993,11 +9414,15 @@@ current subtree, use @kbd{C-c @@}.}, th
  become the document title.  If the tree head entry has or inherits an
  @code{EXPORT_FILE_NAME} property, that name will be used for the
  export.
 -@kindex C-c C-e A
 -@item C-c C-e A
 -Export to a temporary buffer, do not create a file.
 -@kindex C-c C-e v a
 -@item C-c C-e v a
 +@orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
 +Export to a temporary buffer.  Do not create a file.
 +@orgcmd{C-c C-e n,org-export-as-latin1}
 +@xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
 +Like the above commands, but use Latin-1 encoding.
 +@orgcmd{C-c C-e u,org-export-as-utf8}
 +@xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
 +Like the above commands, but use UTF-8 encoding.
 +@item C-c C-e v a/n/u
  Export only the visible part of the document.
  @end table
  
@@@ -9450,24 -9025,23 +9450,24 @@@ Links will be exported in a footnote-li
  the text and the link in a note before the next heading.  See the variable
  @code{org-export-ascii-links-to-notes} for details and other options.
  
 -@node HTML export, LaTeX and PDF export, ASCII export, Exporting
 +@node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
  @section HTML export
  @cindex HTML export
  
 -Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
 +Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
  HTML formatting, in ways similar to John Gruber's @emph{markdown}
  language, but with additional support for tables.
  
  @menu
  * HTML Export commands::        How to invoke HTML export
 -* Quoting HTML tags::           Using direct HTML in Org mode
 +* Quoting HTML tags::           Using direct HTML in Org-mode
  * Links in HTML export::        How links will be interpreted and formatted
  * Tables in HTML export::       How to modify the formatting of tables
  * Images in HTML export::       How to insert figures into HTML output
 +* Math formatting in HTML export::  Beautiful math also on the web
  * Text areas in HTML export::   An alternative way to show an example
  * CSS support::                 Changing the appearance of the output
 -* Javascript support::          Info and Folding in a web browser
 +* JavaScript support::          Info and Folding in a web browser
  @end menu
  
  @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
  @cindex active region
  @cindex transient-mark-mode
  @table @kbd
 -@kindex C-c C-e h
 -@item C-c C-e h
 +@orgcmd{C-c C-e h,org-export-as-html}
  @cindex property, EXPORT_FILE_NAME
  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
@@@ -9487,15 -9062,25 +9487,15 @@@ exported. If the selected region is a s
  current subtree, use @kbd{C-c @@}.}, the tree head will become the document
  title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
  property, that name will be used for the export.
 -@kindex C-c C-e b
 -@item C-c C-e b
 +@orgcmd{C-c C-e b,org-export-as-html-and-open}
  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 R
 +@orgcmd{C-c C-e H,org-export-as-html-to-buffer}
 +Export to a temporary buffer.  Do not create a file.
 +@orgcmd{C-c C-e R,org-export-region-as-html}
  Export the active region to a temporary buffer.  With a prefix argument, do
  not produce the file header and footer, 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
 +@item C-c C-e v h/b/H/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
@@@ -9589,7 -9174,7 +9589,7 @@@ tables, place something like the follow
  #+ATTR_HTML: border="2" rules="all" frame="all"
  @end example
  
 -@node Images in HTML export, Text areas in HTML export, Tables in HTML export, HTML export
 +@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
  @subsection Images in HTML export
  
  @cindex images, inline in HTML
@@@ -9611,7 -9196,7 +9611,7 @@@ will link to a high resolution version 
  [[file:highres.jpg][file:thumb.jpg]]
  @end example
  
 -If you need to add attributes to an inlines image, use a @code{#+ATTR_HTML}.
 +If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
  In the example below we specify the @code{alt} and @code{title} attributes to
  support text viewers and accessibility, and align it to the right.
  
  @noindent
  and you could use @code{http} addresses just as well.
  
 -@node Text areas in HTML export, CSS support, Images in HTML export, HTML export
 +@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
 +@subsection Math formatting in HTML export
 +@cindex MathJax
 +@cindex dvipng
 +
 +@LaTeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
 +different ways on HTML pages.  The default is to use the
 +@uref{http://www.mathjax.org, MathJax system} which should work out of the
 +box with Org mode installation because @code{http://orgmode.org} serves
 +@file{MathJax} for Org-mode users for small applications and for testing
 +purposes.  @b{If you plan to use this regularly or on pages with significant
 +page views, you should install@footnote{Installation instructions can be
 +found on the MathJax website, see
 +@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
 +your own server in order to limit the load of our server.}  To configure
 +@file{MathJax}, use the variable @code{org-export-html-mathjax-options} or
 +insert something like the following into the buffer:
 +
 +@example
 +#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
 +@end example
 +
 +@noindent See the docstring of the variable
 +@code{org-export-html-mathjax-options} for the meaning of the parameters in
 +this line.
 +
 +If you prefer, you can also request that @LaTeX{} fragments are processed
 +into small images that will be inserted into the browser page.  Before the
 +availability of MathJax, this was the default method for Org files.  This
 +method requires that the @file{dvipng} program is available on your system.
 +You can still get this processing with
 +
 +@example
 +#+OPTIONS: LaTeX:dvipng
 +@end example
 +
 +@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
  @subsection Text areas in HTML export
  
  @cindex text areas, in HTML
@@@ -9677,14 -9226,14 +9677,14 @@@ respectively.  For exampl
  
  @example
  #+BEGIN_EXAMPLE -t -w 40
 -(defun org-xor (a b)
 -   "Exclusive or."
 -   (if a (not b) b))
 +  (defun org-xor (a b)
 +     "Exclusive or."
 +     (if a (not b) b))
  #+END_EXAMPLE
  @end example
  
  
 -@node CSS support, Javascript support, Text areas in HTML export, HTML export
 +@node CSS support, JavaScript support, Text areas in HTML export, HTML export
  @subsection CSS support
  @cindex CSS, for HTML export
  @cindex HTML export, CSS
@@@ -9739,7 -9288,7 +9739,7 @@@ inclusion of these defaults off, custom
  @code{org-export-html-style-include-default}}.  You may overwrite these
  settings, or add to them by using the variables @code{org-export-html-style}
  (for Org-wide settings) and @code{org-export-html-style-extra} (for more
 -granular settings, like file-local settings).  To set the latter variable
 +fine-grained settings, like file-local settings).  To set the latter variable
  individually for each file, you can use
  
  @cindex #+STYLE
@@@ -9752,16 -9301,11 +9752,16 @@@ For longer style definitions, you can u
  directly write a @code{<style>} @code{</style>} section in this way, without
  referring to an external file.
  
 +In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
 +property to assign a class to the tree.  In order to specify CSS styles for a
 +particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
 +property.
 +
  @c FIXME: More about header and footer styles
  @c FIXME: Talk about links and targets.
  
 -@node Javascript support,  , CSS support, HTML export
 -@subsection Javascript supported display of web pages
 +@node JavaScript support,  , CSS support, HTML export
 +@subsection JavaScript supported display of web pages
  
  @cindex Rose, Sebastian
  Sebastian Rose has written a JavaScript program especially designed to
@@@ -9807,11 -9351,11 +9807,11 @@@ sdepth:  @r{Maximum headline level tha
           @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
           @r{If this is smaller than in @code{org-export-headline-levels}, each}
           @r{info/folding section can still contain child headlines.}
 -toc:     @r{Should the table of content @emph{initially} be visible?}
 +toc:     @r{Should the table of contents @emph{initially} be visible?}
           @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
  tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
           @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
 -ftoc:    @r{Does the css of the page specify a fixed position for the "toc"?}
 +ftoc:    @r{Does the CSS of the page specify a fixed position for the "toc"?}
           @r{If yes, the toc will never be displayed as a section.}
  ltoc:    @r{Should there be short contents (children) in each section?}
           @r{Make this @code{above} if the section should be above initial text.}
@@@ -9828,40 -9372,35 +9828,40 @@@ You can choose default values for thes
  pages, configure the variable @code{org-export-html-use-infojs}.
  
  @node LaTeX and PDF export, DocBook export, HTML export, Exporting
 -@section La@TeX{} and PDF export
 -@cindex La@TeX{} export
 +@section @LaTeX{} and PDF export
 +@cindex @LaTeX{} export
  @cindex PDF export
  @cindex Guerry, Bastien
  
 -Org mode contains a La@TeX{} exporter written by Bastien Guerry.  With
 -further processing, this backend is also used to produce PDF output.  Since
 -the La@TeX{} output uses @file{hyperref} to implement links and cross
 -references, the PDF output file will be fully linked.
 +Org-mode contains a @LaTeX{} exporter written by Bastien Guerry.  With
 +further processing@footnote{The default LaTeX output is designed for
 +processing with pdftex or latex.  It includes packages that are not
 +compatible with xetex and possibly luatex.  See the variables
 +@code{org-export-latex-default-packages-alist} and
 +@code{org-export-latex-packages-alist}.}, this backend is also used to
 +produce PDF output.  Since the @LaTeX{} output uses @file{hyperref} to
 +implement links and cross references, the PDF output file will be fully
 +linked.
  
  @menu
  * LaTeX/PDF export commands::   Which key invokes which commands
 -* Quoting LaTeX code::          Incorporating literal La@TeX{} code
 -* Sectioning structure::        Changing sectioning in La@TeX{} output
 -* Tables in LaTeX export::      Options for exporting tables to La@TeX{}
 -* Images in LaTeX export::      How to insert figures into La@TeX{} output
 +* Header and sectioning::       Setting up the export file structure
 +* Quoting LaTeX code::          Incorporating literal @LaTeX{} code
 +* Tables in LaTeX export::      Options for exporting tables to @LaTeX{}
 +* Images in LaTeX export::      How to insert figures into @LaTeX{} output
 +* Beamer class export::         Turning the file into a presentation
  @end menu
  
 -@node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
 -@subsection La@TeX{} export commands
 +@node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
 +@subsection @LaTeX{} export commands
  
  @cindex region, active
  @cindex active region
  @cindex transient-mark-mode
  @table @kbd
 -@kindex C-c C-e l
 -@item C-c C-e l
 +@orgcmd{C-c C-e l,org-export-as-latex}
  @cindex property EXPORT_FILE_NAME
 -Export as La@TeX{} file @file{myfile.tex}.  For an Org file
 +Export as @LaTeX{} file @file{myfile.tex}.  For an Org file
  @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
  be overwritten without warning.  If there is an active region@footnote{This
  requires @code{transient-mark-mode} be turned on.}, only the region will be
@@@ -9869,21 -9408,27 +9869,21 @@@ exported. If the selected region is a s
  current subtree, use @kbd{C-c @@}.}, the tree head will become the document
  title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
  property, that name will be used for the export.
 -@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
 +@orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
 +Export to a temporary buffer.  Do not create a file.
 +@item C-c C-e v l/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
 +Convert the region to @LaTeX{} 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{}
 +Replace the active region (assumed to be in Org-mode syntax) by @LaTeX{}
  code.
 -@kindex C-c C-e p
 -@item C-c C-e p
 -Export as La@TeX{} and then process to PDF.
 -@kindex C-c C-e d
 -@item C-c C-e d
 -Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
 +@orgcmd{C-c C-e p,org-export-as-pdf}
 +Export as @LaTeX{} and then process to PDF.
 +@orgcmd{C-c C-e d,org-export-as-pdf-and-open}
 +Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
  @end table
  
  @cindex headline levels, for exporting
@@@ -9904,47 -9449,13 +9904,47 @@@ with a numeric prefix argument. For exa
  @noindent
  creates two levels of headings and does the rest as items.
  
 -@node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
 -@subsection Quoting La@TeX{} code
 +@node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
 +@subsection Header and sectioning structure
 +@cindex @LaTeX{} class
 +@cindex @LaTeX{} sectioning structure
 +@cindex @LaTeX{} header
 +@cindex header, for LaTeX files
 +@cindex sectioning structure, for LaTeX export
 +
 +By default, the @LaTeX{} output uses the class @code{article}.
 +
 +@vindex org-export-latex-default-class
 +@vindex org-export-latex-classes
 +@vindex org-export-latex-default-packages-alist
 +@vindex org-export-latex-packages-alist
 +@cindex #+LATEX_HEADER
 +@cindex #+LATEX_CLASS
 +@cindex #+LATEX_CLASS_OPTIONS
 +@cindex property, LATEX_CLASS
 +@cindex property, LATEX_CLASS_OPTIONS
 +You can change this globally by setting a different value for
 +@code{org-export-latex-default-class} or locally by adding an option like
 +@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
 +property that applies when exporting a region containing only this (sub)tree.
 +The class must be listed in @code{org-export-latex-classes}.  This variable
 +defines a header template for each class@footnote{Into which the values of
 +@code{org-export-latex-default-packages-alist} and
 +@code{org-export-latex-packages-alist} are spliced.}, and allows you to
 +define the sectioning structure for each class.  You can also define your own
 +classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
 +property can specify the options for the @code{\documentclass} macro.  You
 +can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
 +header.  See the docstring of @code{org-export-latex-classes} for more
 +information.
 +
 +@node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
 +@subsection Quoting @LaTeX{} code
  
 -Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
 -inserted into the La@TeX{} file.  This includes simple macros like
 +Embedded @LaTeX{} as described in @ref{Embedded LaTeX}, will be correctly
 +inserted into the @LaTeX{} file.  This includes simple macros like
  @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
 -you can add special code that should only be present in La@TeX{} export with
 +you can add special code that should only be present in @LaTeX{} export with
  the following constructs:
  
  @cindex #+LaTeX
@@@ -9962,17 -9473,35 +9962,17 @@@ All lines between these markers are exp
  #+END_LaTeX
  @end example
  
 -@node  Sectioning structure, Tables in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
 -@subsection Sectioning structure
 -@cindex La@TeX{} class
 -@cindex La@TeX{} sectioning structure
 -
 -By default, the La@TeX{} output uses the class @code{article}.
  
 -@vindex org-export-latex-default-class
 -@vindex org-export-latex-classes
 -@cindex #+LATEX_HEADER
 -@cindex #+LATEX_CLASS
 -@cindex property, LATEX_CLASS
 -You can change this globally by setting a different value for
 -@code{org-export-latex-default-class} or locally by adding an option like
 -@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
 -property that applies when exporting a region containing only this (sub)tree.
 -The class should be listed in @code{org-export-latex-classes}, where you can
 -also define the sectioning structure for each class, as well as defining
 -additional classes.  You can also use @code{#+LATEX_HEADER:
 -\usepackage@{xyz@}} to add lines to the header.
 -
 -@node Tables in LaTeX export, Images in LaTeX export, Sectioning structure, LaTeX and PDF export
 -@subsection Tables in La@TeX{} export
 -@cindex tables, in La@TeX{} export
 +@node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
 +@subsection Tables in @LaTeX{} export
 +@cindex tables, in @LaTeX{} export
  
 -For La@TeX{} export of a table, you can specify a label and a caption
 +For @LaTeX{} export of a table, you can specify a label and a caption
  (@pxref{Images and tables}).  You can also use the @code{ATTR_LaTeX} line to
 -request a longtable environment for the table, so that it may span several
 -pages.  Finally, you can set the alignment string:
 +request a @code{longtable} environment for the table, so that it may span
 +several pages, or provide the @code{multicolumn} keyword that will make the
 +table span the page in a multicolumn environment (@code{table*} environment).
 +Finally, you can set the alignment string:
  
  @cindex #+CAPTION
  @cindex #+LABEL
  @end example
  
  
 -@node Images in LaTeX export,  , Tables in LaTeX export, LaTeX and PDF export
 -@subsection Images in La@TeX{} export
 -@cindex images, inline in La@TeX{}
 -@cindex inlining images in La@TeX{}
 +@node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
 +@subsection Images in @LaTeX{} export
 +@cindex images, inline in @LaTeX{}
 +@cindex inlining images in @LaTeX{}
  
  Images that are linked to without a description part in the link, like
  @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
 -output file resulting from La@TeX{} processing.  Org will use an
 +output file resulting from @LaTeX{} processing.  Org will use an
  @code{\includegraphics} macro to insert the image.  If you have specified a
  caption and/or a label as described in @ref{Images and tables}, the figure
  will be wrapped into a @code{figure} environment and thus become a floating
@@@ -10003,12 -9532,12 +10003,12 @@@ options that can be used in the optiona
  @code{figure} environment, add something like @samp{placement=[h!]} to the
  Attributes.
  
 -If you'd like to let text flow around the image, add the word @samp{wrap} to
 -the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
 -half of the page.  To fine-tune, the @code{placement} field will be the
 -set of additional arguments needed by the @code{wrapfigure} environment.
 -Note that if you change the size of the image, you need to use compatible
 -settings for @code{\includegraphics} and @code{wrapfigure}.
 +If you would like to let text flow around the image, add the word @samp{wrap}
 +to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
 +half of the page.  To fine-tune, the @code{placement} field will be the set
 +of additional arguments needed by the @code{wrapfigure} environment.  Note
 +that if you change the size of the image, you need to use compatible settings
 +for @code{\includegraphics} and @code{wrapfigure}.
  
  @cindex #+CAPTION
  @cindex #+LABEL
  @end example
  
  If you need references to a label created in this way, write
 -@samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
 +@samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
 +
 +@node Beamer class export,  , Images in LaTeX export, LaTeX and PDF export
 +@subsection Beamer class export
 +
 +The LaTeX class @file{beamer} allows production of high quality presentations
 +using LaTeX and pdf processing.  Org-mode has special support for turning an
 +Org-mode file or tree into a @file{beamer} presentation.
 +
 +When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
 +beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
 +@code{beamer}, a special export mode will turn the file or tree into a beamer
 +presentation.  Any tree with not-too-deep level nesting should in principle be
 +exportable as a beamer presentation.  By default, the top-level entries (or
 +the first level below the selected subtree heading) will be turned into
 +frames, and the outline structure below this level will become itemize lists.
 +You can also configure the variable @code{org-beamer-frame-level} to a
 +different level---then the hierarchy above frames will produce the sectioning
 +structure of the presentation.
 +
 +A template for useful in-buffer settings or properties can be inserted into
 +the buffer with @kbd{M-x org-insert-beamer-options-template}.  Among other
 +things, this will install a column view format which is very handy for
 +editing special properties used by beamer.
 +
 +You can influence the structure of the presentation using the following
 +properties:
  
 -@node DocBook export, Freemind export, LaTeX and PDF export, Exporting
 -@section DocBook export
 -@cindex DocBook export
 -@cindex PDF export
 -@cindex Cui, Baoqui
 +@table @code
 +@item BEAMER_env
 +The environment that should be used to format this entry.  Valid environments
 +are defined in the constant @code{org-beamer-environments-default}, and you
 +can define more in @code{org-beamer-environments-extra}.  If this property is
 +set, the entry will also get a @code{:B_environment:} tag to make this
 +visible.  This tag has no semantic meaning, it is only a visual aid.
 +@item BEAMER_envargs
 +The beamer-special arguments that should be used for the environment, like
 +@code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
 +property is also set, something like @code{C[t]} can be added here as well to
 +set an options argument for the implied @code{columns} environment.
 +@code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
 +environment.
 +@item BEAMER_col
 +The width of a column that should start with this entry.  If this property is
 +set, the entry will also get a @code{:BMCOL:} property to make this visible.
 +Also this tag is only a visual aid.  When this is a plain number, it will be
 +interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
 +that you have specified the units, like @samp{3cm}.  The first such property
 +in a frame will start a @code{columns} environment to surround the columns.
 +This environment is closed when an entry has a @code{BEAMER_col} property
 +with value 0 or 1, or automatically at the end of the frame.
 +@item BEAMER_extra
 +Additional commands that should be inserted after the environment has been
 +opened.  For example, when creating a frame, this can be used to specify
 +transitions.
 +@end table
  
 -Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
 +Frames will automatically receive a @code{fragile} option if they contain
 +source code that uses the verbatim environment.  Special @file{beamer}
 +specific code can be inserted using @code{#+BEAMER:} and
 +@code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
 +backends, but with the difference that @code{#+LaTeX:} stuff will be included
 +in the presentation as well.
 +
 +Outline nodes with @code{BEAMER_env} property value @samp{note} or
 +@samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
 +into @code{\note@{...@}}.  The former will include the heading as part of the
 +note text, the latter will ignore the heading of that node.  To simplify note
 +generation, it is actually enough to mark the note with a @emph{tag} (either
 +@code{:B_note:} or @code{:B_noteNH:}) instead of creating the
 +@code{BEAMER_env} property.
 +
 +You can turn on a special minor mode @code{org-beamer-mode} for editing
 +support with
 +
 +@example
 +#+STARTUP: beamer
 +@end example
 +
 +@table @kbd
 +@orgcmd{C-c C-b,org-beamer-select-environment}
 +In @code{org-beamer-mode}, this key offers fast selection of a beamer
 +environment or the @code{BEAMER_col} property.
 +@end table
 +
 +Column view provides a great way to set the environment of a node and other
 +important parameters.  Make sure you are using a COLUMN format that is geared
 +toward this special purpose.  The command @kbd{M-x
 +org-insert-beamer-options-template} defines such a format.
 +
 +Here is a simple example Org document that is intended for beamer export.
 +
 +@smallexample
 +#+LaTeX_CLASS: beamer
 +#+TITLE: Example Presentation
 +#+AUTHOR: Carsten Dominik
 +#+LaTeX_CLASS_OPTIONS: [presentation]
 +#+BEAMER_FRAME_LEVEL: 2
 +#+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
 +#+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
 +
 +* This is the first structural section
 +
 +** Frame 1 \\ with a subtitle
 +*** Thanks to Eric Fraga                                      :BMCOL:B_block:
 +    :PROPERTIES:
 +    :BEAMER_env: block
 +    :BEAMER_envargs: C[t]
 +    :BEAMER_col: 0.5
 +    :END:
 +    for the first viable beamer setup in Org
 +*** Thanks to everyone else                                   :BMCOL:B_block:
 +    :PROPERTIES:
 +    :BEAMER_col: 0.5
 +    :BEAMER_env: block
 +    :BEAMER_envargs: <2->
 +    :END:
 +    for contributing to the discussion
 +**** This will be formatted as a beamer note                  :B_note:
 +** Frame 2 \\ where we will not use columns
 +*** Request                                                   :B_block:
 +    Please test this stuff!
 +    :PROPERTIES:
 +    :BEAMER_env: block
 +    :END:
 +@end smallexample
 +
 +For more information, see the documentation on Worg.
 +
 +@node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
 +@section DocBook export
 +@cindex DocBook export
 +@cindex PDF export
 +@cindex Cui, Baoqiu
 +
 +Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
  exported to DocBook format, it can be further processed to produce other
  formats, including PDF, HTML, man pages, etc., using many available DocBook
  tools and stylesheets.
@@@ -10182,7 -9584,8 +10182,7 @@@ Currently DocBook exporter only support
  @cindex active region
  @cindex transient-mark-mode
  @table @kbd
 -@kindex C-c C-e D
 -@item C-c C-e D
 +@orgcmd{C-c C-e D,org-export-as-docbook}
  @cindex property EXPORT_FILE_NAME
  Export as DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
  file will be @file{myfile.xml}.  The file will be overwritten without
@@@ -10192,7 -9595,8 +10192,7 @@@ exported.  If the selected region is a 
  current subtree, use @kbd{C-c @@}.}, the tree head will become the document
  title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
  property, that name will be used for the export.
 -@kindex C-c C-e V
 -@item C-c C-e V
 +@orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
  Export as DocBook file, process to PDF, then open the resulting PDF file.
  
  @vindex org-export-docbook-xslt-proc-command
@@@ -10202,14 -9606,8 +10202,14 @@@ need to have XSLT processor and XSL-FO 
  system.  Check variables @code{org-export-docbook-xslt-proc-command} and
  @code{org-export-docbook-xsl-fo-proc-command}.
  
 -@kindex C-c C-e v D
 -@item C-c C-e v D
 +@vindex org-export-docbook-xslt-stylesheet
 +The stylesheet argument @code{%s} in variable
 +@code{org-export-docbook-xslt-proc-command} is replaced by the value of
 +variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
 +the user.  You can also overrule this global setting on a per-file basis by
 +adding an in-buffer setting @code{#+XSLT:} to the Org file.
 +
 +@orgkey{C-c C-e v D}
  Export only the visible part of the document.
  @end table
  
@@@ -10244,7 -9642,7 +10244,7 @@@ exported DocBook XML files invalid by n
  #+BEGIN_DOCBOOK
  <warning>
    <para>You should know what you are doing when quoting DocBook XML code
 -  in your Org file.  Invalid DocBook XML file may be generated by
 +  in your Org file.  Invalid DocBook XML may be generated by
    DocBook exporter if you are not careful!</para>
  </warning>
  #+END_DOCBOOK
@@@ -10295,21 -9693,21 +10295,21 @@@ or @code{width}, can be specified in tw
  variable @code{org-export-docbook-default-image-attributes} or use the
  @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
  @code{org-export-docbook-default-image-attributes} are applied to all inline
 -images in the Org file to be exported (unless they are overwritten by image
 +images in the Org file to be exported (unless they are overridden by image
  attributes specified in @code{#+ATTR_DOCBOOK:} lines).
  
  The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
 -attributes or overwrite default image attributes for individual images.  If
 +attributes or override default image attributes for individual images.  If
  the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
  variable @code{org-export-docbook-default-image-attributes}, the former
 -overwrites the latter.  Here is an example about how image attributes can be
 +takes precedence.  Here is an example about how image attributes can be
  set:
  
  @cindex #+CAPTION
  @cindex #+LABEL
  @cindex #+ATTR_DOCBOOK
  @example
 -#+CAPTION:    The logo of Org mode
 +#+CAPTION:    The logo of Org-mode
  #+LABEL:      unicorn-svg
  #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
  [[./img/org-mode-unicorn.svg]]
@@@ -10326,12 -9724,12 +10326,12 @@@ more types to this list as long as DocB
  @cindex Special characters in DocBook export
  
  @vindex org-export-docbook-doctype
 -@vindex org-html-entities
 +@vindex org-entities
  Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
  @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
  characters are rewritten to XML entities, like @code{&alpha;},
  @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
 -@code{org-html-entities}.  As long as the generated DocBook file includes the
 +@code{org-entities}.  As long as the generated DocBook file includes the
  corresponding entities, these special characters are recognized.
  
  You can customize variable @code{org-export-docbook-doctype} to include the
@@@ -10350,143 -9748,16 +10350,143 @@@ special characters included in XHTML en
  "
  @end example
  
 -@node Freemind export, XOXO export, DocBook export, Exporting
 +@node  TaskJuggler export, Freemind export, DocBook export, Exporting
 +@section TaskJuggler export
 +@cindex TaskJuggler export
 +@cindex Project management
 +
 +@uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
 +It provides an optimizing scheduler that computes your project time lines and
 +resource assignments based on the project outline and the constraints that
 +you have provided.
 +
 +The TaskJuggler exporter is a bit different from other exporters, such as the
 +HTML and LaTeX exporters for example, in that it does not export all the
 +nodes of a document or strictly follow the order of the nodes in the
 +document.
 +
 +Instead the TaskJuggler exporter looks for a tree that defines the tasks and
 +a optionally tree that defines the resources for this project. It then
 +creates a TaskJuggler file based on these trees and the attributes defined in
 +all the nodes.
 +
 +@subsection TaskJuggler export commands
 +
 +@table @kbd
 +@orgcmd{C-c C-e j,org-export-as-taskjuggler}
 +Export as TaskJuggler file.
 +
 +@orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
 +Export as TaskJuggler file and then open the file with TaskJugglerUI.
 +@end table
 +
 +@subsection Tasks
 +
 +@vindex org-export-taskjuggler-project-tag
 +Create your tasks as you usually do with Org-mode. Assign efforts to each
 +task using properties (it's easiest to do this in the column view). You
 +should end up with something similar to the example by Peter Jones in
 +@url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
 +Now mark the top node of your tasks with a tag named
 +@code{:taskjuggler_project:} (or whatever you customized
 +@code{org-export-taskjuggler-project-tag} to). You are now ready to export
 +the project plan with @kbd{C-c C-e J} which will export the project plan and
 +open a gantt chart in TaskJugglerUI.
 +
 +@subsection Resources
 +
 +@vindex org-export-taskjuggler-resource-tag
 +Next you can define resources and assign those to work on specific tasks. You
 +can group your resources hierarchically. Tag the top node of the resources
 +with @code{:taskjuggler_resource:} (or whatever you customized
 +@code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
 +identifier (named @samp{resource_id}) to the resources (using the standard
 +Org properties commands, @pxref{Property syntax}) or you can let the exporter
 +generate identifiers automatically (the exporter picks the first word of the
 +headline as the identifier as long as it is unique---see the documentation of
 +@code{org-taskjuggler-get-unique-id}). Using that identifier you can then
 +allocate resources to tasks. This is again done with the @samp{allocate}
 +property on the tasks. Do this in column view or when on the task type
 +@kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
 +
 +Once the allocations are done you can again export to TaskJuggler and check
 +in the Resource Allocation Graph which person is working on what task at what
 +time.
 +
 +@subsection Export of properties
 +
 +The exporter also takes TODO state information into consideration, i.e. if a
 +task is marked as done it will have the corresponding attribute in
 +TaskJuggler (@samp{complete 100}). Also it will export any property on a task
 +resource or resource node which is known to TaskJuggler, such as
 +@samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
 +@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
 +@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
 +@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
 +@samp{scheduling}, etc for tasks.
 +
 +@subsection Dependencies
 +
 +The exporter will handle dependencies that are defined in the tasks either
 +with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
 +@samp{BLOCKER} attribute (see @file{org-depend.el}) or alternatively with a
 +@samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
 +attribute can be either @samp{previous-sibling} or a reference to an
 +identifier (named @samp{task_id}) which is defined for another task in the
 +project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
 +dependencies separated by either space or comma. You can also specify
 +optional attributes on the dependency by simply appending it. The following
 +examples should illustrate this:
 +
 +@example
 +* Preparation
 +  :PROPERTIES:
 +  :task_id:  preparation
 +  :ORDERED:  t
 +  :END:
 +* Training material
 +  :PROPERTIES:
 +  :task_id:  training_material
 +  :ORDERED:  t
 +  :END:
 +** Markup Guidelines
 +   :PROPERTIES:
 +   :Effort:   2.0
 +   :END:
 +** Workflow Guidelines
 +   :PROPERTIES:
 +   :Effort:   2.0
 +   :END:
 +* Presentation
 +  :PROPERTIES:
 +  :Effort:   2.0
 +  :BLOCKER:  training_material @{ gapduration 1d @} preparation
 +  :END:
 +@end example
 +
 +@subsection Reports
 +
 +@vindex org-export-taskjuggler-default-reports
 +TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
 +allocation, etc). The user defines what kind of reports should be generated
 +for a project in the TaskJuggler file. The exporter will automatically insert
 +some default reports in the file. These defaults are defined in
 +@code{org-export-taskjuggler-default-reports}. They can be modified using
 +customize along with a number of other options. For a more complete list, see
 +@kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
 +
 +For more information and examples see the Org-taskjuggler tutorial at
 +@uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
 +
 +@node Freemind export, XOXO export, TaskJuggler export, Exporting
  @section Freemind export
  @cindex Freemind export
  @cindex mind map
  
 -The freemind exporter was written by Lennart Borgman.
 +The Freemind exporter was written by Lennart Borgman.
  
  @table @kbd
 -@kindex C-c C-e m
 -@item C-c C-e m
 +@orgcmd{C-c C-e m,org-export-as-freemind}
  Export as Freemind mind map @file{myfile.mm}.
  @end table
  
  @section XOXO export
  @cindex XOXO export
  
 -Org mode contains an exporter that produces XOXO-style output.
 +Org-mode contains an exporter that produces XOXO-style output.
  Currently, this exporter only handles the general outline structure and
  does not interpret any additional Org-mode features.
  
  @table @kbd
 -@kindex C-c C-e x
 -@item C-c C-e x
 +@orgcmd{C-c C-e x,org-export-as-xoxo}
  Export as XOXO file @file{myfile.html}.
 -@kindex C-c C-e v
 -@item C-c C-e v x
 +@orgkey{C-c C-e v x}
  Export only the visible part of the document.
  @end table
  
  @vindex org-icalendar-use-deadline
  @vindex org-icalendar-use-scheduled
  @vindex org-icalendar-categories
 -Some people use Org mode for keeping track of projects, but still prefer a
 +@vindex org-icalendar-alarm-time
 +Some people use Org-mode for keeping track of projects, but still prefer a
  standard calendar application for anniversaries and appointments.  In this
  case it can be useful to show deadlines and other time-stamped items in Org
 -files in the calendar application.  Org mode can export calendar information
 +files in the calendar application.  Org-mode can export calendar information
  in the standard iCalendar format.  If you also want to have TODO entries
  included in the export, configure the variable
  @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
@@@ -10527,9 -9799,7 +10527,9 @@@ to set the start and due dates for the 
  @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
  As categories, it will use the tags locally defined in the heading, and the
  file/tree category@footnote{To add inherited tags or the TODO state,
 -configure the variable @code{org-icalendar-categories}.}.
 +configure the variable @code{org-icalendar-categories}.}.  See the variable
 +@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
 +time.
  
  @vindex org-icalendar-store-UID
  @cindex property, ID
@@@ -10544,15 -9814,18 +10544,15 @@@ In this way the UID remains unique, bu
  figure out from which entry all the different instances originate.
  
  @table @kbd
 -@kindex C-c C-e i
 -@item C-c C-e i
 +@orgcmd{C-c C-e i,org-export-icalendar-this-file}
  Create iCalendar entries for the current file and store them in the same
  directory, using a file extension @file{.ics}.
 -@kindex C-c C-e I
 -@item C-c C-e I
 +@orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
  @vindex org-agenda-files
  Like @kbd{C-c C-e i}, but do this for all files in
  @code{org-agenda-files}.  For each of these files, a separate iCalendar
  file will be written.
 -@kindex C-c C-e c
 -@item C-c C-e c
 +@orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
  @vindex org-combined-agenda-icalendar-file
  Create a single large iCalendar file from all files in
  @code{org-agenda-files} and write it to the file given by
@@@ -10574,9 -9847,10 +10574,9 @@@ and the description from the body (limi
  How this calendar is best read and updated, depends on the application
  you are using.  The FAQ covers this issue.
  
 -@node Publishing, Miscellaneous, Exporting, Top
 +@node Publishing, Working With Source Code, Exporting, Top
  @chapter Publishing
  @cindex publishing
 -@cindex O'Toole, David
  
  Org includes a publishing management system that allows you to configure
  automatic HTML conversion of @emph{projects} composed of interlinked org
@@@ -10609,8 -9883,7 +10609,8 @@@ and many other properties of a project
  * Publishing action::           Setting the function doing the publishing
  * Publishing options::          Tweaking HTML export
  * Publishing links::            Which links keep working after publishing?
 -* Project page index::          Publishing a list of project files
 +* Sitemap::                     Generating a list of all pages
 +* Generating an index::         An index that reaches across pages
  @end menu
  
  @node Project alist, Sources and destinations, Configuration, Configuration
@@@ -10624,8 -9897,7 +10624,8 @@@ variable, called @code{org-publish-proj
  configures one project, and may be in one of the two following forms:
  
  @lisp
 -   ("project-name" :property value :property value ...)
 +   ("project-name" :property value :property value ...) 
 +     @r{i.e. a well-formed property list with alternating keys and values}
  @r{or}
     ("project-name" :components ("project-name" "project-name" ...))
  
@@@ -10657,15 -9929,11 +10657,15 @@@ publish to a webserver using a file nam
  the Emacs @file{tramp} package.  Or you can publish to a local directory and
  use external tools to upload your website (@pxref{Uploading files}).
  @item @code{:preparation-function}
 -@tab Function called before starting the publishing process, for example, to
 -run @code{make} for updating files to be published.
 +@tab Function or list of functions to be called before starting the
 +publishing process, for example, to run @code{make} for updating files to be
 +published.  The project property list is scoped into this call as the
 +variable @code{project-plist}.
  @item @code{:completion-function}
 -@tab Function called after finishing the publishing process, for example, to
 -change permissions of the resulting files.
 +@tab Function or list of functions called after finishing the publishing
 +process, for example, to change permissions of the resulting files.  The
 +project property list is scoped into this call as the variable
 +@code{project-plist}.
  @end multitable
  @noindent
  
@@@ -10690,9 -9958,6 +10690,9 @@@ extension
  @item @code{:include}
  @tab List of files to be included regardless of @code{:base-extension}
  and @code{:exclude}.
 +
 +@item @code{:recursive}
 +@tab Non-nil means, check base-directory recursively for files to publish.
  @end multitable
  
  @node Publishing action, Publishing options, Selecting files, Configuration
@@@ -10704,20 -9969,20 +10704,20 @@@ possibly transformed in the process.  T
  Org 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}).  But you also can publish your content as PDF files using
 -@code{org-publish-org-to-pdf}.  If you want to publish the Org file itself,
 -but with @i{archived}, @i{commented}, and @i{tag-excluded} trees removed, use
 -@code{org-publish-org-to-org} and set the parameters @code{:plain-source}
 -and/or @code{:htmlized-source}.  This will produce @file{file.org} and
 -@file{file.org.html} in the publishing
 +@code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
 +@code{utf8} encoded files using the corresponding functions.  If you want to
 +publish the Org file itself, but with @i{archived}, @i{commented}, and
 +@i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
 +parameters @code{:plain-source} and/or @code{:htmlized-source}.  This will
 +produce @file{file.org} and @file{file.org.html} in the publishing
  directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
  source and publishing directories are equal.  Note that with this kind of
  setup, you need to add @code{:exclude "-source\\.org"} to the project
 -definition in @code{org-publish-project-alist} to avoid that the published
 -source files will be considered as new org files the next time the project is
 -published.}.  Other files like images only
 -need to be copied to the publishing destination, for this you may use
 -@code{org-publish-attachment}.  For non-Org files, you always need to
 -specify the publishing function:
 +definition in @code{org-publish-project-alist} to prevent the published
 +source files from being considered as new org files the next time the project
 +is published.}.  Other files like images only need to be copied to the
 +publishing destination; for this you may use @code{org-publish-attachment}.
 +For non-Org files, you always need to specify the publishing function:
  
  @multitable @columnfractions 0.3 0.7
  @item @code{:publishing-function}
@@@ -10729,18 -9994,17 +10729,18 @@@ list of functions, which will all be ca
  @tab Non-nil means, publish htmlized source.
  @end multitable
  
 -The function must accept two arguments: a property list containing at least a
 -@code{:publishing-directory} property, and the name of the file to be
 -published.  It should take the specified file, make the necessary
 -transformation (if any) and place the result into the destination folder.
 +The function must accept three arguments: a property list containing at least
 +a @code{:publishing-directory} property, the name of the file to be
 +published, and the path to the publishing directory of the output file.  It
 +should take the specified file, make the necessary transformation (if any)
 +and place the result into the destination folder.
  
  @node Publishing options, Publishing links, Publishing action, Configuration
 -@subsection Options for the HTML/La@TeX{} exporters
 +@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
 -and La@TeX{} exporters.  In most cases, these properties correspond to user
 +and @LaTeX{} exporters.  In most cases, these properties correspond to user
  variables in Org.  The table below lists these properties along
  with the variable they belong to.  See the documentation string for the
  respective variable for details.
  @vindex org-export-with-fixed-width
  @vindex org-export-with-timestamps
  @vindex org-export-author-info
 +@vindex org-export-email
  @vindex org-export-creator-info
  @vindex org-export-with-tables
  @vindex org-export-highlight-first-table-line
  @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
  @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
  @item @code{:author-info}           @tab @code{org-export-author-info}
 +@item @code{:email-info}            @tab @code{org-export-email-info}
  @item @code{:creator-info}          @tab @code{org-export-creator-info}
  @item @code{:tables}                @tab @code{org-export-with-tables}
  @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
  @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
 +both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
  @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
 -La@TeX{} export.
 +@LaTeX{} export.
  
  @vindex org-publish-project-alist
  When a property is given a value in @code{org-publish-project-alist},
@@@ -10855,7 -10117,7 +10855,7 @@@ its setting overrides the value of the 
  any) during publishing.  Options set within a file (@pxref{Export
  options}), however, override everything.
  
 -@node Publishing links, Project page index, Publishing options, Configuration
 +@node Publishing links, Sitemap, Publishing options, Configuration
  @subsection Links between published files
  @cindex links, publishing
  
@@@ -10892,61 -10154,31 +10892,61 @@@ description into the HTML file, but no 
  function is @code{org-publish-validate-link} which checks if the given
  file is part of any project in @code{org-publish-project-alist}.
  
 -@node Project page index,  , Publishing links, Configuration
 -@subsection Project page index
 -@cindex index, of published pages
 +@node Sitemap, Generating an index, Publishing links, Configuration
 +@subsection Generating a sitemap
 +@cindex sitemap, of published pages
  
 -The following properties may be used to control publishing of an
 -index of files or a summary page for a given project.
 +The following properties may be used to control publishing of
 +a map of files for a given project.
  
 -@multitable @columnfractions 0.25 0.75
 -@item @code{:auto-index}
 -@tab When non-nil, publish an index during @code{org-publish-current-project}
 +@multitable @columnfractions 0.35 0.65
 +@item @code{:auto-sitemap}
 +@tab When non-nil, publish a sitemap during @code{org-publish-current-project}
  or @code{org-publish-all}.
  
 -@item @code{:index-filename}
 -@tab Filename for output of index. Defaults to @file{sitemap.org} (which
 +@item @code{:sitemap-filename}
 +@tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
  becomes @file{sitemap.html}).
  
 -@item @code{:index-title}
 -@tab Title of index page. Defaults to name of file.
 +@item @code{:sitemap-title}
 +@tab Title of sitemap page. Defaults to name of file.
  
 -@item @code{:index-function}
 -@tab Plug-in function to use for generation of index.
 -Defaults to @code{org-publish-org-index}, which generates a plain list
 +@item @code{:sitemap-function}
 +@tab Plug-in function to use for generation of the sitemap.
 +Defaults to @code{org-publish-org-sitemap}, which generates a plain list
  of links to all files in the project.
 +
 +@item @code{:sitemap-sort-folders}
 +@tab Where folders should appear in the sitemap.  Set this to @code{first}
 +(default) or @code{last} to display folders first or last,
 +respectively.  Any other value will mix files and folders.
 +
 +@item @code{:sitemap-alphabetically}
 +@tab The site map is normally sorted alphabetically.  Set this explicitly to
 +@code{nil} to turn off sorting.
 +
 +@item @code{:sitemap-ignore-case}
 +@tab Should sorting be case-sensitive?  Default @code{nil}.
 +
  @end multitable
  
 +@node Generating an index,  , Sitemap, Configuration
 +@subsection Generating an index
 +@cindex index, in a publishing project
 +
 +Org-mode can generate an index across the files of a publishing project.
 +
 +@multitable @columnfractions 0.25 0.75
 +@item @code{:makeindex}
 +@tab When non-nil, generate in index in the file @file{theindex.org} and
 +publish it as @file{theindex.html}.
 +@end multitable
 +
 +The file will be create when first publishing a project with the
 +@code{:makeindex} set.  The file only contains a statement @code{#+include:
 +"theindex.inc"}.  You can then built around this include statement by adding
 +a title, style information etc.
 +
  @node Uploading files, Sample configuration, Configuration, Publishing
  @section Uploading files
  @cindex rsync
  
  For those people already utilizing third party sync tools such as
  @command{rsync} or @command{unison}, it might be preferable not to use the built in
 -@i{remote} publishing facilities of Org mode which rely heavily on
 +@i{remote} publishing facilities of Org-mode which rely heavily on
  Tramp.  Tramp, while very useful and powerful, tends not to be
  so efficient for multiple file transfer and has been known to cause problems
  under heavy usage.
@@@ -11021,7 -10253,7 +11021,7 @@@ excluded
  To ensure that links are preserved, care should be taken to replicate
  your directory structure on the web server, and to use relative file
  paths. For example, if your Org files are kept in @file{~/org} and your
 -publishable images in @file{~/images}, you'd link to an image with
 +publishable images in @file{~/images}, you would link to an image with
  @c
  @example
  file:../images/myimage.png
@@@ -11067,13 -10299,17 +11067,13 @@@ right place on the web server, and publ
  Once properly configured, Org can publish with the following commands:
  
  @table @kbd
 -@kindex C-c C-e C
 -@item C-c C-e C
 +@orgcmd{C-c C-e X,org-publish}
  Prompt for a specific project and publish all files that belong to it.
 -@kindex C-c C-e P
 -@item C-c C-e P
 +@orgcmd{C-c C-e P,org-publish-current-project}
  Publish the project containing the current file.
 -@kindex C-c C-e F
 -@item C-c C-e F
 +@orgcmd{C-c C-e F,org-publish-current-file}
  Publish only the current file.
 -@kindex C-c C-e E
 -@item C-c C-e E
 +@orgcmd{C-c C-e E,org-publish-all}
  Publish every project.
  @end table
  
@@@ -11085,1405 -10321,12 +11085,1405 @@@ above, or by customizing the variable @
  This may be necessary in particular if files include other files via
  @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
  
 -@node Miscellaneous, Hacking, Publishing, Top
 +@comment  node-name,  next,  previous,  up
 +@comment Working With Source Code, Miscellaneous, Publishing, Top
 +
 +@node Working With Source Code, Miscellaneous, Publishing, Top
 +@chapter Working with source code
 +@cindex Schulte, Eric
 +@cindex Davison, Dan
 +@cindex source code, working with
 +
 +Source code can be included in Org-mode documents using a @samp{src} block,
 +e.g.
 +
 +@example
 +#+BEGIN_SRC emacs-lisp
 +  (defun org-xor (a b)
 +     "Exclusive or."
 +     (if a (not b) b))
 +#+END_SRC
 +@end example
 +
 +Org-mode provides a number of features for working with live source code,
 +including editing of code blocks in their native major-mode, evaluation of
 +code blocks, tangling of code blocks, and exporting code blocks and their
 +results in several formats.  This functionality was contributed by Eric
 +Schulte and Dan Davison, and was originally named Org-babel.
 +
 +The following sections describe Org-mode's code block handling facilities.
 +
 +@menu
 +* Structure of code blocks::    Code block syntax described
 +* Editing source code::         Language major-mode editing
 +* Exporting code blocks::       Export contents and/or results
 +* Extracting source code::      Create pure source code files
 +* Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
 +* Library of Babel::            Use and contribute to a library of useful code blocks
 +* Languages::                   List of supported code block languages
 +* Header arguments::            Configure code block functionality
 +* Results of evaluation::       How evaluation results are handled
 +* Noweb reference syntax::      Literate programming in Org-mode
 +* Key bindings and useful functions::  Work quickly with code blocks
 +* Batch execution::             Call functions from the command line
 +@end menu
 +
 +@comment  node-name,  next,  previous,  up
 +@comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
 +
 +@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
 +@section Structure of code blocks
 +@cindex code block, structure
 +@cindex source code, block structure
 +
 +The structure of code blocks is as follows:
 +
 +@example
 +#+srcname: <name>
 +#+begin_src <language> <switches> <header arguments>
 +  <body>
 +#+end_src
 +@end example
 +
 +code blocks can also be embedded in text as so called inline code blocks as
 +
 +@example
 +src_<language>@{<body>@}
 +@end example
 +
 +or
 +
 +@example
 +src_<language>[<header arguments>]@{<body>@}
 +@end example
 +
 +@table @code
 +@item <name>
 +This name is associated with the code block.  This is similar to the
 +@samp{#+tblname} lines that can be used to name tables in Org-mode files.
 +Referencing the name of a code block makes it possible to evaluate the
 +block from other places in the file, other files, or from Org-mode table
 +formulas (see @ref{The spreadsheet}).
 +@item <language>
 +The language of the code in the block.
 +@item <switches>
 +Switches controlling exportation of the code block (see switches discussion in
 +@ref{Literal examples})
 +@item <header arguments>
 +Optional header arguments control many aspects of evaluation, export and
 +tangling of code blocks. See the @ref{Header arguments}
 +section. Header arguments can also be set on a per-buffer or per-subtree
 +basis using properties.
 +@item <body>
 +The source code.
 +@end table
 +
 +@comment  node-name,  next,  previous,  up
 +@comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
 +
 +@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
 +@section Editing source code
 +@cindex code block, editing
 +@cindex source code, editing
 +
 +@kindex C-c '
 +Use @kbd{C-c '} to edit the current code block. This brings up
 +a language major-mode edit buffer containing the body of the code
 +block. Saving this buffer will write the new contents back to the Org
 +buffer. Use @kbd{C-c '} again to exit.
 +
 +The @code{org-src-mode} minor mode will be active in the edit buffer. The
 +following variables can be used to configure the behavior of the edit
 +buffer. See also the customization group @code{org-edit-structure} for
 +further configuration options.
 +
 +@table @code
 +@item org-src-lang-modes
 +If an Emacs major-mode named @code{<lang>-mode} exists, where
 +@code{<lang>} is the language named in the header line of the code block,
 +then the edit buffer will be placed in that major-mode. This variable
 +can be used to map arbitrary language names to existing major modes.
 +@item org-src-window-setup
 +Controls the way Emacs windows are rearranged when the edit buffer is created.
 +@item org-src-preserve-indentation
 +This variable is especially useful for tangling languages such as
 +Python, in which whitespace indentation in the output is critical.
 +@item org-src-ask-before-returning-to-edit-buffer
 +By default, Org will ask before returning to an open edit buffer. Set
 +this variable to nil to switch without asking.
 +@end table
 +
 +@comment  node-name,  next,  previous,  up
 +@comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
 +
 +@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
 +@section Exporting code blocks
 +@cindex code block, exporting
 +@cindex source code, exporting
 +
 +It is possible to export the @emph{contents} of code blocks, the
 +@emph{results} of code block evaluation, @emph{neither}, or @emph{both}.  For
 +most languages, the default exports the contents of code blocks. However, for
 +some languages (e.g. @code{ditaa}) the default exports the results of code
 +block evaluation.  For information on exporting code block bodies, see
 +@ref{Literal examples}.
 +
 +The @code{:exports} header argument can be used to specify export
 +behavior:
 +
 +@subsubheading Header arguments:
 +@table @code
 +@item :exports code
 +The default in most languages. The body of the code block is exported, as
 +described in @ref{Literal examples}.
 +@item :exports results
 +The code block will be evaluated and the results will be placed in the
 +Org-mode buffer for export, either updating previous results of the code
 +block located anywhere in the buffer or, if no previous results exist,
 +placing the results immediately after the code block.  The body of the code
 +block will not be exported.
 +@item :exports both
 +Both the code block and its results will be exported.
 +@item :exports none
 +Neither the code block nor its results will be exported.
 +@end table
 +
 +It is possible to inhibit the evaluation of code blocks during export.
 +Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
 +ensure that no code blocks are evaluated as part of the export process.  This
 +can be useful in situations where potentially untrusted Org-mode files are
 +exported in an automated fashion, for example when Org-mode is used as the
 +markup language for a wiki.
 +
 +@comment  node-name,  next,  previous,  up
 +@comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
 +@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
 +@section Extracting source code
 +@cindex source code, extracting
 +@cindex code block, extracting source code
 +
 +Creating pure source code files by extracting code from source blocks is
 +referred to as ``tangling''---a term adopted from the literate programming
 +community.  During ``tangling'' of code blocks their bodies are expanded
 +using @code{org-babel-expand-src-block} which can expand both variable and
 +``noweb'' style references  (see @ref{Noweb reference syntax}).
 +
 +@subsubheading Header arguments
 +@table @code
 +@item :tangle no
 +The default.  The code block is not included in the tangled output.
 +@item :tangle yes
 +Include the code block in the tangled output. The output file name is the
 +name of the org file with the extension @samp{.org} replaced by the extension
 +for the block language.
 +@item :tangle filename
 +Include the code block in the tangled output to file @samp{filename}.
 +@end table
 +
 +@kindex  C-c C-v t
 +@subsubheading Functions
 +@table @code
 +@item org-babel-tangle 
 +Tangle the current file.  Bound to @kbd{C-c C-v t}.
 +@item org-babel-tangle-file
 +Choose a file to tangle.   Bound to @kbd{C-c C-v f}.
 +@end table
 +
 +@subsubheading Hooks
 +@table @code
 +@item org-babel-post-tangle-hook
 +This hook is run from within code files tangled by @code{org-babel-tangle}.
 +Example applications could include post-processing, compilation or evaluation
 +of tangled code files.
 +@end table
 +
 +@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
 +@section Evaluating code blocks
 +@cindex code block, evaluating
 +@cindex source code, evaluating
 +
 +Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
 +potential for that code to do harm.  Org-mode provides a number of safeguards
 +to ensure that it only evaluates code with explicit confirmation from the
 +user.  For information on these safeguards (and on how to disable them) see
 +@ref{Code evaluation security}.} and the results placed in the Org-mode
 +buffer.  By default, evaluation is only turned on for @code{emacs-lisp} code
 +blocks, however support exists for evaluating blocks in many languages.  See
 +@ref{Languages} for a list of supported languages.  See @ref{Structure of
 +code blocks} for information on the syntax used to define a code block.
 +
 +@kindex C-c C-c
 +There are a number of ways to evaluate code blocks.  The simplest is to press
 +@kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
 +@code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
 +evaluation from the @kbd{C-c C-c} key binding.}.  This will call the
 +@code{org-babel-execute-src-block} function to evaluate the block and insert
 +its results into the Org-mode buffer.
 +
 +It is also possible to evaluate named code blocks from anywhere in an
 +Org-mode buffer or an Org-mode table.  @code{#+call} (or synonymously
 +@code{#+function} or @code{#+lob}) lines can be used to remotely execute code
 +blocks located in the current Org-mode buffer or in the ``Library of Babel''
 +(see @ref{Library of Babel}).  These lines use the following syntax.
 +
 +@example
 +#+call: <name>(<arguments>) <header arguments>
 +#+function: <name>(<arguments>) <header arguments>
 +#+lob: <name>(<arguments>) <header arguments>
 +@end example
 +
 +@table @code
 +@item <name>
 +The name of the code block to be evaluated.
 +@item <arguments>
 +Arguments specified in this section will be passed to the code block.
 +@item <header arguments>
 +Header arguments can be placed after the function invocation.  See
 +@ref{Header arguments} for more information on header arguments.
 +@end table
 +
 +
 +@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
 +@section Library of Babel
 +@cindex babel, library of
 +@cindex source code, library
 +@cindex code block, library
 +
 +The ``Library of Babel'' is a library of code blocks
 +that can be called from any Org-mode file.  The library is housed in an
 +Org-mode file located in the @samp{contrib} directory of Org-mode.
 +Org-mode users can deposit functions they believe to be generally
 +useful in the library.
 +
 +Code blocks defined in the ``Library of Babel'' can be called remotely as if
 +they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
 +for information on the syntax of remote code block evaluation).
 +
 +@kindex C-c C-v i
 +Code blocks located in any Org-mode file can be loaded into the ``Library of
 +Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
 +i}.
 +
 +@node Languages, Header arguments, Library of Babel, Working With Source Code
 +@section Languages
 +@cindex babel, languages
 +@cindex source code, languages
 +@cindex code block, languages
 +
 +Code blocks in the following languages are supported.
 +
 +@multitable @columnfractions 0.28 0.3 0.22 0.2
 +@item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
 +@item Asymptote @tab asymptote @tab C @tab C
 +@item C++ @tab C++ @tab Clojure @tab clojure
 +@item CSS @tab css @tab ditaa @tab ditaa
 +@item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
 +@item gnuplot @tab gnuplot @tab Haskell @tab haskell
 +@item LaTeX @tab latex @tab MATLAB @tab matlab
 +@item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
 +@item Octave @tab octave @tab Oz @tab oz
 +@item Perl @tab perl @tab Python @tab python
 +@item R @tab R @tab Ruby @tab ruby
 +@item Sass @tab sass @tab GNU Screen @tab screen
 +@item shell @tab sh @tab SQL @tab sql
 +@item SQLite @tab sqlite
 +@end multitable
 +
 +Language-specific documentation is available for some languages.  If
 +available, it can be found at
 +@uref{http://orgmode.org/worg/org-contrib/babel/languages}.
 +
 +The @code{org-babel-load-languages} controls which languages are enabled for
 +evaluation (by default only @code{emacs-lisp} is enabled).  This variable can
 +be set using the customization interface or by adding code like the following
 +to your emacs configuration.
 +
 +@quotation
 +The following disables @code{emacs-lisp} evaluation and enables evaluation of
 +@code{R} code blocks.
 +@end quotation
 +
 +@lisp
 +(org-babel-do-load-languages
 + 'org-babel-load-languages
 + '((emacs-lisp . nil)
 +   (R . t)))
 +@end lisp
 +
 +It is also possible to enable support for a language by loading the related
 +elisp file with @code{require}.
 +
 +@quotation
 +The following adds support for evaluating @code{clojure} code blocks.
 +@end quotation
 +
 +@lisp
 +(require 'ob-clojure)
 +@end lisp
 +
 +@node Header arguments, Results of evaluation, Languages, Working With Source Code
 +@section Header arguments
 +@cindex code block, header arguments
 +@cindex source code, block header arguments
 +
 +Code block functionality can be configured with header arguments.  This
 +section provides an overview of the use of header arguments, and then
 +describes each header argument in detail.
 +
 +@menu
 +* Using header arguments::      Different ways to set header arguments
 +* Specific header arguments::   List of header arguments
 +@end menu
 +
 +@node Using header arguments, Specific header arguments, Header arguments, Header arguments
 +@subsection Using header arguments
 +
 +The values of header arguments can be set in six different ways, each more
 +specific (and having higher priority) than the last.
 +@menu
 +* System-wide header arguments::  Set global default values
 +* Language-specific header arguments::  Set default values by language
 +* Buffer-wide header arguments::  Set default values for a specific buffer
 +* Header arguments in Org-mode properties::  Set default values for a buffer or heading
 +* Code block specific header arguments::  The most common way to set values
 +* Header arguments in function calls::  The most specific level
 +@end menu
 +
 +
 +@node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
 +@subsubheading System-wide header arguments
 +@vindex org-babel-default-header-args
 +System-wide values of header arguments can be specified by customizing the
 +@code{org-babel-default-header-args} variable:
 +
 +@example
 +:session    => "none"
 +:results    => "replace"
 +:exports    => "code"
 +:cache      => "no"
 +:noweb      => "no"
 +@end example
 +
 +@c @example
 +@c   org-babel-default-header-args is a variable defined in `org-babel.el'.
 +@c   Its value is
 +@c   ((:session . "none")
 +@c    (:results . "replace")
 +@c    (:exports . "code")
 +@c    (:cache . "no")
 +@c    (:noweb . "no"))
 +
 +
 +@c   Documentation:
 +@c   Default arguments to use when evaluating a code block.
 +@c @end example
 +
 +For example, the following example could be used to set the default value of
 +@code{:noweb} header arguments to @code{yes}.  This would have the effect of
 +expanding @code{:noweb} references by default when evaluating source code
 +blocks.
 +
 +@lisp
 +(setq org-babel-default-header-args
 +(cons '(:noweb . "yes")
 +(assq-delete-all :noweb org-babel-default-header-args)))
 +@end lisp
 +
 +@node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
 +@subsubheading Language-specific header arguments
 +Each language can define its own set of default header arguments.  See the
 +language-specific documentation available online at
 +@uref{http://orgmode.org/worg/org-contrib/babel}.
 +
 +@node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
 +@subsubheading Buffer-wide header arguments
 +Buffer-wide header arguments may be specified through the use of a special
 +line placed anywhere in an Org-mode file.  The line consists of the
 +@code{#+BABEL:} keyword followed by a series of header arguments which may be
 +specified using the standard header argument syntax.
 +
 +For example the following would set @code{session} to @code{*R*}, and
 +@code{results} to @code{silent} for every code block in the buffer, ensuring
 +that all execution took place in the same session, and no results would be
 +inserted into the buffer.
 +
 +@example
 +#+BABEL: :session *R* :results silent
 +@end example
 +
 +@node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
 +@subsubheading Header arguments in Org-mode properties
 +
 +Header arguments are also read from Org-mode properties (see @ref{Property
 +syntax}), which can be set on a buffer-wide or per-heading basis. An example
 +of setting a header argument for all code blocks in a buffer is
 +
 +@example
 +#+property: tangle yes
 +@end example
 +
 +When properties are used to set default header arguments, they are looked up
 +with inheritance, so the value of the @code{:cache} header argument will default
 +to @code{yes} in all code blocks in the subtree rooted at the following
 +heading:
 +
 +@example
 +* outline header
 +:PROPERTIES:
 +:cache:    yes
 +:END:
 +@end example
 +
 +@kindex C-c C-x p
 +@vindex org-babel-default-header-args
 +Properties defined in this way override the properties set in
 +@code{org-babel-default-header-args}.  It is convenient to use the
 +@code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
 +in Org-mode documents.
 +
 +@node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
 +@subsubheading Code block specific header arguments
 +
 +The most common way to assign values to header arguments is at the
 +code block level.  This can be done by listing a sequence of header
 +arguments and their values as part of the @code{#+begin_src} line.
 +Properties set in this way override both the values of
 +@code{org-babel-default-header-args} and header arguments specified as
 +properties.  In the following example, the @code{:results} header argument
 +is set to @code{silent}, meaning the results of execution will not be
 +inserted in the buffer, and the @code{:exports} header argument is set to
 +@code{code}, meaning only the body of the code block will be
 +preserved on export to HTML or LaTeX.
 +
 +@example
 +#+source: factorial
 +#+begin_src haskell :results silent :exports code :var n=0
 +fac 0 = 1
 +fac n = n * fac (n-1)
 +#+end_src
 +@end example
 +Similarly, it is possible to set header arguments for inline code blocks:
 +
 +@example
 +src_haskell[:exports both]@{fac 5@}
 +@end example
 +
 +@node Header arguments in function calls,  , Code block specific header arguments, Using header arguments
 +@comment  node-name,  next,  previous,  up
 +@subsubheading Header arguments in function calls
 +
 +At the most specific level, header arguments for ``Library of Babel'' or
 +function call lines can be set as shown below:
 +
 +@example
 +#+call: factorial(n=5) :exports results
 +@end example
 +
 +@node Specific header arguments,  , Using header arguments, Header arguments
 +@subsection Specific header arguments
 +The following header arguments are defined:
 +
 +@menu
 +* var::                         Pass arguments to code blocks
 +* results::                     Specify the type of results and how they will
 +                                be collected and handled
 +* file::                        Specify a path for file output
 +* dir::                         Specify the default (possibly remote)
 +                                directory for code block execution
 +* exports::                     Export code and/or results
 +* tangle::                      Toggle tangling and specify file name
 +* comments::                    Toggle insertion of comments in tangled
 +                                code files
 +* no-expand::                   Turn off variable assignment and noweb
 +                                expansion during tangling
 +* session::                     Preserve the state of code evaluation
 +* noweb::                       Toggle expansion of noweb references
 +* cache::                       Avoid re-evaluating unchanged code blocks
 +* hlines::                      Handle horizontal lines in tables
 +* colnames::                    Handle column names in tables
 +* rownames::                    Handle row names in tables
 +* shebang::                     Make tangled files executable
 +* eval::                        Limit evaluation of specific code blocks
 +@end menu
 +
 +@node var, results, Specific header arguments, Specific header arguments
 +@subsubsection @code{:var}
 +The @code{:var} header argument is used to pass arguments to code blocks.
 +The specifics of how arguments are included in a code block vary by language;
 +these are addressed in the language-specific documentation. However, the
 +syntax used to specify arguments is the same across all languages.  The
 +values passed to arguments can be literal values, values from org-mode tables
 +and literal example blocks, or the results of other code blocks.
 +
 +These values can be indexed in a manner similar to arrays---see the
 +``indexable variable values'' heading below.
 +
 +The following syntax is used to pass arguments to code blocks using the
 +@code{:var} header argument.
 +
 +@example
 +:var name=assign
 +@end example
 +
 +where @code{assign} can take one of the following forms
 +
 +@itemize @bullet
 +@item literal value
 +either a string @code{"string"} or a number @code{9}.
 +@item reference
 +a table name:
 +
 +@example
 +#+tblname: example-table
 +| 1 |
 +| 2 |
 +| 3 |
 +| 4 |
 +
 +#+source: table-length
 +#+begin_src emacs-lisp :var table=example-table
 +(length table)
 +#+end_src
 +
 +#+results: table-length
 +: 4
 +@end example
 +
 +a code block name, as assigned by @code{#+srcname:}, followed by
 +parentheses:
 +
 +@example
 +#+begin_src emacs-lisp :var length=table-length()
 +(* 2 length)
 +#+end_src
 +
 +#+results:
 +: 8
 +@end example
 +
 +In addition, an argument can be passed to the code block referenced
 +by @code{:var}.  The argument is passed within the parentheses following the
 +code block name:
 +
 +@example
 +#+source: double
 +#+begin_src emacs-lisp :var input=8
 +(* 2 input)
 +#+end_src
 +
 +#+results: double
 +: 16
 +
 +#+source: squared
 +#+begin_src emacs-lisp :var input=double(input=1)
 +(* input input)
 +#+end_src
 +
 +#+results: squared
 +: 4
 +@end example
 +@end itemize
 +
 +@subsubheading Alternate argument syntax
 +It is also possible to specify arguments in a potentially more natural way
 +using the @code{#+source:} line of a code block.  As in the following
 +example arguments can be packed inside of parenthesis, separated by commas,
 +following the source name.
 +
 +@example
 +#+source: double(input=0, x=2)
 +#+begin_src emacs-lisp
 +(* 2 (+ input x))
 +#+end_src
 +@end example
 +
 +@subsubheading Indexable variable values
 +It is possible to reference portions of variable values by ``indexing'' into
 +the variables.  Indexes are 0 based with negative values counting back from
 +the end.  If an index is separated by @code{,}s then each subsequent section
 +will index into the next deepest nesting or dimension of the value.  The
 +following example assigns the last cell of the first row the table
 +@code{example-table} to the variable @code{data}:
 +
 +@example
 +#+results: example-table
 +| 1 | a |
 +| 2 | b |
 +| 3 | c |
 +| 4 | d |
 +
 +#+begin_src emacs-lisp :var data=example-table[0,-1]
 +  data
 +#+end_src
 +
 +#+results:
 +: a
 +@end example
 +
 +Ranges of variable values can be referenced using two integers separated by a
 +@code{:}, in which case the entire inclusive range is referenced.  For
 +example the following assigns the middle three rows of @code{example-table}
 +to @code{data}.
 +
 +@example
 +#+results: example-table
 +| 1 | a |
 +| 2 | b |
 +| 3 | c |
 +| 4 | d |
 +| 5 | 3 |
 +
 +#+begin_src emacs-lisp :var data=example-table[1:3]
 +  data
 +#+end_src
 +
 +#+results:
 +| 2 | b |
 +| 3 | c |
 +| 4 | d |
 +@end example
 +
 +Additionally, an empty index, or the single character @code{*}, are both
 +interpreted to mean the entire range and as such are equivalent to
 +@code{0:-1}, as shown in the following example in which the entire first
 +column is referenced.
 +
 +@example
 +#+results: example-table
 +| 1 | a |
 +| 2 | b |
 +| 3 | c |
 +| 4 | d |
 +
 +#+begin_src emacs-lisp :var data=example-table[,0]
 +  data
 +#+end_src
 +
 +#+results:
 +| 1 | 2 | 3 | 4 |
 +@end example
 +
 +It is possible to index into the results of code blocks as well as tables.
 +Any number of dimensions can be indexed.  Dimensions are separated from one
 +another by commas, as shown in the following example.
 +
 +@example
 +#+source: 3D
 +#+begin_src emacs-lisp
 +  '(((1  2  3)  (4  5  6)  (7  8  9))
 +    ((10 11 12) (13 14 15) (16 17 18))
 +    ((19 20 21) (22 23 24) (25 26 27)))
 +#+end_src
 +
 +#+begin_src emacs-lisp :var data=3D[1,,1]
 +  data
 +#+end_src
 +
 +#+results:
 +| 11 | 14 | 17 |
 +@end example
 +
 +@node results, file, var, Specific header arguments
 +@subsubsection @code{:results}
 +
 +There are three classes of @code{:results} header argument.  Only one option
 +per class may be supplied per code block.
 +
 +@itemize @bullet
 +@item
 +@b{collection} header arguments specify how the results should be collected
 +from the code block
 +@item
 +@b{type} header arguments specify what type of result the code block will
 +return---which has implications for how they will be inserted into the
 +Org-mode buffer
 +@item
 +@b{handling} header arguments specify how the results of evaluating the code
 +block should be handled.
 +@end itemize
 +
 +@subsubheading Collection
 +The following options are mutually exclusive, and specify how the results
 +should be collected from the code block.
 +
 +@itemize @bullet
 +@item @code{value}
 +This is the default.  The result is the value of the last statement in the
 +code block.  This header argument places the evaluation in functional
 +mode.  Note that in some languages, e.g., Python, use of this result type
 +requires that a @code{return} statement be included in the body of the source
 +code block. E.g., @code{:results value}.
 +@item @code{output}
 +The result is the collection of everything printed to STDOUT during the
 +execution of the code block.  This header argument places the
 +evaluation in scripting mode.  E.g., @code{:results output}.
 +@end itemize
 +
 +@subsubheading Type
 +
 +The following options are mutually exclusive and specify what type of results
 +the code block will return.  By default, results are inserted as either a
 +table or scalar depending on their value.
 +
 +@itemize @bullet
 +@item @code{table}, @code{vector}
 +The results should be interpreted as an Org-mode table.  If a single value is
 +returned, it will be converted into a table with one row and one column.
 +E.g., @code{:results value table}.
 +@item @code{list}
 +The results should be interpreted as an Org-mode list.  If a single scalar
 +value is returned it will be converted into a list with only one element.
 +@item @code{scalar}, @code{verbatim}
 +The results should be interpreted literally---they will not be
 +converted into a table.  The results will be inserted into the Org-mode
 +buffer as quoted text.  E.g., @code{:results value verbatim}.
 +@item @code{file}
 +The results will be interpreted as the path to a file, and will be inserted
 +into the Org-mode buffer as a file link.  E.g., @code{:results value file}.
 +@item @code{raw}, @code{org}
 +The results are interpreted as raw Org-mode code and are inserted directly
 +into the buffer.  If the results look like a table they will be aligned as
 +such by Org-mode.  E.g., @code{:results value raw}.
 +@item @code{html}
 +Results are assumed to be HTML and will be enclosed in a @code{begin_html}
 +block.  E.g., @code{:results value html}.
 +@item @code{latex}
 +Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
 +E.g., @code{:results value latex}.
 +@item @code{code}
 +Result are assumed to be parseable code and are enclosed in a code block.
 +E.g., @code{:results value code}.
 +@item @code{pp}
 +The result is converted to pretty-printed code and is enclosed in a code
 +block.  This option currently supports Emacs Lisp, Python, and Ruby.  E.g.,
 +@code{:results value pp}.
 +@end itemize
 +
 +@subsubheading Handling
 +The following results options indicate what happens with the
 +results once they are collected.
 +
 +@itemize @bullet
 +@item @code{silent}
 +The results will be echoed in the minibuffer but will not be inserted into
 +the Org-mode buffer.  E.g., @code{:results output silent}.
 +@item @code{replace}
 +The default value.  Any existing results will be removed, and the new results
 +will be inserted into the Org-mode buffer in their place.  E.g.,
 +@code{:results output replace}.
 +@item @code{append}
 +If there are pre-existing results of the code block then the new results will
 +be appended to the existing results.  Otherwise the new results will be
 +inserted as with @code{replace}.
 +@item @code{prepend}
 +If there are pre-existing results of the code block then the new results will
 +be prepended to the existing results.  Otherwise the new results will be
 +inserted as with @code{replace}.
 +@end itemize
 +
 +@node file, dir, results, Specific header arguments
 +@subsubsection @code{:file}
 +
 +The header argument @code{:file} is used to specify a path for file output.
 +An Org-mode style @code{file:} link is inserted into the buffer as the result
 +(see @ref{Link format}). Common examples are graphical output from R,
 +gnuplot, ditaa and LaTeX code blocks.
 +
 +Note that for some languages, including R, gnuplot, LaTeX and ditaa,
 +graphical output is sent to the specified file without the file being
 +referenced explicitly in the code block. See the documentation for the
 +individual languages for details. In contrast, general purpose languages such
 +as Python and Ruby require that the code explicitly create output
 +corresponding to the path indicated by @code{:file}.
 +
 +
 +@node dir, exports, file, Specific header arguments
 +@subsubsection @code{:dir} and remote execution
 +
 +While the @code{:file} header argument can be used to specify the path to the
 +output file, @code{:dir} specifies the default directory during code block
 +execution. If it is absent, then the directory associated with the current
 +buffer is used. In other words, supplying @code{:dir path} temporarily has
 +the same effect as changing the current directory with @kbd{M-x cd path}, and
 +then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
 +the value of the Emacs variable @code{default-directory}.
 +
 +When using @code{:dir}, you should supply a relative path for file output
 +(e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
 +case that path will be interpreted relative to the default directory.
 +
 +In other words, if you want your plot to go into a folder called @file{Work}
 +in your home directory, you could use
 +
 +@example
 +#+begin_src R :file myplot.png :dir ~/Work
 +matplot(matrix(rnorm(100), 10), type="l")
 +#+end_src
 +@end example
 +
 +@subsubheading Remote execution
 +A directory on a remote machine can be specified using tramp file syntax, in
 +which case the code will be evaluated on the remote machine. An example is
 +
 +@example
 +#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
 +plot(1:10, main=system("hostname", intern=TRUE))
 +#+end_src
 +@end example
 +
 +Text results will be returned to the local Org-mode buffer as usual, and file
 +output will be created on the remote machine with relative paths interpreted
 +relative to the remote directory. An Org-mode link to the remote file will be
 +created.
 +
 +So, in the above example a plot will be created on the remote machine,
 +and a link of the following form will be inserted in the org buffer:
 +
 +@example
 +[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
 +@end example
 +
 +Most of this functionality follows immediately from the fact that @code{:dir}
 +sets the value of the Emacs variable @code{default-directory}, thanks to
 +tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
 +install tramp separately in order for these features to work correctly.
 +
 +@subsubheading Further points
 +
 +@itemize @bullet
 +@item
 +If @code{:dir} is used in conjunction with @code{:session}, although it will
 +determine the starting directory for a new session as expected, no attempt is
 +currently made to alter the directory associated with an existing session.
 +@item
 +@code{:dir} should typically not be used to create files during export with
 +@code{:exports results} or @code{:exports both}. The reason is that, in order
 +to retain portability of exported material between machines, during export
 +links inserted into the buffer will *not* be expanded against @code{default
 +directory}. Therefore, if @code{default-directory} is altered using
 +@code{:dir}, it is probable that the file will be created in a location to
 +which the link does not point.
 +@end itemize
 +
 +@node exports, tangle, dir, Specific header arguments
 +@subsubsection @code{:exports}
 +
 +The @code{:exports} header argument specifies what should be included in HTML
 +or LaTeX exports of the Org-mode file.
 +
 +@itemize @bullet
 +@item @code{code}
 +The default.  The body of code is included into the exported file.  E.g.,
 +@code{:exports code}.
 +@item @code{results}
 +The result of evaluating the code is included in the exported file. E.g.,
 +@code{:exports results}.
 +@item @code{both}
 +Both the code and results are included in the exported file. E.g.,
 +@code{:exports both}.
 +@item @code{none}
 +Nothing is included in the exported file.  E.g., @code{:exports none}.
 +@end itemize
 +
 +@node tangle, comments, exports, Specific header arguments
 +@subsubsection @code{:tangle}
 +
 +The @code{:tangle} header argument specifies whether or not the code
 +block should be included in tangled extraction of source code files.
 +
 +@itemize @bullet
 +@item @code{tangle}
 +The code block is exported to a source code file named after the
 +basename (name w/o extension) of the Org-mode file.  E.g., @code{:tangle
 +yes}.
 +@item @code{no}
 +The default.  The code block is not exported to a source code file.
 +E.g., @code{:tangle no}.
 +@item other
 +Any other string passed to the @code{:tangle} header argument is interpreted
 +as a file basename to which the block will be exported.  E.g., @code{:tangle
 +basename}.
 +@end itemize
 +
 +@node comments, no-expand, tangle, Specific header arguments
 +@subsubsection @code{:comments}
 +By default code blocks are tangled to source-code files without any insertion
 +of comments beyond those which may already exist in the body of the code
 +block.  The @code{:comments} header argument can be set as follows to control
 +the insertion of extra comments into the tangled code file.
 +
 +@itemize @bullet
 +@item @code{no}
 +The default.  No extra comments are inserted during tangling.
 +@item @code{link}
 +The code block is wrapped in comments which contain pointers back to the
 +original Org file from which the code was tangled.
 +@item @code{yes}
 +A synonym for ``link'' to maintain backwards compatibility.
 +@item @code{org}
 +Include text from the org-mode file as a comment.
 +
 +The text is picked from the leading context of the tangled code and is
 +limited by the nearest headline or source block as the case may be.
 +@item @code{both}
 +Turns on both the ``link'' and ``org'' comment options.
 +@end itemize
 +
 +@node no-expand, session, comments, Specific header arguments
 +@subsubsection @code{:no-expand}
 +
 +By default, code blocks are expanded with @code{org-babel-expand-src-block}
 +during tangling.  This has the effect of assigning values to variables
 +specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
 +references (see @ref{Noweb reference syntax}) with their targets.  The
 +@code{:no-expand} header argument can be used to turn off this behavior.
 +
 +@node session, noweb, no-expand, Specific header arguments
 +@subsubsection @code{:session}
 +
 +The @code{:session} header argument starts a session for an interpreted
 +language where state is preserved.
 +
 +By default, a session is not started.
 +
 +A string passed to the @code{:session} header argument will give the session
 +a name.  This makes it possible to run concurrent sessions for each
 +interpreted language.
 +
 +@node noweb, cache, session, Specific header arguments
 +@subsubsection @code{:noweb}
 +
 +The @code{:noweb} header argument controls expansion of ``noweb'' style (see
 +@ref{Noweb reference syntax}) references in a code block.  This header
 +argument can have one of three values: @code{yes} @code{no} or @code{tangle}.
 +
 +@itemize @bullet
 +@item @code{yes}
 +All ``noweb'' syntax references in the body of the code block will be
 +expanded before the block is evaluated, tangled or exported.
 +@item @code{no}
 +The default.  No ``noweb'' syntax specific action is taken on evaluating
 +code blocks, However, noweb references will still be expanded during
 +tangling.
 +@item @code{tangle}
 +All ``noweb'' syntax references in the body of the code block will be
 +expanded before the block is tangled, however ``noweb'' references will not
 +be expanded when the block is evaluated or exported.
 +@end itemize
 +
 +@subsubheading Noweb prefix lines
 +Noweb insertions are now placed behind the line prefix of the
 +@code{<<reference>>}.
 +This behavior is illustrated in the following example.  Because the
 +@code{<<example>>} noweb reference appears behind the SQL comment syntax,
 +each line of the expanded noweb reference will be commented.
 +
 +This code block:
 +
 +@example
 +-- <<example>>
 +@end example
 +
 +
 +expands to:
 +
 +@example
 +-- this is the
 +-- multi-line body of example
 +@end example
 +
 +Note that noweb replacement text that does not contain any newlines will not
 +be affected by this change, so it is still possible to use inline noweb
 +references.
 +
 +@node cache, hlines, noweb, Specific header arguments
 +@subsubsection @code{:cache}
 +
 +The @code{:cache} header argument controls the use of in-buffer caching of
 +the results of evaluating code blocks.  It can be used to avoid re-evaluating
 +unchanged code blocks.  This header argument can have one of two
 +values: @code{yes} or @code{no}.
 +
 +@itemize @bullet
 +@item @code{no}
 +The default.  No caching takes place, and the code block will be evaluated
 +every time it is called.
 +@item @code{yes}
 +Every time the code block is run a SHA1 hash of the code and arguments
 +passed to the block will be generated.  This hash is packed into the
 +@code{#+results:} line and will be checked on subsequent
 +executions of the code block.  If the code block has not
 +changed since the last time it was evaluated, it will not be re-evaluated.
 +@end itemize
 +
 +@node hlines, colnames, cache, Specific header arguments
 +@subsubsection @code{:hlines}
 +
 +Tables are frequently represented with one or more horizontal lines, or
 +hlines.  The @code{:hlines} argument to a code block accepts the
 +values @code{yes} or @code{no}, with a default value of @code{no}.
 +
 +@itemize @bullet
 +@item @code{no}
 +Strips horizontal lines from the input table.  In most languages this is the
 +desired effect because an @code{hline} symbol is interpreted as an unbound
 +variable and raises an error.  Setting @code{:hlines no} or relying on the
 +default value yields the following results.
 +
 +@example
 +#+tblname: many-cols
 +| a | b | c |
 +|---+---+---|
 +| d | e | f |
 +|---+---+---|
 +| g | h | i |
 +
 +#+source: echo-table
 +#+begin_src python :var tab=many-cols
 +  return tab
 +#+end_src
 +
 +#+results: echo-table
 +| a | b | c |
 +| d | e | f |
 +| g | h | i |
 +@end example
 +
 +@item @code{yes}
 +Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
 +
 +@example
 +#+tblname: many-cols
 +| a | b | c |
 +|---+---+---|
 +| d | e | f |
 +|---+---+---|
 +| g | h | i |
 +
 +#+source: echo-table
 +#+begin_src python :var tab=many-cols :hlines yes
 +  return tab
 +#+end_src
 +
 +#+results: echo-table
 +| a | b | c |
 +|---+---+---|
 +| d | e | f |
 +|---+---+---|
 +| g | h | i |
 +@end example
 +@end itemize
 +
 +@node colnames, rownames, hlines, Specific header arguments
 +@subsubsection @code{:colnames}
 +
 +The @code{:colnames} header argument accepts the values @code{yes},
 +@code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
 +
 +@itemize @bullet
 +@item @code{nil}
 +If an input table looks like it has column names
 +(because its second row is an hline), then the column
 +names will be removed from the table before
 +processing, then reapplied to the results.
 +
 +@example
 +#+tblname: less-cols
 +| a |
 +|---|
 +| b |
 +| c |
 +
 +#+srcname: echo-table-again
 +#+begin_src python :var tab=less-cols
 +  return [[val + '*' for val in row] for row in tab]
 +#+end_src
 +
 +#+results: echo-table-again
 +| a  |
 +|----|
 +| b* |
 +| c* |
 +@end example
 +
 +@item @code{no}
 +No column name pre-processing takes place
 +
 +@item @code{yes}
 +Column names are removed and reapplied as with @code{nil} even if the table
 +does not ``look like'' it has column names (i.e. the second row is not an
 +hline)
 +@end itemize
 +
 +@node rownames, shebang, colnames, Specific header arguments
 +@subsubsection @code{:rownames}
 +
 +The @code{:rownames} header argument can take on the values @code{yes}
 +or @code{no}, with a default value of @code{no}.
 +
 +@itemize @bullet
 +@item @code{no}
 +No row name pre-processing will take place.
 +
 +@item @code{yes}
 +The first column of the table is removed from the table before processing,
 +and is then reapplied to the results.
 +
 +@example
 +#+tblname: with-rownames
 +| one | 1 | 2 | 3 | 4 |  5 |
 +| two | 6 | 7 | 8 | 9 | 10 |
 +
 +#+srcname: echo-table-once-again
 +#+begin_src python :var tab=with-rownames :rownames yes
 +  return [[val + 10 for val in row] for row in tab]
 +#+end_src
 +
 +#+results: echo-table-once-again
 +| one | 11 | 12 | 13 | 14 | 15 |
 +| two | 16 | 17 | 18 | 19 | 20 |
 +@end example
 +@end itemize
 +
 +@node shebang, eval, rownames, Specific header arguments
 +@subsubsection @code{:shebang}
 +
 +Setting the @code{:shebang} header argument to a string value
 +(e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
 +first line of any tangled file holding the code block, and the file
 +permissions of the tangled file are set to make it executable.
 +
 +@node eval,  , shebang, Specific header arguments
 +@subsubsection @code{:eval}
 +The @code{:eval} header argument can be used to limit the evaluation of
 +specific code blocks.  @code{:eval} accepts two arguments ``never'' and
 +``query''.  @code{:eval never} will ensure that a code block is never
 +evaluated, this can be useful for protecting against the evaluation of
 +dangerous code blocks.  @code{:eval query} will require a query for every
 +execution of a code block regardless of the value of the
 +@code{org-confirm-babel-evaluate} variable.
 +
 +@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
 +@section Results of evaluation
 +@cindex code block, results of evaluation
 +@cindex source code, results of evaluation
 +
 +The way in which results are handled depends on whether a session is invoked,
 +as well as on whether @code{:results value} or @code{:results output} is
 +used. The following table shows the possibilities:
 +
 +@multitable @columnfractions 0.26 0.33 0.41
 +@item @tab @b{Non-session} @tab @b{Session}
 +@item @code{:results value} @tab value of last expression @tab value of last expression
 +@item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
 +@end multitable
 +
 +Note: With @code{:results value}, the result in both @code{:session} and
 +non-session is returned to Org-mode as a table (a one- or two-dimensional
 +vector of strings or numbers) when appropriate.
 +
 +@subsection Non-session
 +@subsubsection @code{:results value}
 +This is the default. Internally, the value is obtained by wrapping the code
 +in a function definition in the external language, and evaluating that
 +function. Therefore, code should be written as if it were the body of such a
 +function. In particular, note that Python does not automatically return a
 +value from a function unless a @code{return} statement is present, and so a
 +@samp{return} statement will usually be required in Python.
 +
 +This is the only one of the four evaluation contexts in which the code is
 +automatically wrapped in a function definition.
 +
 +@subsubsection @code{:results output}
 +The code is passed to the interpreter as an external process, and the
 +contents of the standard output stream are returned as text. (In certain
 +languages this also contains the error output stream; this is an area for
 +future work.)
 +
 +@subsection Session
 +@subsubsection @code{:results value}
 +The code is passed to the interpreter running as an interactive Emacs
 +inferior process. The result returned is the result of the last evaluation
 +performed by the interpreter. (This is obtained in a language-specific
 +manner: the value of the variable @code{_} in Python and Ruby, and the value
 +of @code{.Last.value} in R).
 +
 +@subsubsection @code{:results output}
 +The code is passed to the interpreter running as an interactive Emacs
 +inferior process. The result returned is the concatenation of the sequence of
 +(text) output from the interactive interpreter. Notice that this is not
 +necessarily the same as what would be sent to @code{STDOUT} if the same code
 +were passed to a non-interactive interpreter running as an external
 +process. For example, compare the following two blocks:
 +
 +@example
 +#+begin_src python :results output
 + print "hello"
 + 2
 + print "bye"
 +#+end_src
 +
 +#+resname:
 +: hello
 +: bye
 +@end example
 +
 +In non-session mode, the `2' is not printed and does not appear.
 +@example
 +#+begin_src python :results output :session
 + print "hello"
 + 2
 + print "bye"
 +#+end_src
 +
 +#+resname:
 +: hello
 +: 2
 +: bye
 +@end example
 +
 +But in @code{:session} mode, the interactive interpreter receives input `2'
 +and prints out its value, `2'. (Indeed, the other print statements are
 +unnecessary here).
 +
 +@node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
 +@section Noweb reference syntax
 +@cindex code block, noweb reference
 +@cindex syntax, noweb
 +@cindex source code, noweb reference
 +
 +The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
 +Programming system allows named blocks of code to be referenced by using the
 +familiar Noweb syntax:
 +
 +@example
 +<<code-block-name>>
 +@end example
 +
 +When a code block is tangled or evaluated, whether or not ``noweb''
 +references are expanded depends upon the value of the @code{:noweb} header
 +argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
 +evaluation.  If @code{:noweb no}, the default, then the reference is not
 +expanded before evaluation.
 +
 +Note: the default value, @code{:noweb no}, was chosen to ensure that
 +correct code is not broken in a language, such as Ruby, where
 +@code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
 +syntactically valid in languages that you use, then please consider setting
 +the default value.
 +
 +@node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
 +@section Key bindings and useful functions
 +@cindex code block, key bindings
 +
 +Many common Org-mode key sequences are re-bound depending on
 +the context.
 +
 +Within a code block, the following key bindings
 +are active:
 +
 +@multitable @columnfractions 0.25 0.75
 +@kindex C-c C-c
 +@item @kbd{C-c C-c} @tab org-babel-execute-src-block
 +@kindex C-c C-o
 +@item @kbd{C-c C-o} @tab org-babel-open-src-block-result
 +@kindex C-up
 +@item @kbd{C-@key{up}}    @tab org-babel-load-in-session
 +@kindex M-down
 +@item @kbd{M-@key{down}}  @tab org-babel-pop-to-session
 +@end multitable
 +
 +In an Org-mode buffer, the following key bindings are active:
 +
 +@multitable @columnfractions 0.45 0.55
 +@kindex C-c C-v a
 +@kindex C-c C-v C-a
 +@item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
 +@kindex C-c C-v b
 +@kindex C-c C-v C-b
 +@item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
 +@kindex C-c C-v f
 +@kindex C-c C-v C-f
 +@item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
 +@kindex C-c C-v g
 +@item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
 +@kindex C-c C-v h
 +@item @kbd{C-c C-v h} @tab org-babel-describe-bindings
 +@kindex C-c C-v l
 +@kindex C-c C-v C-l
 +@item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
 +@kindex C-c C-v p
 +@kindex C-c C-v C-p
 +@item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
 +@kindex C-c C-v s
 +@kindex C-c C-v C-s
 +@item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
 +@kindex C-c C-v t
 +@kindex C-c C-v C-t
 +@item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
 +@kindex C-c C-v z
 +@kindex C-c C-v C-z
 +@item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
 +@end multitable
 +
 +@c When possible these keybindings were extended to work when the control key is
 +@c kept pressed, resulting in the following additional keybindings.
 +
 +@c @multitable @columnfractions 0.25 0.75
 +@c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
 +@c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
 +@c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
 +@c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
 +@c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
 +@c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
 +@c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
 +@c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
 +@c @end multitable
 +
 +@node Batch execution,  , Key bindings and useful functions, Working With Source Code
 +@section Batch execution
 +@cindex code block, batch execution
 +@cindex source code, batch execution
 +
 +It is possible to call functions from the command line.  This shell
 +script calls @code{org-babel-tangle} on every one of its arguments.
 +
 +Be sure to adjust the paths to fit your system.
 +
 +@example
 +#!/bin/sh
 +# -*- mode: shell-script -*-
 +#
 +# tangle files with org-mode
 +#
 +DIR=`pwd`
 +FILES=""
 +ORGINSTALL="~/src/org/lisp/org-install.el"
 +
 +# wrap each argument in the code required to call tangle on it
 +for i in $@@; do
 +    FILES="$FILES \"$i\""
 +done
 +
 +emacs -Q --batch -l $ORGINSTALL \
 +--eval "(progn
 +(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
 +(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
 +(require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
 +(mapc (lambda (file)
 +       (find-file (expand-file-name file \"$DIR\"))
 +       (org-babel-tangle)
 +       (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
 +@end example
 +
 +@node Miscellaneous, Hacking, Working With Source Code, Top
  @chapter Miscellaneous
  
  @menu
  * Completion::                  M-TAB knows what you need
 -* Speed keys::                  Electic commands at the beginning of a headline
 +* Easy Templates::              Quick insertion of structural elements
 +* Speed keys::                  Electric commands at the beginning of a headline
 +* Code evaluation security::    Org mode files evaluate inline code
  * Customization::               Adapting Org to your taste
  * In-buffer settings::          Overview of the #+KEYWORDS
  * The very busy C-c C-c key::   When in doubt, press C-c C-c
  @end menu
  
  
 -@node Completion, Speed keys, Miscellaneous, Miscellaneous
 +@node Completion, Easy Templates, Miscellaneous, Miscellaneous
  @section Completion
  @cindex completion, of @TeX{} symbols
  @cindex completion, of TODO keywords
@@@ -12544,7 -10387,7 +12544,7 @@@ buffer
  After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
  @item
  After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
 -@samp{OPTIONS} which set file-specific options for Org mode.  When the
 +@samp{OPTIONS} which set file-specific options for Org-mode.  When the
  option keyword is already complete, pressing @kbd{M-@key{TAB}} again
  will insert example settings for this keyword.
  @item
@@@ -12555,46 -10398,7 +12555,46 @@@ Elsewhere, complete dictionary words us
  @end itemize
  @end table
  
 -@node Speed keys, Customization, Completion, Miscellaneous
 +@node Easy Templates, Speed keys, Completion, Miscellaneous
 +@section Easy Templates
 +@cindex template insertion
 +@cindex insertion, of templates
 +
 +Org-mode supports insertion of empty structural elements (like
 +@code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
 +strokes.  This is achieved through a native template expansion mechanism.
 +Note that Emacs has several other template mechanisms which could be used in
 +a similar way, for example @file{yasnippet}.
 +
 +To insert a structural element, type a @samp{<}, followed by a template
 +selector and @kbd{@key{TAB}}.  Completion takes effect only when the above
 +keystrokes are typed on a line by itself.
 +
 +The following template selectors are currently supported.
 +
 +@multitable @columnfractions 0.1 0.9
 +@item @kbd{s} @tab @code{#+begin_src     ... #+end_src}
 +@item @kbd{e} @tab @code{#+begin_example ... #+end_example}
 +@item @kbd{q} @tab @code{#+begin_quote   ... #+end_quote}
 +@item @kbd{v} @tab @code{#+begin_verse   ... #+end_verse}
 +@item @kbd{c} @tab @code{#+begin_center  ... #+end_center}
 +@item @kbd{l} @tab @code{#+begin_latex   ... #+end_latex}
 +@item @kbd{L} @tab @code{#+latex:}
 +@item @kbd{h} @tab @code{#+begin_html    ... #+end_html}
 +@item @kbd{H} @tab @code{#+html:}
 +@item @kbd{a} @tab @code{#+begin_ascii   ... #+end_ascii}
 +@item @kbd{A} @tab @code{#+ascii:}
 +@item @kbd{i} @tab @code{#+include:} line
 +@end multitable
 +
 +For example, on an empty line, typing "<e" and then pressing TAB, will expand
 +into a complete EXAMPLE template.
 +
 +You can install additional templates by customizing the variable
 +@code{org-structure-template-alist}. See the docstring of the variable for
 +additional details.
 +
 +@node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
  @section Speed keys
  @cindex speed keys
  @vindex org-use-speed-commands
@@@ -12606,62 -10410,13 +12606,62 @@@ beginning of a headline, i.e. before th
  pre-defined list of commands, and you can add more such commands using the
  variable @code{org-speed-commands-user}.  Speed keys do not only speed up
  navigation and other commands, but they also provide an alternative way to
 -execute commands bound to keys that are not or not easily available on a tty,
 +execute commands bound to keys that are not or not easily available on a TTY,
  or on a small mobile device with a limited keyboard.
  
  To see which commands are available, activate the feature and press @kbd{?}
  with the cursor at the beginning of a headline.
  
 -@node Customization, In-buffer settings, Speed keys, Miscellaneous
 +@node Code evaluation security, Customization, Speed keys, Miscellaneous
 +@section Code evaluation and security issues
 +
 +Org provides tools to work with the code snippets, including evaluating them.
 +
 +Running code on your machine always comes with a security risk.  Badly
 +written or malicious code can be executed on purpose or by accident.  Org has
 +default settings which will only evaluate such code if you give explicit
 +permission to do so, and as a casual user of these features you should leave
 +these precautions intact.
 +
 +For people who regularly work with such code, the confirmation prompts can
 +become annoying, and you might want to turn them off.  This can be done, but
 +you must be aware of the risks that are involved.
 +
 +Code evaluation can happen under the following circumstances:
 +
 +@table @i
 +@item Source code blocks
 +Source code blocks can be evaluated during export, or when pressing @kbd{C-c
 +C-c} in the block.  The most important thing to realize here is that Org mode
 +files which contain code snippets are, in a certain sense, like executable
 +files.  So you should accept them and load them into Emacs only from trusted
 +sources---just like you would do with a program you install on your computer.
 +
 +Make sure you know what you are doing before customizing the variables
 +which take off the default security brakes.
 +
 +@defopt org-confirm-babel-evaluate
 +When set to t user is queried before code block evaluation
 +@end defopt
 +
 +@item Following @code{shell} and @code{elisp} links
 +Org has two link types that can directly evaluate code (@pxref{External
 +links}).  These links can be problematic because the code to be evaluated is
 +not visible.
 +
 +@defopt org-confirm-shell-link-function
 +Function to queries user about shell link execution.
 +@end defopt
 +@defopt org-confirm-elisp-link-function
 +Functions to query user for Emacs Lisp link execution.
 +@end defopt
 +
 +@item Formulas in tables
 +Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
 +either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
 +@end table
 +
 +@node Customization, In-buffer settings, Code evaluation security, Miscellaneous
  @section Customization
  @cindex customization
  @cindex options, for customization
@@@ -12680,7 -10435,7 +12680,7 @@@ lines into the buffer (@pxref{In-buffe
  @cindex in-buffer settings
  @cindex special keywords
  
 -Org mode uses special lines in the buffer to define settings on a
 +Org-mode uses special lines in the buffer to define settings on a
  per-file basis.  These lines start with a @samp{#+} followed by a
  keyword, a colon, and then individual words defining a setting.  Several
  setting words can be in the same line, but you can also have multiple
@@@ -12710,7 -10465,7 +12710,7 @@@ applies
  @vindex org-table-formula-constants
  @vindex org-table-formula
  Set file-local values for constants to be used in table formulas.  This
 -line set the local variable @code{org-table-formula-constants-local}.
 +line sets the local variable @code{org-table-formula-constants-local}.
  The global version of this variable is
  @code{org-table-formula-constants}.
  @item #+FILETAGS: :tag1:tag2:tag3:
@@@ -12731,7 -10486,7 +12731,7 @@@ These lines (several are allowed) speci
  @vindex org-default-priority
  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.
 +have a lower ASCII number than 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 #+SETUPFILE: file
  This line defines a file that holds more in-buffer setup.  Normally this is
  entirely ignored.  Only when the buffer is parsed for option-setting lines
 -(i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
 +(i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
  settings line, or when exporting), then the contents of this file are parsed
  as if they had been included in the buffer.  In particular, the file can be
 -any other Org mode file with internal setup.  You can visit the file the
 +any other Org-mode file with internal setup.  You can visit the file the
  cursor is in the line with @kbd{C-c '}.
  @item #+STARTUP:
  @cindex #+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 file is being visited.
  
  The first set of options deals with the initial visibility of the outline
@@@ -12786,18 -10541,6 +12786,18 @@@ variable is @code{org-startup-align-all
  align      @r{align all tables}
  noalign    @r{don't align tables on startup}
  @end example
 +
 +@vindex org-startup-with-inline-images
 +When visiting a file, inline images can be automatically displayed.  The
 +corresponding variable is @code{org-startup-with-inline-images}, with a
 +default value @code{nil} to avoid delays when visiting a file.
 +@cindex @code{inlineimages}, STARTUP keyword
 +@cindex @code{noinlineimages}, STARTUP keyword
 +@example
 +inlineimages   @r{show inline images}
 +noinlineimages @r{don't show inline images on startup}
 +@end example
 +
  @vindex org-log-done
  @vindex org-log-note-clock-out
  @vindex org-log-repeat
@@@ -12818,9 -10561,6 +12818,9 @@@ configured using these options (see var
  @cindex @code{logredeadline}, STARTUP keyword
  @cindex @code{lognoteredeadline}, STARTUP keyword
  @cindex @code{nologredeadline}, STARTUP keyword
 +@cindex @code{logrefile}, STARTUP keyword
 +@cindex @code{lognoterefile}, STARTUP keyword
 +@cindex @code{nologrefile}, STARTUP keyword
  @example
  logdone            @r{record a timestamp when an item is marked DONE}
  lognotedone        @r{record timestamp and a note when DONE}
@@@ -12836,9 -10576,6 +12836,9 @@@ nologreschedule    @r{do not record whe
  logredeadline      @r{record a timestamp when deadline changes}
  lognoteredeadline  @r{record a note when deadline changes}
  nologredeadline    @r{do not record when a deadline date changes}
 +logrefile          @r{record a timestamp when refiling}
 +lognoterefile      @r{record a note when refiling}
 +nologrefile        @r{do not record when refiling}
  @end example
  @vindex org-hide-leading-stars
  @vindex org-odd-levels-only
@@@ -12911,15 -10648,6 +12911,15 @@@ To hide blocks on startup, use these ke
  hideblocks   @r{Hide all begin/end blocks on startup}
  nohideblocks @r{Do not hide blocks on startup}
  @end example
 +@cindex org-pretty-entities
 +The display of entities as UTF-8 characters is governed by the variable
 +@code{org-pretty-entities} and the keywords
 +@cindex @code{entitiespretty}, STARTUP keyword
 +@cindex @code{entitiesplain}, STARTUP keyword
 +@example
 +entitiespretty  @r{Show entities as UTF-8 characters where possible}
 +entitiesplain   @r{Leave entities plain}
 +@end example
  @item #+TAGS:  TAG1(c1) TAG2(c2)
  @vindex org-tag-alist
  These lines (several such lines are allowed) specify the valid tags in
@@@ -12928,8 -10656,8 +12928,8 @@@ keys.  The corresponding variable is @c
  @item #+TBLFM:
  This line contains the formulas for the table directly above the line.
  @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
 -@itemx #+OPTIONS:, #+BIND:
 -@itemx #+DESCRIPTION:, #+KEYWORDS:
 +@itemx #+OPTIONS:, #+BIND:, #+XSLT:,
 +@itemx #+DESCRIPTION:, #+KEYWORDS:,
  @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
  @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
  These lines provide settings for exporting files.  For more details see
@@@ -12967,7 -10695,10 +12967,7 @@@ works even if the automatic table edito
  If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
  the entire table.
  @item
 -If the cursor is inside a table created by the @file{table.el} package,
 -activate that table.
 -@item
 -If the current buffer is a Remember buffer, close the note and file it.
 +If the current buffer is a capture buffer, close the note and file it.
  With a prefix argument, file it, without further interaction, to the
  default location.
  @item
@@@ -13018,30 -10749,25 +13018,30 @@@ more text                        
  @end example
  
  @noindent
 -If you are using at least Emacs 23.1.50.3 and version 6.29 of Org, this kind
 -of view can be achieved dynamically at display time using
 -@code{org-indent-mode}.  In this minor mode, all lines are prefixed for
 -display with the necessary amount of space.  Also headlines are prefixed with
 -additional stars, so that the amount of indentation shifts by
 -two@footnote{See the variable @code{org-indent-indentation-per-level}.}
 -spaces per level.  All headline stars but the last one are made invisible
 -using the @code{org-hide} face@footnote{Turning on @code{org-indent-mode}
 -sets @code{org-hide-leading-stars} to @code{t} and
 -@code{org-adapt-indentation} to @code{nil}.} - see below under @samp{2.} for
 -more information on how this works.  You can turn on @code{org-indent-mode}
 -for all files by customizing the variable @code{org-startup-indented}, or you
 -can turn it on for individual files using
 +
 +If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
 +with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
 +be achieved dynamically at display time using @code{org-indent-mode}.  In
 +this minor mode, all lines are prefixed for display with the necessary amount
 +of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
 +property, such that @code{visual-line-mode} (or purely setting
 +@code{word-wrap}) wraps long lines (including headlines) correctly indented.
 +}.  Also headlines are prefixed with additional stars, so that the amount of
 +indentation shifts by two@footnote{See the variable
 +@code{org-indent-indentation-per-level}.}  spaces per level.  All headline
 +stars but the last one are made invisible using the @code{org-hide}
 +face@footnote{Turning on @code{org-indent-mode} sets
 +@code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
 +@code{nil}.} - see below under @samp{2.} for more information on how this
 +works.  You can turn on @code{org-indent-mode} for all files by customizing
 +the variable @code{org-startup-indented}, or you can turn it on for
 +individual files using
  
  @example
  #+STARTUP: indent
  @end example
  
 -If you want a similar effect in earlier version of Emacs and/or Org, or if
 +If you want a similar effect in an earlier version of Emacs and/or Org, or if
  you want the indentation to be hard space characters so that the plain text
  file looks as similar as possible to the Emacs display, Org supports you in
  the following way:
@@@ -13133,16 -10859,16 +13133,16 @@@ is really only fun with @kbd{S-@key{cur
  tty you would rather use @kbd{C-c .} to re-insert the timestamp.
  
  @multitable @columnfractions 0.15 0.2 0.1 0.2
 -@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2} 
 -@item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab                            
 -@item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}} 
 -@item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab                            
 +@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
 +@item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
 +@item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
 +@item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
  @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
 -@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab                           
 -@item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}  
 -@item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab                           
 +@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
 +@item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
 +@item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
  @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
 -@item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab                            
 +@item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
  @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
  @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
  @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
@@@ -13198,11 -10924,11 +13198,11 @@@ setup.  See the installation instructio
  @item @file{cdlatex.el} by Carsten Dominik
  @cindex @file{cdlatex.el}
  @cindex Dominik, Carsten
 -Org mode can make use of the CDLa@TeX{} package to efficiently enter
 -La@TeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
 +Org-mode can make use of the CDLa@TeX{} package to efficiently enter
 +@LaTeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
  @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
  @cindex @file{imenu.el}
 -Imenu allows menu access to an index of items in a file.  Org mode
 +Imenu allows menu access to an index of items in a file.  Org-mode
  supports Imenu---all you need to do to get the index is the following:
  @lisp
  (add-hook 'org-mode-hook
@@@ -13214,12 -10940,13 +13214,12 @@@ the option @code{org-imenu-depth}
  @item @file{remember.el} by John Wiegley
  @cindex @file{remember.el}
  @cindex Wiegley, John
 -Org cooperates with remember, see @ref{Remember}.
 -@file{Remember.el} is not part of Emacs, find it on the web.
 +Org used to use this package for capture, but no longer does.
  @item @file{speedbar.el} by Eric M. Ludlam
  @cindex @file{speedbar.el}
  @cindex Ludlam, Eric M.
  Speedbar is a package that creates a special frame displaying files and
 -index items in files.  Org mode supports Speedbar and allows you to
 +index items in files.  Org-mode supports Speedbar and allows you to
  drill into Org files directly from the Speedbar.  It also allows you to
  restrict the scope of agenda commands to a file or a subtree by using
  the command @kbd{<} in the Speedbar frame.
  @cindex @file{table.el}
  @cindex Ota, Takaaki
  
 -Complex ASCII tables with automatic line wrapping, column- and
 -row-spanning, and alignment can be created using the Emacs table
 -package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
 -and also part of Emacs 22).
 -When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org mode
 -will call @command{table-recognize-table} and move the cursor into the
 -table.  Inside a table, the keymap of Org mode is inactive.  In order
 -to execute Org mode-related commands, leave the table.
 +Complex ASCII tables with automatic line wrapping, column- and row-spanning,
 +and alignment can be created using the Emacs table package by Takaaki Ota
 +(@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
 +Org-mode will recognize these tables and export them properly.  Because of
 +interference with other Org-mode functionality, you unfortunately cannot edit
 +these tables directly in the buffer.  Instead, you need to use the command
 +@kbd{C-c '} to edit them, similar to source code snippets.
  
  @table @kbd
 -@kindex C-c C-c
 -@item C-c C-c
 -Recognize @file{table.el} table.  Works when the cursor is in a
 -table.el table.
 +@orgcmd{C-c ',org-edit-special}
 +Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
  @c
 -@kindex C-c ~
 -@item C-c ~
 +@orgcmd{C-c ~,org-table-create-with-table.el}
  Insert a @file{table.el} table.  If there is already a table at point, this
  command converts it between the @file{table.el} format and the Org-mode
  format.  See the documentation string of the command
  @code{org-convert-table} for the restrictions under which this is
  possible.
  @end table
 -@file{table.el} is part of Emacs 22.
 +@file{table.el} is part of Emacs since Emacs 22.
  @item @file{footnote.el} by Steven L. Baur
  @cindex @file{footnote.el}
  @cindex Baur, Steven L.
 -Org mode recognizes numerical footnotes as provided by this package.
 -However, Org mode also has its own footnote support (@pxref{Footnotes}),
 +Org-mode recognizes numerical footnotes as provided by this package.
 +However, Org-mode also has its own footnote support (@pxref{Footnotes}),
  which makes using @file{footnote.el} unnecessary.
  @end table
  
  @node Conflicts,  , Cooperation, Interaction
 -@subsection Packages that lead to conflicts with Org mode
 +@subsection Packages that lead to conflicts with Org-mode
  
  @table @asis
  
@@@ -13271,7 -11002,7 +13271,7 @@@ This conflicts with the use of @kbd{S-@
  timestamps, TODO keywords, priorities, and item bullet types if the cursor is
  at such a location.  By default, @kbd{S-@key{cursor}} commands outside
  special contexts don't do anything, but you can customize the variable
 -@code{org-support-shift-select}.  Org mode then tries to accommodate shift
 +@code{org-support-shift-select}.  Org-mode then tries to accommodate shift
  selection by (i) using it outside of the special contexts where special
  commands apply, and by (ii) extending an existing active region even if the
  cursor moves across a special context.
@@@ -13286,7 -11017,7 +13286,7 @@@ region.  In fact, Emacs 23 has this bui
  @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
  23, you probably don't want to use another package for this purpose.  However,
  if you prefer to leave these keys to a different package while working in
 -Org mode, configure the variable @code{org-replace-disputed-keys}.  When set,
 +Org-mode, configure the variable @code{org-replace-disputed-keys}.  When set,
  Org will move the following key bindings in Org files, and in the agenda
  buffer (but not during date selection).
  
@@@ -13304,7 -11035,7 +13304,7 @@@ to have other replacement keys, look a
  @item @file{yasnippet.el}
  @cindex @file{yasnippet.el}
  The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
 -@code{"\t"}) overrules yasnippets' access to this key.  The following code
 +@code{"\t"}) overrules YASnippet's access to this key.  The following code
  fixed this problem:
  
  @lisp
  @item @file{windmove.el} by Hovav Shacham
  @cindex @file{windmove.el}
  This package also uses the @kbd{S-<cursor>} keys, so everything written
 -in the paragraph above about CUA mode also applies here.
 +in the paragraph above about CUA mode also applies here.  If you want make
 +the windmove function active in locations where Org-mode does not have
 +special functionality on @kbd{S-@key{cursor}}, add this to your
 +configuration:
 +
 +@lisp
 +;; Make windmove work in org-mode:
 +(add-hook 'org-shiftup-final-hook 'windmove-up)
 +(add-hook 'org-shiftleft-final-hook 'windmove-left)
 +(add-hook 'org-shiftdown-final-hook 'windmove-down)
 +(add-hook 'org-shiftright-final-hook 'windmove-right)
 +@end lisp
  
  @item @file{viper.el} by Michael Kifer
  @cindex @file{viper.el}
  * Add-on packages::             Available extensions
  * Adding hyperlink types::      New custom link types
  * Context-sensitive commands::  How to add functionality to such commands
 -* Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
 +* Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
  * Dynamic blocks::              Automatically filled blocks
  * Special agenda views::        Customized views
  * Extracting agenda information::  Postprocessing of agenda information
@@@ -13381,7 -11101,7 +13381,7 @@@ maintained by the Worg project and can 
  
  A large number of add-on packages have been written by various authors.
  These packages are not part of Emacs, but they are distributed as contributed
 -packages with the separate release available at the Org mode home page at
 +packages with the separate release available at the Org-mode home page at
  @uref{http://orgmode.org}.  The list of contributed packages, along with
  documentation about each package, is maintained by the Worg project at
  @uref{http://orgmode.org/worg/org-contrib/}.
@@@ -13486,7 -11206,7 +13486,7 @@@ can also set the @code{:description} pr
  the link description when the link is later inserted into an Org
  buffer with @kbd{C-c C-l}.
  
 -When is makes sense for your new link type, you may also define a function
 +When it makes sense for your new link type, you may also define a function
  @code{org-PREFIX-complete-link} that implements special (e.g. completion)
  support for inserting such a link with @kbd{C-c C-l}.  Such a function should
  not accept any arguments, and return the full link with prefix.
@@@ -13504,10 -11224,8 +13504,10 @@@ Also the @kbd{M-cursor} and @kbd{M-S-cu
  Add-ons can tap into this functionality by providing a function that detects
  special context for that add-on and executes functionality appropriate for
  the context.  Here is an example from Dan Davison's @file{org-R.el} which
 -allows you to evaluate commands based on the @file{R} programming language.  For
 -this package, special contexts are lines that start with @code{#+R:} or
 +allows you to evaluate commands based on the @file{R} programming language
 +@footnote{@file{org-R.el} has been replaced by the org-mode functionality
 +described in @ref{Working With Source Code} and is now obsolete.}.  For this
 +package, special contexts are lines that start with @code{#+R:} or
  @code{#+RR:}.
  
  @lisp
@@@ -13537,11 -11255,12 +13537,11 @@@ contexts.  If the function finds it sho
  
  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 La@TeX{}.  However, this is extremely
 +specific languages, for example @LaTeX{}.  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.
  
 -
  This appendix describes a different approach.  We keep the Orgtbl mode
  table in its native format (the @i{source table}), and use a custom
  function to @i{translate} the table to the correct syntax, and to
  the burden of writing conversion functions on the user, but it allows
  for a very flexible system.
  
 -Bastien added the ability to do the same with lists.  You can use Org's
 -facilities to edit and structure lists by turning @code{orgstruct-mode}
 -on, then locally exporting such lists in another format (HTML, La@TeX{}
 -or Texinfo.)
 +Bastien added the ability to do the same with lists, in Orgstruct mode.  You
 +can use Org's facilities to edit and structure lists by turning
 +@code{orgstruct-mode} on, then locally exporting such lists in another format
 +(HTML, @LaTeX{} or Texinfo.)
  
  
  @menu
@@@ -13610,7 -11329,7 +13610,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 La@TeX{} file.  There are a
 +compilation of a C file or processing of a @LaTeX{} file.  There are a
  number of different solutions:
  
  @itemize @bullet
@@@ -13621,7 -11340,7 +13621,7 @@@ language.  For example, in C mode you c
  @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 La@TeX{}.
 +in @LaTeX{}.
  @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
  @end itemize
  
  @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
 -@subsection A La@TeX{} example of radio tables
 -@cindex La@TeX{}, and Orgtbl mode
 +@subsection A @LaTeX{} example of radio tables
 +@cindex @LaTeX{}, and Orgtbl mode
  
 -The best way to wrap the source table in La@TeX{} is to use the
 +The best way to wrap the source table in @LaTeX{} 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 La@TeX{}, HTML, and Texinfo.  Configure the
 +default this works only for @LaTeX{}, 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, let's say we use @samp{salesfigures}.  You
@@@ -13655,13 -11374,13 +13655,13 @@@ will then get the following template
  @end example
  
  @noindent
 -@vindex La@TeX{}-verbatim-environments
 +@vindex @LaTeX{}-verbatim-environments
  The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
 -@code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
 +@code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
  into the receiver location with name @code{salesfigures}.  You may now
 -fill in the tablefeel free to use the spreadsheet features@footnote{If
 +fill in the table---feel free to use the spreadsheet features@footnote{If
  the @samp{#+TBLFM} line contains an odd number of dollar characters,
 -this may cause problems with font-lock in La@TeX{} mode.  As shown in the
 +this may cause problems with font-lock in @LaTeX{} mode.  As shown in the
  example you can fix this by adding an extra line inside the
  @code{comment} environment that is used to balance the dollar
  expressions.  If you are using AUC@TeX{} with the font-latex library, a
@@@ -13711,7 -11430,7 +13711,7 @@@ Month & \multicolumn@{1@}@{c@}@{Days@} 
  \end@{comment@}
  @end example
  
 -The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
 +The @LaTeX{} 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 (see also @pxref{Translator functions}):
@@@ -13775,7 -11494,7 +13775,7 @@@ As you can see, the properties passed i
  @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 La@TeX{} translator, but wanted the line endings to
 +would like to use the @LaTeX{} translator, but wanted the line endings to
  be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
  overrule the default with
  
  @end example
  
  For a new language, you can either write your own converter function in
 -analogy with the La@TeX{} translator, or you can use the generic function
 +analogy with the @LaTeX{} 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
@@@ -13813,23 -11532,21 +13813,23 @@@ containing the formatted table.  If yo
  translator, please post it on @email{emacs-orgmode@@gnu.org} so that
  others can benefit from your work.
  
 -@node  Radio lists,  , Translator functions, Tables in arbitrary syntax
 +@node Radio lists,  , Translator functions, Tables in arbitrary syntax
  @subsection Radio lists
  @cindex radio lists
  @cindex org-list-insert-radio-list
  
 -Sending and receiving radio lists works exactly the same way than sending and
 +Sending and receiving radio lists works exactly the same way as sending and
  receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
 -insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
 +insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
  @code{org-list-insert-radio-list}.
  
  Here are the differences with radio tables:
  
  @itemize @minus
  @item
 -Use @code{ORGLST} instead of @code{ORGTBL}.
 +Orgstruct mode must be active.
 +@item
 +Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
  @item
  The available translation functions for radio lists don't take
  parameters.
  @kbd{C-c C-c} will work when pressed on the first item of the list.
  @end itemize
  
 -Here is a La@TeX{} example.  Let's say that you have this in your
 -La@TeX{} file:
 +Here is a @LaTeX{} example.  Let's say that you have this in your
 +@LaTeX{} file:
  
 -@cindex #+ORGLIST
 +@cindex #+ORGLST
  @example
  % BEGIN RECEIVE ORGLST to-buy
  % END RECEIVE ORGLST to-buy
  \begin@{comment@}
 -#+ORGLIST: SEND to-buy orgtbl-to-latex
 +#+ORGLST: SEND to-buy org-list-to-latex
  - a new house
  - a new computer
    + a new keyboard
  @end example
  
  Pressing `C-c C-c' on @code{a new house} and will insert the converted
 -La@TeX{} list between the two marker lines.
 +@LaTeX{} list between the two marker lines.
  
  @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
  @section Dynamic blocks
@@@ -13866,11 -11583,11 +13866,11 @@@ specially marked regions that are updat
  A good example for such a block is the clock table inserted by the
  command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
  
 -Dynamic block are enclosed by a BEGIN-END structure that assigns a name
 +Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
  to the block and can also specify parameters for the function producing
  the content of the block.
  
 -#+BEGIN:dynamic block
 +@cindex #+BEGIN:dynamic block
  @example
  #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
  
  Dynamic blocks are updated with the following commands
  
  @table @kbd
 -@kindex C-c C-x C-u
 -@item C-c C-x C-u
 +@orgcmd{C-c C-x C-u,org-dblock-update}
  Update dynamic block at point.
 -@kindex C-u C-c C-x C-u
 -@item C-u C-c C-x C-u
 +@orgkey{C-u C-c C-x C-u}
  Update all dynamic blocks in the current file.
  @end table
  
@@@ -13924,11 -11643,10 +13924,11 @@@ written in a way such that it does noth
  @section Special agenda views
  @cindex agenda views, user-defined
  
 -Org provides a special hook that can be used to narrow down the
 -selection made by any of the agenda views.  You may specify a function
 -that is used at each match to verify if the match should indeed be part
 -of the agenda view, and if not, how much should be skipped.
 +Org provides a special hook that can be used to narrow down the selection
 +made by these agenda views: @code{todo}, @code{alltodo}, @code{tags}, @code{tags-todo}, 
 +@code{tags-tree}.  You may specify a function that is used at each match to verify 
 +if the match should indeed be part of the agenda view, and if not, how 
 +much should be skipped.
  
  Let's say you want to produce a list of projects that contain a WAITING
  tag anywhere in the project tree.  Let's further assume that you have
@@@ -13989,10 -11707,6 +13989,10 @@@ Skip current entry if it has not been s
  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-if 'todo '("TODO" "WAITING"))
 +Skip current entry if the TODO keyword is TODO or WAITING.
 +@item '(org-agenda-skip-entry-if 'todo 'done)
 +Skip current entry if the TODO keyword marks a DONE state.
  @item '(org-agenda-skip-entry-if 'timestamp)
  Skip current entry if it has any timestamp, may also be deadline or scheduled.
  @item '(org-agenda-skip-entry 'regexp "regular expression")
@@@ -14051,7 -11765,7 +14051,7 @@@ You may also modify parameters on the f
  @example
  emacs -batch -l ~/.emacs                                      \
     -eval '(org-batch-agenda "a"                               \
 -            org-agenda-ndays 30                               \
 +            org-agenda-span month                             \
              org-agenda-include-diary nil                      \
              org-agenda-files (quote ("~/org/project.org")))'  \
     | lpr
@@@ -14129,7 -11843,7 +14129,7 @@@ properties
  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
 +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
@@@ -14186,15 -11900,6 +14186,15 @@@ Treat the value of the property PROPERT
  values and check if VALUE is in this list.
  @end defun
  
 +@defopt org-property-allowed-value-functions
 +Hook for functions supplying allowed values for a specific property.
 +The functions must take a single argument, the name of the property, and
 +return a flat list of allowed values.  If @samp{:ETC} is one of
 +the values, use the values as completion help, but allow also other values
 +to be entered.  The functions must return @code{nil} if they are not
 +responsible for this property.
 +@end defopt
 +
  @node Using the mapping API,  , Using the property API, Hacking
  @section Using the mapping API
  @cindex API, for mapping
@@@ -14266,12 -11971,12 +14266,12 @@@ information about the entry, or in orde
  Here are a couple of functions that might be handy:
  
  @defun org-todo &optional arg
 -Change the TODO state of the entry, see the docstring of the functions for
 +Change the TODO state of the entry.  See the docstring of the functions for
  the many possible values for the argument ARG.
  @end defun
  
  @defun org-priority &optional action
 -Change the priority of the entry, see the docstring of this function for the
 +Change the priority of the entry.  See the docstring of this function for the
  possible values for ACTION.
  @end defun
  
@@@ -14310,13 -12015,11 +14310,13 @@@ The following example counts the numbe
  @cindex iPhone
  @cindex MobileOrg
  
 -@i{MobileOrg} is an application for the @i{iPhone/iPod Touch} series of
 -devices, developed by Richard Moreland.  @i{MobileOrg} offers offline viewing
 -and capture support for an Org-mode system rooted on a ``real'' computer.  It
 -does also allow you to record changes to existing entries.  For information
 -about @i{MobileOrg}, see @uref{http://mobileorg.ncogni.to/}).
 +@uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
 +@i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
 +@i{MobileOrg} offers offline viewing and capture support for an Org-mode
 +system rooted on a ``real'' computer.  It does also allow you to record
 +changes to existing entries.  Android users should check out
 +@uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
 +by Matt Jones.
  
  This appendix describes the support Org has for creating agenda views in a
  format that can be displayed by @i{MobileOrg}, and for integrating notes
@@@ -14324,9 -12027,9 +14324,9 @@@ captured and changes made by @i{MobileO
  
  For changing tags and TODO states in MobileOrg, you should have set up the
  customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
 -cover all important tags and todo keywords, even if individual files use only
 +cover all important tags and TODO keywords, even if individual files use only
  part of these.  MobileOrg will also offer you states and tags set up with
 -in-buffer settings, but it will understand the logistics of todo state
 +in-buffer settings, but it will understand the logistics of TODO state
  @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
  (@pxref{Setting tags}) only for those set in these variables.
  
  @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
  @section Setting up the staging area
  
 -Org-mode has commands to prepare a directory with files for @i{MobileOrg},
 -and to read captured notes from there.  If Emacs can directly write to the
 -WebDAV directory accessed by @i{MobileOrg}, just point to this directory
 -using the variable @code{org-mobile-directory}.  Using the @file{tramp}
 -method, @code{org-mobile-directory} may point to a remote directory
 -accessible through, for example, 
 -@file{ssh/scp}:
 +MobileOrg needs to interact with Emacs through a directory on a server.  If you
 +are using a public server, you should consider to encrypt the files that are
 +uploaded to the server.  This can be done with Org-mode 7.02 and with
 +@i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
 +installation on your system.  To turn on encryption, set a password in
 +@i{MobileOrg} and, on the Emacs side, configure the variable
 +@code{org-mobile-use-encryption}@footnote{If you can safely store the
 +password in your Emacs setup, you might also want to configure
 +@code{org-mobile-encryption-password}.  Please read the docstring of that
 +variable.  Note that encryption will apply only to the contents of the
 +@file{.org} files.  The file names themselves will remain visible.}.
 +
 +The easiest way to create that directory is to use a free
 +@uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
 +Dropbox, or if your version of MobileOrg does not support it, you can use a
 +webdav server.  For more information, check out the documentation of MobileOrg and also this
 +@uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
 +When MobileOrg first connects to your Dropbox, it will create a directory
 +@i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
 +Emacs about it:
  
 -@smallexample
 -(setq org-mobile-directory "/scpc:user@@remote.host:org/webdav/")
 -@end smallexample
 +@lisp
 +(setq org-mobile-directory "~/Dropbox/MobileOrg")
 +@end lisp
  
 -If Emacs cannot access the WebDAV directory directly using a @file{tramp}
 -method, or you prefer to maintain a local copy, you can use a local directory
 -for staging.  Other means must then be used to keep this directory in sync
 -with the WebDAV directory.  In the following example, files are staged in
 -@file{~/stage}, and Org-mode hooks take care of moving files to and from the
 -WebDAV directory using @file{scp}.
 -
 -@smallexample
 -(setq org-mobile-directory "~/stage/")
 -(add-hook 'org-mobile-post-push-hook
 -  (lambda () (shell-command "scp -r ~/stage/* user@@wdhost:mobile/")))
 -(add-hook 'org-mobile-pre-pull-hook
 -  (lambda () (shell-command "scp user@@wdhost:mobile/mobileorg.org ~/stage/ ")))
 -(add-hook 'org-mobile-post-pull-hook
 -  (lambda () (shell-command "scp ~/stage/mobileorg.org user@@wdhost:mobile/")))
 -@end smallexample
 +Org-mode has commands to put files for @i{MobileOrg} into that directory,
 +and to read captured notes from there.
  
  @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
  @section Pushing to MobileOrg
@@@ -14374,29 -12078,29 +14374,29 @@@ This operation copies all files current
  to the directory @code{org-mobile-directory}.  By default this list contains
  all agenda files (as listed in @code{org-agenda-files}), but additional files
  can be included by customizing @code{org-mobiles-files}.  File names will be
 -staged with path relative to @code{org-directory}, so all files should be
 -inside this directory.  The push operation also creates (in the same
 -directory) a special Org file @file{agendas.org}.  This file is an Org-mode
 -style outline, containing every custom agenda view defined by the user.
 -While creating the agendas, Org-mode will force@footnote{See the variable
 -@code{org-mobile-force-id-on-agenda-items}.}  an ID property on all entries
 -referenced by the agendas, so that these entries can be uniquely identified
 -if @i{MobileOrg} flags them for further action.  Finally, Org writes the file
 -@file{index.org}, containing links to all other files.  If @i{MobileOrg} is
 -configured to request this file from the WebDAV server, all agendas and Org
 -files will be downloaded to the device.  To speed up the download, MobileOrg
 -will only read files whose checksums@footnote{stored automatically in the
 -file @file{checksums.dat}} have changed.
 +staged with paths relative to @code{org-directory}, so all files should be
 +inside this directory.  The push operation also creates a special Org file
 +@file{agendas.org} with all custom agenda view defined by the
 +user@footnote{While creating the agendas, Org-mode will force ID properties
 +on all referenced entries, so that these entries can be uniquely identified
 +if @i{MobileOrg} flags them for further action.  If you do not want to get
 +these properties in so many entries, you can set the variable
 +@code{org-mobile-force-id-on-agenda-items} to @code{nil}.  Org mode will then
 +rely on outline paths, in the hope that these will be unique enough.}.
 +Finally, Org writes the file @file{index.org}, containing links to all other
 +files.  @i{MobileOrg} first reads this file from the server, and then
 +downloads all agendas and Org files listed in it.  To speed up the download,
 +MobileOrg will only read files whose checksums@footnote{stored automatically
 +in the file @file{checksums.dat}} have changed.
  
  @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
  @section Pulling from MobileOrg
  
 -When @i{MobileOrg} synchronizes with the WebDAV server, it not only pulls the
 -Org files for viewing.  It also appends captured entries and pointers to
 -flagged and changed entries to the file @file{mobileorg.org} on the server.
 -Org has a @emph{pull} operation that integrates this information into an
 -inbox file and operates on the pointers to flagged entries.  Here is how it
 -works:
 +When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
 +files for viewing.  It also appends captured entries and pointers to flagged
 +and changed entries to the file @file{mobileorg.org} on the server.  Org has
 +a @emph{pull} operation that integrates this information into an inbox file
 +and operates on the pointers to flagged entries.  Here is how it works:
  
  @enumerate
  @item
@@@ -14428,41 -12132,47 +14428,41 @@@ another window and also push it onto th
  z C-y C-c C-c} to store that flagging note as a normal note in the entry.
  Pressing @kbd{?} twice in succession will offer to remove the
  @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
 -in a property).  In this way you indicate, that the intended processing for
 +in a property).  In this way you indicate that the intended processing for
  this flagged entry is finished.
  @end table
  @end enumerate
  
  @kindex C-c a ?
  If you are not able to process all flagged entries directly, you can always
 -return to this agenda view using @kbd{C-c a ?}.  Note, however, that there is
 -a subtle difference.  The view created automatically by @kbd{M-x
 -org-mobile-pull RET} is guaranteed to search all files that have been
 -addressed by the last pull.  This might include a file that is not currently
 -in your list of agenda files.  If you later use @kbd{C-c a ?} to regenerate
 -the view, only the current agenda files will be searched.
 +return to this agenda view@footnote{Note, however, that there is a subtle
 +difference.  The view created automatically by @kbd{M-x org-mobile-pull
 +@key{RET}} is guaranteed to search all files that have been addressed by the
 +last pull.  This might include a file that is not currently in your list of
 +agenda files.  If you later use @kbd{C-c a ?} to regenerate the view, only
 +the current agenda files will be searched.} using @kbd{C-c a ?}.
  
  @node History and Acknowledgments, Main Index, MobileOrg, Top
 -@appendix History and Acknowledgments
 -@cindex acknowledgements
 +@appendix History and acknowledgments
 +@cindex acknowledgments
  @cindex history
  @cindex thanks
  
 -Org was born in 2003, out of frustration over the user interface
 -of the Emacs Outline mode.  I was trying to organize my notes and
 -projects, and using Emacs seemed to be the natural way to go.  However,
 -having to remember eleven different commands with two or three keys per
 -command, only to hide and show parts of the outline tree, that seemed
 -entirely unacceptable to me.  Also, when using outlines to take notes, I
 -constantly wanted to restructure the tree, organizing it parallel to my
 -thoughts and plans.  @emph{Visibility cycling} and @emph{structure
 -editing} were originally implemented in the package
 -@file{outline-magic.el}, but quickly moved to the more general
 -@file{org.el}.  As this environment became comfortable for project
 -planning, the next step was adding @emph{TODO entries}, basic
 -@emph{timestamps}, and @emph{table support}.  These areas highlighted the two main
 -goals that Org still has today: to be a new, outline-based,
 -plain text mode with innovative and intuitive editing features, and to
 -incorporate project planning functionality directly into a notes file.
 -
 -A special thanks goes to @i{Bastien Guerry} who has not only written a large
 -number of extensions to Org (most of them integrated into the core by now),
 -but who has also helped in the development and maintenance of Org so much that he
 -should be considered the main co-contributor to this package.
 +Org was born in 2003, out of frustration over the user interface of the Emacs
 +Outline mode.  I was trying to organize my notes and projects, and using
 +Emacs seemed to be the natural way to go.  However, having to remember eleven
 +different commands with two or three keys per command, only to hide and show
 +parts of the outline tree, that seemed entirely unacceptable to me.  Also,
 +when using outlines to take notes, I constantly wanted to restructure the
 +tree, organizing it parallel to my thoughts and plans.  @emph{Visibility
 +cycling} and @emph{structure editing} were originally implemented in the
 +package @file{outline-magic.el}, but quickly moved to the more general
 +@file{org.el}.  As this environment became comfortable for project planning,
 +the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
 +@emph{table support}.  These areas highlighted the two main goals that Org
 +still has today: to be 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, literally thousands of emails to me or to
  @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
@@@ -14473,38 -12183,6 +14473,38 @@@ in shaping one or more aspects of Org
  complete, if I have forgotten someone, please accept my apologies and
  let me know.
  
 +Before I get to this list, a few special mentions are in order:
 +
 +@table @i
 +@item Bastien Guerry
 +Bastien has written a large number of extensions to Org (most of them
 +integrated into the core by now), including the LaTeX exporter and the plain
 +list parser.  His support during the early days, when he basically acted as
 +co-maintainer, was central to the success of this project.  Bastien also
 +invented Worg, helped establishing the Web presence of Org, and sponsors
 +hosting costs for the orgmode.org website.
 +@item Eric Schulte and Dan Davison
 +Eric and Dan are jointly responsible for the Org-babel system, which turns
 +Org into a multi-language environment for evaluating code and doing literate
 +programming and reproducible research.
 +@item John Wiegley
 +John has contributed a number of great ideas and patches directly to Org,
 +including the attachment system (@file{org-attach.el}), integration with
 +Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
 +items, habit tracking (@file{org-habits.el}), and encryption
 +(@file{org-crypt.el}).  Also, the capture system is really an extended copy
 +of his great @file{remember.el}.
 +@item Sebastian Rose
 +Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
 +of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
 +higher level.  He also wrote @file{org-info.js}, a Java script for displaying
 +webpages derived from Org using an Info-like or a folding interface with
 +single-key navigation.
 +@end table
 +
 +@noindent OK, now to the full list of contributions!  Again, please let me
 +know what I am missing here!
 +
  @itemize @bullet
  
  @item
@@@ -14517,14 -12195,12 +14517,14 @@@ Org-mode website
  @item
  @i{Alex Bochannek} provided a patch for rounding timestamps.
  @item
 +@i{Jan Böcker} wrote @file{org-docview.el}.
 +@item
  @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
  @item
  @i{Tom Breton} wrote @file{org-choose.el}.
  @item
  @i{Charles Cave}'s suggestion sparked the implementation of templates
 -for Remember.
 +for Remember, which are now templates for capture.
  @item
  @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
  specified time.
@@@ -14537,6 -12213,8 +14537,6 @@@ calculations and improved XEmacs compat
  @item
  @i{Baoqiu Cui} contributed the DocBook exporter.
  @item
 -@i{Dan Davison} wrote (together with @i{Eric Schulte}) Org Babel.
 -@item
  @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.
  inspired some of the early development, including HTML export.  He also
  asked for a way to narrow wide table columns.
  @item
 -@i{Christian Egli} converted the documentation into Texinfo format,
 -patched CSS formatting into the HTML exporter, and inspired the agenda.
 +@i{Thomas S. Dye} contributed documentation on Worg and helped integrating
 +the Org-Babel documentation into the manual.
 +@item
 +@i{Christian Egli} converted the documentation into Texinfo format, inspired
 +the agenda, patched CSS formatting into the HTML exporter, and wrote
 +@file{org-taskjuggler.el}.
  @item
  @i{David Emery} provided a patch for custom CSS support in exported
  HTML agendas.
@@@ -14570,21 -12244,13 +14570,21 @@@ around a match in a hidden outline tree
  @item
  @i{Austin Frank} works as a mailing list moderator.
  @item
 +@i{Eric Fraga} drove the development of BEAMER export with ideas and
 +testing.
 +@item
 +@i{Barry Gidden} did proofreading the manual in preparation for the book
 +publication through Network Theory Ltd.
 +@item
  @i{Niels Giesen} had the idea to automatically archive DONE trees.
  @item
 -@i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
 -has been prolific with patches, ideas, and bug reports.
 +@i{Nicolas Goaziou} rewrote much of the plain list code.
  @item
  @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
  @item
 +@i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
 +book.
 +@item
  @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
  task state change logging, and the clocktable.  His clear explanations have
  been critical when we started to adopt the Git version control system.
@@@ -14597,20 -12263,14 +14597,20 @@@ patches
  @i{Scott Jaderholm} proposed footnotes, control over whitespace between
  folded entries, and column view for properties.
  @item
 +@i{Matt Jones} wrote @i{MobileOrg Android}.
 +@item
  @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
  @item
 -@i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
 +@i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it.  He also
  provided frequent feedback and some patches.
  @item
  @i{Matt Lundin} has proposed last-row references for table formulas and named
  invisible anchors.  He has also worked a lot on the FAQ.
  @item
 +@i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
 +and is a prolific contributor on the mailing list with competent replies,
 +small fixes and patches.
 +@item
  @i{Jason F. McBrayer} suggested agenda export to CSV format.
  @item
  @i{Max Mikhanosha} came up with the idea of refiling.
@@@ -14633,9 -12293,6 +14633,9 @@@ and being able to quickly restrict the 
  @i{Tim O'Callaghan} suggested in-file links, search options for general
  file links, and TAGS.
  @item
 +@i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
 +version of the reference card.
 +@item
  @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
  into Japanese.
  @item
@@@ -14660,6 -12317,10 +14660,6 @@@ also acted as mailing list moderator fo
  @item
  @i{Kevin Rogers} contributed code to access VM files on remote hosts.
  @item
 -@i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
 -webpages derived from Org using an Info-like or a folding interface with
 -single-key navigation.
 -@item
  @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
  conflict with @file{allout.el}.
  @item
@@@ -14672,7 -12333,8 +14672,7 @@@ of feedback, developed and applied stan
  @i{Christian Schlauer} proposed angular brackets around links, among
  other things.
  @item
 -@i{Eric Schulte} wrote @file{org-plot.el} and (together with @i{Dan Davison})
 -Org Babel, and contributed various patches, small features and modules.
 +@i{Paul Sexton} wrote @file{org-ctags.el}.
  @item
  Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
  @file{organizer-mode.el}.
@@@ -14694,33 -12356,31 +14694,33 @@@ tweaks and features
  @i{Adam Spiers} asked for global linking commands, inspired the link
  extension system, added support for mairix, and proposed the mapping API.
  @item
 +@i{Ulf Stegemann} created the table to translate special symbols to HTML,
 +LaTeX, UTF-8, Latin-1 and ASCII.
 +@item
  @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
  with links transformation to Org syntax.
  @item
  @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
  chapter about publishing.
  @item
 +@i{Sebastien Vauban} reported many issues with LaTeX and BEAMER export and
 +enabled source code highlighling in Gnus.
 +@item
 +@i{Stefan Vollmar} organized a video-recorded talk at the
 +Max-Planck-Institute for Neurology.  He also inspired the creation of a
 +concept index for HTML export.
 +@item
  @i{J@"urgen Vollmer} contributed code generating the table of contents
  in HTML output.
  @item
 +@i{Samuel Wales} has provided important feedback and bug reports.
 +@item
  @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
  keyword.
  @item
  @i{David Wainberg} suggested archiving, and improvements to the linking
  system.
  @item
 -@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
 -@file{muse.el}, which have some overlap with Org.  Initially the development
 -of Org was fully independent because I was not aware of the existence of
 -these packages.  But with time I have occasionally looked at John's code and
 -learned a lot from it.  John has also contributed a number of great ideas and
 -patches directly to Org, including the attachment system
 -(@file{org-attach.el}), integration with Apple Mail
 -(@file{org-mac-message.el}), hierarchical dependencies of TODO items, habit
 -tracking (@file{org-habits.el}) and support for pcomplete.
 -@item
  @i{Carsten Wimmer} suggested some changes and helped fix a bug in
  linking to Gnus.
  @item
@@@ -14733,22 -12393,17 +14733,22 @@@ and contributed various ideas and code 
  
  
  @node Main Index, Key Index, History and Acknowledgments, Top
 -@unnumbered Concept Index
 +@unnumbered Concept index
  
  @printindex cp
  
 -@node Key Index, Variable Index, Main Index, Top
 -@unnumbered Key Index
 +@node Key Index, Command and Function Index, Main Index, Top
 +@unnumbered Key index
  
  @printindex ky
  
 -@node Variable Index,  , Key Index, Top
 -@unnumbered Variable Index
 +@node Command and Function Index, Variable Index, Key Index, Top
 +@unnumbered Command and function index
 +
 +@printindex fn
 +
 +@node Variable Index,  , Command and Function Index, Top
 +@unnumbered Variable index
  
  This is not a complete index of variables and faces, only the ones that are
  mentioned in the manual.  For a more complete list, use @kbd{M-x
@@@ -14758,11 -12413,14 +14758,11 @@@ org-customize @key{RET}} and then clic
  
  @bye
  
 -@ignore
 -        arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
 -@end ignore
 -
  @c Local variables:
 -@c ispell-local-dictionary: "en_US-w_accents"
 -@c ispell-local-pdict: "./.aspell.org.pws"
  @c fill-column: 77
 +@c indent-tabs-mode: nil
 +@c paragraph-start:    "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[        ]*$"
 +@c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[     \f]*$"
  @c End:
  
  
diff --combined doc/misc/pcl-cvs.texi
index 7301bf3747ada9ba611f3689b457c253257e6597,e466a3bec8f582bc80a6dadd2984848f2b346cf0..f12942da2d3ec16d2a1c86392825cdee512e906f
@@@ -6,7 -6,8 +6,7 @@@
  @c %**end of header
  
  @copying
 -Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 -1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 1991-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -23,7 -24,7 +23,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * PCL-CVS: (pcl-cvs).           Emacs front-end to CVS.
  @end direntry
@@@ -1431,3 -1432,7 +1431,3 @@@ this manual
  @printindex ky
  
  @bye
 -
 -@ignore
 -   arch-tag: 5c7178ce-56fa-40b0-abd7-f4a09758b235
 -@end ignore
diff --combined doc/misc/pgg.texi
index 6efa3e6bb729f9a2d33cf5c18699c1f755b5edfa,daef19a01b5cdd6bd697b3a55da6b59da88e2960..9cb7a637a05f2bbac3f92dd398eb1bbe749cfc68
@@@ -1,7 -1,4 +1,7 @@@
  \input texinfo                  @c -*-texinfo-*-
 +
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/pgg
  @settitle PGG @value{VERSION}
  
@@@ -11,7 -8,8 +11,7 @@@
  This file describes PGG @value{VERSION}, an Emacs interface to various
  PGP implementations.
  
 -Copyright @copyright{} 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
 -2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 2001, 2003-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -27,18 -25,13 +27,18 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * PGG: (pgg).                   Emacs interface to various PGP implementations.
  @end direntry
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title PGG (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title PGG
 +@end ifclear
  
  @author by Daiki Ueno
  @page
@@@ -504,3 -497,7 +504,3 @@@ If non-@code{nil}, don't check the chec
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: 0c205838-34b9-41a5-b9d7-49ae57ccac85
 -@end ignore
diff --combined doc/misc/rcirc.texi
index 6402c91c57aa3cbbc09fce74d1c1357cdbfebf33,c8c341534fe90de08aeac644a362140087f7c7aa..c2b6867c4195317081a4302041d49b8632e4773f
@@@ -5,7 -5,7 +5,7 @@@
  @c %**end of header
  
  @copying
 -Copyright @copyright{} 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2006-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -22,7 -22,7 +22,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Rcirc: (rcirc).               Internet Relay Chat (IRC) client.
  @end direntry
@@@ -948,3 -948,7 +948,3 @@@ The real answer, therefore, is a @code{
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 2589e562-3843-4ffc-8c2f-477cbad57c01
 -@end ignore
diff --combined doc/misc/reftex.texi
index 8c1ab92032ff2e3d6cb61e29d9d2440d28a2fb5f,c5cb511c06d17d508b23609990325cc576722010..3944b712338bcc817afb7205b26bad0edea01281
@@@ -27,7 -27,8 +27,7 @@@ citations and indices for LaTeX documen
  This is edition @value{EDITION} of the @b{Ref@TeX{}} User Manual for
  @b{Ref@TeX{}} @value{VERSION}
  
 -Copyright @copyright{} 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 -2005, 2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1997-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -43,7 -44,7 +43,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * RefTeX: (reftex).             Emacs support for LaTeX cross-references
                                    and citations.
@@@ -79,7 -80,6 +79,7 @@@
  
  @ifnottex
  @node Top,,,(dir)
 +@top RefTeX
  
  @b{Ref@TeX{}} is a package for managing Labels, References,
  Citations and index entries with GNU Emacs.
@@@ -5890,3 -5890,7 +5890,3 @@@ released on 7 Jan 1997
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 1e055774-0576-4b1b-b47f-550d0961fd43
 -@end ignore
diff --combined doc/misc/remember.texi
index cdb45140093c7c955f30920dc77addab158d1cec,bdaf4750d970da3ba21ec95b0805a13282988167..e67d6155bbe0d3c6e1a079a29f2bff20e83a2a7e
@@@ -8,7 -8,7 +8,7 @@@
  @copying
  This manual is for Remember Mode, version 1.9
  
 -Copyright @copyright{} 2001, 2004, 2005, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2001, 2004-2005, 2007-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -25,7 -25,7 +25,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Remember: (remember).         Simple information manager for Emacs.
  @end direntry
@@@ -403,3 -403,7 +403,3 @@@ consult @ref{Remember, , , org}
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 5b980db0-20cc-4167-b845-52dc11d53b9f
 -@end ignore
diff --combined doc/misc/sasl.texi
index ec33f0525d30fb0c39dae055ffd70ce790263587,a75f2d80f64086125f98074c35e77a7771abeec7..a75b237519cb142e4993942db7605c481937c214
@@@ -1,7 -1,4 +1,7 @@@
  \input texinfo                  @c -*-texinfo-*-
 +
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/sasl
  
  @set VERSION 0.2
@@@ -10,7 -7,7 +10,7 @@@
  @copying
  This file describes the Emacs SASL library, version @value{VERSION}.
  
 -Copyright @copyright{} 2000, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2000, 2004-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -33,19 -30,14 +33,19 @@@ license to the document, as described i
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * SASL: (sasl).                 The Emacs SASL library.
  @end direntry
  
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Emacs SASL Library @value{VERSION} (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Emacs SASL Library @value{VERSION}
 +@end ifclear
  
  @author by Daiki Ueno
  @page
@@@ -275,3 -267,7 +275,3 @@@ At the first time @var{step} should be 
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: dc9650be-a953-40bf-bc55-24fe5f19d875
 -@end ignore
diff --combined doc/misc/sc.texi
index fbeadb6a52282c71b61dec89731705e50daa5a71,d4f45fb6b93377067ab50eb461334a6f306a1691..8853192af045f2a137cc9371accb4027cf628199
@@@ -14,7 -14,8 +14,7 @@@
  This document describes Supercite, an Emacs package for citing and
  attributing replies to mail and news messages.
  
 -Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1993, 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -32,7 -33,7 +32,7 @@@ developing GNU and promoting software f
  
  @c      @smallbook
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * SC: (sc).                     Supercite lets you cite parts of messages
                                    you're replying to, in flexible ways.
@@@ -53,7 -54,6 +53,7 @@@
  
  @ifnottex
  @node Top, Introduction, (dir), (dir)
 +@top Supercite
  @comment  node-name,  next,  previous,  up
  
  @insertcopying 
@@@ -1939,3 -1939,7 +1939,3 @@@ its @var{variable} name
  @end iftex
  @printindex vr
  @bye
 -
 -@ignore
 -   arch-tag: 0521847a-4680-44b6-ae6e-13ce20e18436
 -@end ignore
diff --combined doc/misc/semantic.texi
index 89e83df5bc31dc2e74fc5d608b8c175c7f08d255,eb84a096f287668d1ecf5b9e10501a72c44f1f1d..52434f4a6e4c85a4027590e599805695ec4a3073
@@@ -24,7 -24,8 +24,7 @@@
  @copying
  This manual documents the Semantic library and utilities.
  
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
 -2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2005, 2007, 2009-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -40,7 -41,7 +40,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Semantic: (semantic).         Source code parser library and utilities.
  @end direntry
@@@ -621,3 -622,7 +621,3 @@@ Emacs Lisp.  It is an LALR parser suita
  @c LocalWords: subsubsection sw sym texi texinfo titlefont titlepage
  @c LocalWords: tok TOKEN's toplevel typemodifiers uml unset untar
  @c LocalWords: uref usedb var vskip xref yak
 -
 -@ignore
 -   arch-tag: cbc6e78c-4ff1-410e-9fc7-936487e39bbf
 -@end ignore
diff --combined doc/misc/ses.texi
index 45e5e9efc0e7bcb3b5de93e952fc6daaaa2e2e33,6a1cbe6203c04d1ce8017a4d9c8605ba198309cb..d9739b9392584a282965568d1e98de4367b13bd6
@@@ -11,7 -11,8 +11,7 @@@
  @copying
  This file documents SES: the Simple Emacs Spreadsheet.
  
 -Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
 -2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2002-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -27,7 -28,7 +27,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * SES: (ses).                   Simple Emacs Spreadsheet.
  @end direntry
@@@ -981,3 -982,7 +981,3 @@@ Jean-Philippe Theberge @email{jphil@@ac
  @include doclicense.texi
  
  @bye
 -
 -@ignore
 -   arch-tag: 10a4ee1c-7ef4-4c06-8b7a-f975e39f0dec
 -@end ignore
diff --combined doc/misc/sieve.texi
index 754ee15feccb2d5eb01d7362c0d3cb0f378f6ed3,139d0fa77ddf7790fe356690e468d8e0288f85a4..64fd92f40ca8b1ae459ac6f615c0914eed998c13
@@@ -1,7 -1,4 +1,7 @@@
  \input texinfo                  @c -*-texinfo-*-
 +
 +@include gnus-overrides.texi
 +
  @setfilename ../../info/sieve
  @settitle Emacs Sieve Manual
  @synindex fn cp
@@@ -11,7 -8,8 +11,7 @@@
  @copying
  This file documents the Emacs Sieve package, for server-side mail filtering.
  
 -Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
 -2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 2001-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -27,7 -25,7 +27,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs network features
  @direntry
  * Sieve: (sieve).               Managing Sieve scripts in Emacs.
  @end direntry
  @setchapternewpage odd
  
  @titlepage
 +@ifset WEBHACKDEVEL
 +@title Emacs Sieve Manual (DEVELOPMENT VERSION)
 +@end ifset
 +@ifclear WEBHACKDEVEL
  @title Emacs Sieve Manual
 +@end ifclear
  
  @author by Simon Josefsson
  @page
@@@ -271,6 -264,10 +271,6 @@@ in the @code{sieve} group (@kbd{M-x cus
  
  @table @code
  
 -@item sieve-manage-default-user
 -@vindex sieve-manage-default-user
 -Sets the default username.
 -
  @item sieve-manage-default-port
  @vindex sieve-manage-default-port
  Sets the default port to use, the suggested port number is @code{2000}.
@@@ -359,3 -356,7 +359,3 @@@ A Protocol for Remotely Managing Sieve 
  @bye
  
  @c End:
 -
 -@ignore
 -   arch-tag: 6e3ad0af-2eaf-4f35-a081-d40f4a683ec3
 -@end ignore
diff --combined doc/misc/smtpmail.texi
index abd7d8974dc127b470e744f3484f135bc3294acc,40dcf6bc92670beb36d55324096afe2c41a41035..1d4bbbff4ac58093dc56820aa566852ef62285dc
@@@ -3,7 -3,7 +3,7 @@@
  @settitle Emacs SMTP Library
  @syncodeindex vr fn
  @copying
 -Copyright @copyright{} 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +Copyright @copyright{} 2003-2011
  Free Software Foundation, Inc.
  
  @quotation
@@@ -20,7 -20,7 +20,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * SMTP: (smtpmail).             Emacs library for sending mail via SMTP.
  @end direntry
@@@ -415,3 -415,7 +415,3 @@@ cannot accept mail
  @printindex fn
  
  @bye
 -
 -@ignore
 -   arch-tag: 6316abdf-b366-4562-87a2-f37e8f894b6f
 -@end ignore
diff --combined doc/misc/speedbar.texi
index 280438195b5521e83600348d48a547055c1daf81,3e0373d04408553f9980f04fa89e8ff74ee3cf0b..9dc47e4574c93b99c58089811656694b5a4f2749
@@@ -4,7 -4,8 +4,7 @@@
  @syncodeindex fn cp
  
  @copying
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -20,7 -21,7 +20,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * Speedbar: (speedbar).         File/Tag summarizing utility.
  @end direntry
@@@ -40,7 -41,6 +40,7 @@@
  
  @node Top, , , (dir)Top
  @comment  node-name,  next,  previous,  up
 +@top Speedbar
  
  Speedbar is a program for Emacs which can be used to summarize
  information related to the current buffer.  Its original inspiration
@@@ -1253,3 -1253,7 +1253,3 @@@ Two good values are @code{nil} and @cod
  @bye
  @c  LocalWords:  speedbar's xref slowbar kbd subsubsection
  @c  LocalWords:  keybindings
 -
 -@ignore
 -   arch-tag: e1fc85f0-1eeb-489f-a8d4-a2bfe711fa02
 -@end ignore
diff --combined doc/misc/tramp.texi
index 994a8f9967666d63b2a45c833ae8da893406fcb2,8a7cbf6a69d91a8050d493819ee7b0a520e5a666..346354b317085436ec1124d0a2fe212a5d478b33
@@@ -37,7 -37,8 +37,7 @@@
  @end macro
  
  @copying
 -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -54,7 -55,7 +54,7 @@@ supports it in developing GNU and promo
  @end copying
  
  @c Entries for @command{install-info} to use
- @dircategory @value{emacsname}
+ @dircategory @value{emacsname} network features
  @direntry
  * TRAMP: (tramp).               Transparent Remote Access, Multiple Protocol
                                  @value{emacsname} remote file access via rsh and rcp.
@@@ -104,6 -105,11 +104,6 @@@ If you're using the other Emacs flavor
  @end ifset
  
  @ifhtml
 -@ifset jamanual
 -This manual is also available as a @uref{@value{japanesemanual},
 -Japanese translation}.
 -@end ifset
 -
  The latest release of @value{tramp} is available for
  @uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
  @ref{Obtaining Tramp} for more details, including the CVS server
@@@ -165,6 -171,7 +165,6 @@@ Installing @value{tramp} with your @val
  
  * Installation parameters::     Parameters in order to control installation.
  * Load paths::                  How to plug-in @value{tramp} into your environment.
 -* Japanese manual::             Japanese manual.
  
  @end ifset
  
@@@ -443,6 -450,9 +443,6 @@@ Support of gateways exists since April 
  @ifset emacsgvfs
  GVFS integration started in February 2009.
  @end ifset
 -@ifset emacsimap
 -Storing files into IMAP mailboxes has been added in September 2009.
 -@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
@@@ -615,6 -625,10 +615,6 @@@ or 2 to connect to the remote host.  (Y
  @file{~/.ssh/config}, the SSH configuration file, which protocol
  should be used, and use the regular @option{ssh} method.)
  
 -Two other variants, @option{ssh1_old} and @option{ssh2_old}, use the
 -@command{ssh1} and @command{ssh2} commands explicitly.  If you don't
 -know what these are, you do not need these options.
 -
  All the methods based on @command{ssh} have an additional feature: you
  can specify a host name which looks like @file{host#42} (the real host
  name, then a hash sign, then a port number).  This means to connect to
@@@ -692,14 -706,6 +692,14 @@@ This method is also similar to @option{
  @command{krlogin -x} command to log in to the remote host.
  
  
 +@item @option{ksu}
 +@cindex method ksu
 +@cindex ksu method
 +@cindex Kerberos (with ksu method)
 +
 +This is another method from the Kerberos suite.  It behaves like @option{su}.
 +
 +
  @item @option{plink}
  @cindex method plink
  @cindex plink method
@@@ -731,6 -737,19 +731,6 @@@ expects PuTTY session names, calling @s
  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
  
  
@@@ -790,6 -809,10 +790,6 @@@ or 2 to connect to the remote host.  (Y
  @file{~/.ssh/config}, the SSH configuration file, which protocol
  should be used, and use the regular @option{scp} method.)
  
 -Two other variants, @option{scp1_old} and @option{scp2_old}, use the
 -@command{ssh1} and @command{ssh2} commands explicitly.  If you don't
 -know what these are, you do not need these options.
 -
  All the @command{ssh} based methods support the @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
@@@ -953,7 -976,7 +953,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, it forwards all
  requests to @value{ftppackagename}.
  @ifset xemacs
  This works only for unified filenames, see @ref{Issues}.
@@@ -968,20 -991,20 +968,20 @@@ This is another not natural @value{tram
  @command{smbclient} command on different Unices in order to connect to
  an SMB server.  An SMB server might be a Samba (or CIFS) server on
  another UNIX host or, more interesting, a host running MS Windows.  So
 -far, it is tested towards MS Windows NT, MS Windows 2000, and MS
 +far, it is tested against MS Windows NT, MS Windows 2000, and MS
  Windows XP.
  
  The first directory in the localname must be a share name on the remote
 -host.  Remember, that the @code{$} character in which default shares
 +host.  Remember that the @code{$} character, in which default shares
  usually end, must be written @code{$$} due to environment variable
  substitution in file names.  If no share name is given (i.e. remote
  directory @code{/}), all available shares are listed.
  
 -Since authorization is done on share level, you will be prompted
 -always for a password if you access another share on the same host.
 +Since authorization is done on share level, you will always be
 +prompted for a password if you access another share on the same host.
  This can be suppressed by @ref{Password handling}.
  
 -MS Windows uses for authorization both a user name and a domain name.
 +For authorization, MS Windows uses both a user name and a domain name.
  Because of this, the @value{tramp} syntax has been extended: you can
  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
@@@ -1005,10 -1028,33 +1005,10 @@@ methods, where in such a case the loca
  The @option{smb} method supports the @samp{-p} argument.
  
  @strong{Please note:} If @value{emacsname} runs locally under MS
 -Windows, this method isn't available.  Instead of, you can use UNC
 +Windows, this method isn't available.  Instead, you can use UNC
  file names like @file{//melancholia/daniel$$/.emacs}.  The only
  disadvantage is that there's no possibility to specify another user
  name.
 -
 -
 -@ifset emacsimap
 -@item @option{imap}
 -@cindex method imap
 -@cindex method imaps
 -@cindex imap method
 -@cindex imaps method
 -
 -Accessing an IMAP mailbox is intended to save files there as encrypted
 -message.  It could be used in case there are no other remote file
 -storages available.
 -
 -@value{tramp} supports both @option{imap} and @option{imaps} methods.
 -The latter one accesses the IMAP server over ssl.
 -
 -Both methods support the port number specification.
 -
 -Note, that special handling is needed for declaring a passphrase for
 -encryption / decryption of the messages (@pxref{Using an
 -authentication file}).
 -
 -@end ifset
  @end table
  
  
  The connection methods described in this section are based on GVFS
  @uref{http://en.wikipedia.org/wiki/GVFS}.  Via GVFS, the remote
  filesystem is mounted locally through FUSE.  @value{tramp} uses
 -internally this local mounted directory.
 +this local mounted directory internally.
  
  The communication with GVFS is implemented via D-Bus messages.
  Therefore, your @value{emacsname} must have D-Bus integration,
@@@ -1047,7 -1093,7 +1047,7 @@@ Both methods support the port number sp
  @cindex obex method
  
  OBEX is an FTP-like access protocol for simple devices, like cell
 -phones.  Until now @value{tramp} supports only OBEX over Bluetooth.
 +phones.  For the time being, @value{tramp} only supports OBEX over Bluetooth.
  
  
  @item @option{synce}
  
  The @option{synce} method allows communication with Windows Mobile
  devices.  Beside GVFS for mounting remote files and directories via
 -FUSE, it needs also the SYNCE-GVFS plugin.
 +FUSE, it also needs the SYNCE-GVFS plugin.
  @end table
  
  @defopt tramp-gvfs-methods
 -This customer option, a list, defines the external methods, which
 +This customer option, a list, defines the external methods which
  shall be used with GVFS.  Per default, these are @option{dav},
  @option{davs}, @option{obex} and @option{synce}.  Other possible
  values are @option{ftp}, @option{sftp} and @option{smb}.
@@@ -1079,10 -1125,10 +1079,10 @@@ These methods are intended to pass fire
  Therefore, they can be used for proxy host declarations
  (@pxref{Multi-hops}) only.
  
 -A gateway method must come always along with a method who supports
 +A gateway method must always come along with a method which supports
  port setting.  This is because @value{tramp} targets the accompanied
  method to @file{localhost#random_port}, from where the firewall or
 -proxy server is accessed to.
 +proxy server is accessed.
  
  Gateway methods support user name and password declarations.  These
  are used to authenticate towards the corresponding firewall or proxy
@@@ -1599,6 -1645,18 +1599,6 @@@ The port can be any @value{tramp} metho
  @pxref{External methods}), to match only this method.  When you omit
  the port, you match all @value{tramp} methods.
  
 -@ifset emacsimap
 -A special case are @option{imap}-like methods.  Authentication with
 -the IMAP server is performed via @file{imap.el}, there is no special
 -need from @value{tramp} point of view.  An additional passphrase, used
 -for symmetric encryption and decryption of the stored messages, should
 -be given with the special port indication @option{tramp-imap}:
 -
 -@example
 -machine melancholia port tramp-imap login daniel password ultrageheim
 -@end example
 -@end ifset
 -
  @anchor{Caching passwords}
  @subsection Caching passwords
  
@@@ -1673,7 -1731,7 +1673,7 @@@ multiple hops (@pxref{Multi-hops})
  When @value{tramp} detects a changed operating system version on a
  remote host (via the command @command{uname -sr}), it flushes all
  connection related information for this host, and opens the
 -connection, again.
 +connection again.
  
  
  @node Remote Programs
@@@ -1728,7 -1786,7 +1728,7 @@@ as
  @end lisp
  
  Another possibility is to reuse the path settings of your remote
 -account, when you log in.  Usually, these settings are overwritten,
 +account when you log in.  Usually, these settings are overwritten,
  because they might not be useful for @value{tramp}.  The place holder
  @code{tramp-own-remote-path} preserves these settings.  You can
  activate it via
@@@ -1911,7 -1969,7 +1911,7 @@@ understand this syntax and will emit a 
  this line.
  
  Another example is the tilde (@code{~}) character, say when adding
 -@file{~/bin} to @code{$PATH}.  Many Bourne shells will not expand this
 +@file{~/bin} to @code{PATH}.  Many Bourne shells will not expand this
  character, and since there is usually no directory whose name consists
  of the single character tilde, strange things will happen.
  
@@@ -1938,38 -1996,6 +1938,38 @@@ shell is Bourne-ish already, then it mi
  @command{exec /bin/sh} step.  But how to find out if the shell is
  Bourne-ish?
  
 +
 +@item Interactive shell prompt
 +
 +@value{tramp} redefines the shell prompt in order to parse the shell's
 +output robustly.  When calling an interactive shell by @kbd{M-x
 +shell}, this doesn't look nice.
 +
 +You can redefine the shell prompt by checking the environment variable
 +@code{INSIDE_EMACS}, which is set by @value{tramp}, in your startup
 +script @file{~/.emacs_SHELLNAME}. @code{SHELLNAME} might be the string
 +@code{bash} or similar, in case of doubt you could set it the
 +environment variable @code{ESHELL} in your @file{.emacs}:
 +
 +@lisp
 +(setenv "ESHELL" "bash")
 +@end lisp
 +
 +Your file @file{~/.emacs_SHELLNAME} could contain code like
 +
 +@example
 +# Reset the prompt for remote Tramp shells.
 +if [ "$@{INSIDE_EMACS/*tramp*/tramp@}" == "tramp" ] ; then
 +   PS1="[\u@@\h \w]$ "
 +fi
 +@end example
 +
 +@ifinfo
 +@ifset emacs
 +@xref{Interactive Shell, , , @value{emacsdir}}.
 +@end ifset
 +@end ifinfo
 +
  @end table
  
  
@@@ -2388,8 -2414,8 +2388,8 @@@ If the configuration files (@pxref{Cust
  @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.
 +Remote machines which have been visited in the past and kept
 +persistently (@pxref{Connection caching}) will be offered too.
  
  Once the remote machine identification is completed, it comes to
  filename completion on the remote host.  This works pretty much like
@@@ -2429,8 -2455,8 +2429,8 @@@ Example
  
  A remote directory might have changed its contents out of
  @value{emacsname} control, for example by creation or deletion of
 -files by other processes.  Therefore, during filename completion the
 -remote directory contents is reread regularly in order to detect such
 +files by other processes.  Therefore, during filename completion, the
 +remote directory contents are reread regularly in order to detect such
  changes, which would be invisible otherwise (@pxref{Connection caching}).
  
  @defopt tramp-completion-reread-directory-timeout
@@@ -2452,15 -2478,6 +2452,15 @@@ remote file names.  It does not work fo
  @option{smb} methods.  Association of a pty, as specified in
  @code{start-file-process}, is not supported.
  
 +@code{process-file} and @code{start-file-process} work on the remote
 +host when the variable @code{default-directory} is remote:
 +
 +@lisp
 +(let ((default-directory "/ssh:remote.host:"))
 +  (start-file-process "grep" (get-buffer-create "*grep*")
 +                      "/bin/sh" "-c" "grep -e tramp *"))
 +@end lisp
 +
  @ifset emacsgvfs
  If the remote host is mounted via GVFS (see @ref{GVFS based methods}),
  the remote filesystem is mounted locally.  Therefore, there are no
@@@ -2503,7 -2520,7 +2503,7 @@@ Adding an entry can be performed via @c
  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{HISTORY} environment variable, you can customize
  @code{tramp-remote-process-environment}, or you can apply the
  following code in your @file{.emacs}:
  
@@@ -2522,7 -2539,7 +2522,7 @@@ integrate them as well.  @xref{Bug Repo
  
  If you want to run a remote program, which shall connect the X11
  server you are using with your local host, you can set the
 -@var{$DISPLAY} environment variable on the remote host:
 +@code{DISPLAY} environment variable on the remote host:
  
  @lisp
  (add-to-list 'tramp-remote-process-environment
@@@ -2744,9 -2761,9 +2744,9 @@@ The package has been used successfully 
  XEmacs 21 (starting with 21.4), and SXEmacs 22.
  
  The package was intended to work on Unix, and it really expects a
 -Unix-like system on the remote end (except the @option{smb} and
 -@option{imap} methods), but some people seemed to have some success
 -getting it to work on MS Windows XP/Vista/7 @value{emacsname}.
 +Unix-like system on the remote end (except the @option{smb} method),
 +but some people seemed to have some success getting it to work on MS
 +Windows XP/Vista/7 @value{emacsname}.
  
  
  @item
@@@ -2763,10 -2780,7 +2763,10 @@@ Use an external method, like @option{sc
  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.
 +@code{tramp-persistency-file-name}.  Keep this file.  If you are
 +confident that files on remote hosts are not changed out of
 +@value{emacsname}' control, set @code{remote-file-name-inhibit-cache}
 +to @code{nil}.
  
  Disable version control.  If you access remote files which are not
  under version control, a lot of check operations can be avoided by
@@@ -2796,7 -2810,7 +2796,7 @@@ reasons heading the bug mailing list
  Unknown characters in the prompt
  
  @value{tramp} needs to recognize the prompt on the remote machine
 -after execution any command.  This is not possible, when the prompt
 +after execution any command.  This is not possible when the prompt
  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.
@@@ -2871,7 -2885,7 +2871,7 @@@ checksum
  When your network connection is down, @command{ssh} sessions might
  hang.  @value{tramp} cannot detect it safely, because it still sees a
  running @command{ssh} process.  Timeouts cannot be used as well,
 -because it cannot be predicted, how long a remote command will last,
 +because it cannot be predicted how long a remote command will last,
  for example when copying very large files.
  
  Therefore, you must configure the @command{ssh} process to die
@@@ -3081,7 -3095,7 +3081,7 @@@ You can define default methods and use
  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
 +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, , ,}}.
  
@@@ -3113,7 -3127,7 +3113,7 @@@ Lisp
  @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
 +are.  The disadvantage is that you cannot edit the file name, because
  environment variables are not expanded during editing in the
  minibuffer.
  
@@@ -3285,7 -3299,7 +3285,7 @@@ You need to load @file{bbdb}
  
  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:
 +specify a method together with the user name when needed. Example:
  
  @example
  @kbd{M-x bbdb-create-ftp-site @key{RET}}
@@@ -3302,7 -3316,7 +3302,7 @@@ pressing the key @key{F}
  
  @end enumerate
  
 -I would like to thank all @value{tramp} users, who have contributed to
 +I would like to thank all @value{tramp} users who have contributed to
  the different recipes!
  
  
@@@ -3325,7 -3339,7 +3325,7 @@@ On the remote host, you start the Emac
  (server-start)
  @end lisp
  
 -Make sure, that the result of @code{(system-name)} can be resolved on
 +Make sure that the result of @code{(system-name)} can be resolved on
  your local host; otherwise you might use a hard coded IP address.
  
  The resulting file @file{~/.emacs.d/server/server} must be copied to
@@@ -3459,7 -3473,7 +3459,7 @@@ its complete cache keeping attributes f
  it has seen so far.
  
  This is a performance degradation, because the lost file attributes
 -must be recomputed, when needed again.  In cases the caller of
 +must be recomputed when needed again.  In cases the caller of
  @code{process-file} knows that there are no file attribute changes, it
  shall let-bind the variable @code{process-file-side-effects} to
  @code{nil}.  @value{tramp} wouldn't flush the file attributes cache then.
@@@ -3646,3 -3660,7 +3646,3 @@@ for @value{emacsothername}
  @c * Use `filename' resp. `file name' consistently.
  @c * Use `host' resp. `machine' consistently.
  @c * Consistent small or capitalized words especially in menues.
 -
 -@ignore
 -   arch-tag: f96dd66e-6dd3-4c92-8d77-9c56205ba808
 -@end ignore
diff --combined doc/misc/trampver.texi
index 2968642bcc2462691fc471108bd492fcd71e9223,3cde3eb4bfc0b53d8b3229da65e9ab3c33a93f81..ff5641fb4b40418e48faa84b406ae7a87cbb552f
@@@ -2,13 -2,14 +2,13 @@@
  @c texi/trampver.texi.  Generated from trampver.texi.in by configure.
  
  @c This is part of the Emacs manual.
 -@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009,
 -@c   2010, 2011 Free Software Foundation, Inc.
 +@c Copyright (C) 2003-2011 Free Software Foundation, Inc.
  @c See file doclicense.texi for copying conditions.
  
  @c In the Tramp CVS, the version number is auto-frobbed from
  @c configure.ac, so you should edit that file and run
  @c "autoconf && ./configure" to change the version number.
 -@set trampver 2.1.20
 +@set trampver 2.2.1-pre
  
  @c Other flags from configuration
  @set instprefix /usr/local
  @set emacsgw
  @end ifclear
  
 -@c Whether or not describe IMAP support.
 -@ifclear noemacsimap
 -@set emacsimap
 -@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
@@@ -38,7 -44,7 +38,7 @@@
  
  @c Emacs values.
  @ifset emacs
- @set emacsname          GNU Emacs
+ @set emacsname          Emacs
  @set emacsdir           emacs
  @set ftppackagename     Ange-FTP
  @set prefix             /
@@@ -50,6 -56,7 +50,6 @@@
  @set emacsothername     XEmacs
  @set emacsotherdir      xemacs
  @set emacsotherfilename tramp-xemacs.html
 -@set japanesemanual     tramp_ja-emacs.html
  @end ifset
  
  @c XEmacs counterparts.
@@@ -66,4 -73,9 +66,4 @@@
  @set emacsothername     GNU Emacs
  @set emacsotherdir      emacs
  @set emacsotherfilename tramp-emacs.html
 -@set japanesemanual     tramp_ja-xemacs.html
  @end ifset
 -
 -@ignore
 -   arch-tag: e0fe322c-e06b-46eb-bb5b-d091b521f41c
 -@end ignore
diff --combined doc/misc/url.texi
index d337c82494c8c191b335c08dab6220d9bb7dc643,7e65e5c8675cde2347027e35f067d4af0bb9fec5..2bde54a8dea55e1668c4e5f6b94859d938767ebd
@@@ -12,7 -12,7 +12,7 @@@
  \overfullrule=0pt
  %\global\baselineskip 30pt      % for printing in double space
  @end tex
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * URL: (url).                   URL loading package.
  @end direntry
@@@ -20,7 -20,8 +20,7 @@@
  @copying
  This file documents the Emacs Lisp URL loading package.
  
 -Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2002,
 -2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1993-1999, 2002, 2004-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -729,6 -730,14 +729,6 @@@ directory to store the cache files.  I
  @file{cache} of @code{url-configuration-directory}.
  @end defopt
  
 -@c Fixme: function v. option, but neither used.
 -@c @findex url-cache-expired
 -@c @defopt url-cache-expired
 -@c This is a function to decide whether or not a cache entry has expired.
 -@c It takes two times as it parameters and returns non-@code{nil} if the
 -@c second time is ``too old'' when compared with the first time.
 -@c @end defopt
 -
  @defopt url-cache-creation-function
  The cache relies on a scheme for mapping URLs to files in the cache.
  This variable names a function which sets the type of cache to use.
@@@ -758,22 -767,6 +758,22 @@@ more likely to conflict with other file
  @end smallexample
  @end defun
  
 +@defun url-cache-expired
 +This function returns non-nil if a cache entry has expired (or is absent).
 +The arguments are a URL and optional expiration delay in seconds
 +(default @var{url-cache-expire-time}).
 +@end defun
 +
 +@defopt url-cache-expire-time
 +This variable is the default number of seconds to use for the
 +expire-time argument of the function @code{url-cache-expired}.
 +@end defopt
 +
 +@defun url-fetch-from-cache
 +This function takes a URL as its argument and returns a buffer
 +containing the data cached for that URL.
 +@end defun
 +
  @c Fixme: never actually used currently?
  @c @defopt url-standalone-mode
  @c @cindex Relying on cache
@@@ -1192,3 -1185,7 +1192,3 @@@ Connect directly
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0
 -@end ignore
diff --combined doc/misc/vip.texi
index fe1098c49ff0f051490baad82b2cb22afaf68bac,539f6fe2c35b851759449c3a2e2c2b55faca9926..03ca65882e54ed259e01c5c329e726e6e6805122
@@@ -3,7 -3,8 +3,7 @@@
  @settitle VIP
  
  @copying
 -Copyright @copyright{} 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1987, 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -35,7 -36,7 +35,7 @@@ developing GNU and promoting software f
  @finalout
  @contents
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * VIP: (vip).                   An older VI-emulation for Emacs.
  @end direntry
@@@ -1945,3 -1946,7 +1945,3 @@@ file
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 7c5d17b9-1d21-4261-a88a-b9fdbbf1020b
 -@end ignore
diff --combined doc/misc/viper.texi
index 9e55e08242f70537b0437c0804575b314f9fe360,0482f78ba15046cff1fc2007cfce2ba48c862afd..1f0dffee5b4c343f40cb60422f541403b61cf79d
@@@ -7,7 -7,8 +7,7 @@@
  @setfilename ../../info/viper
  
  @copying
 -Copyright @copyright{} 1995, 1996, 1997, 2001, 2002, 2003, 2004,
 -2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 1995-1997, 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -23,7 -24,7 +23,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * VIPER: (viper).               The newest Emacs VI-emulation mode.
                                    (also, A VI Plan for Emacs Rescue
@@@ -4557,3 -4558,7 +4557,3 @@@ zapman@@cc.gatech.edu (Jason Zapman II)
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: f53e866a-15cf-4b1e-aead-77da9da1e864
 -@end ignore
diff --combined doc/misc/widget.texi
index 667dab552218a69a4c38814e0a35bec2b8415146,ac111870f3ee90bde5ae64af1013772b858c0e62..c4f5317e5a7f4b73ddb005e873e803f5d89bd371
@@@ -8,7 -8,8 +8,7 @@@
  @c %**end of header
  
  @copying
 -Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +Copyright @copyright{} 2000-2011  Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -24,7 -25,7 +24,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs lisp libraries
  @direntry
  * Widget: (widget).             The "widget" package used by the Emacs
                                    Customization facility.
@@@ -1828,3 -1829,7 +1828,3 @@@ variables, and widgets described in thi
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: 2b427731-4c61-4e72-85de-5ccec9c623f0
 -@end ignore
diff --combined doc/misc/woman.texi
index 9f77a077703f1ee80d7ab6dd9ed51e4fc5cc61bb,975a9c408fc796fcc15fd1db31b651b6ac321363..c869d1a46c7027f5ff5cc183cc49329a08ff5020
@@@ -18,7 -18,8 +18,7 @@@
  This file documents WoMan: A program to browse Unix manual pages `W.O.
  (without) man'.
  
 -Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
 -2009, 2010, 2011 Free Software Foundation, Inc.
 +Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.
  
  @quotation
  Permission is granted to copy, distribute and/or modify this document
@@@ -34,7 -35,7 +34,7 @@@ developing GNU and promoting software f
  @end quotation
  @end copying
  
- @dircategory Emacs
+ @dircategory Emacs misc features
  @direntry
  * WoMan: (woman).               Browse UN*X Manual Pages "W.O. (without) Man".
  @end direntry
@@@ -1120,8 -1121,8 +1120,8 @@@ A regular match expression used to matc
  for which decompressors are available and handled by auto-compression
  mode.  It should begin with @code{\\.} and end with @code{\\'} and
  @emph{must not} be optional.  The default value is
 -@code{"\\.\\(g?z\\|bz2\\)\\'"}, which matches the @code{gzip} and
 -@code{bzip2} compression extensions.
 +@code{"\\.\\(g?z\\|bz2\\|xz\\)\\'"}, which matches the @code{gzip},
 +@code{bzip2}, and @code{xz} compression extensions.
  
  @emph{Do not change this unless you are sure you know what you are doing!}
  
@@@ -1429,3 -1430,7 +1429,3 @@@ Eli Zaretskii, @email{eliz@@is.elta.co.
  @printindex cp
  
  @bye
 -
 -@ignore
 -   arch-tag: a1a6b715-396f-4378-9b94-0b2ca0aa5028
 -@end ignore
diff --combined lisp/ChangeLog
index 0f2fa15d67879a7fbdf902cd9f99fe11e4460c3f,e0c9f552c9fb5957a331cbb4a90433b26cf8a522..840f96bfcf108db5d492081a862d5155563e85e8
 -2011-02-18  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * image-mode.el (image-toggle-display-image): Disable
 -      require-final-newline in buffers visiting binary image files.
 -      (Bug#8047)
+ 2011-02-19  Kenichi Handa  <handa@m17n.org>
+       * mail/rmailmm.el (rmail-mime-find-header-encoding): Be sure to
+       get the header copy into the temporary buffer.
+       (rmail-mime-insert-decoded-text): Ignore us-ascii.
+       (rmail-show-mime): When rmail-mime-coding-system is nil, set
+       buffer-file-coding-system to undecided.
 -2011-02-18  Glenn Morris  <rgm@gnu.org>
++2011-02-19  Eli Zaretskii  <eliz@gnu.org>
+       * international/mule-cmds.el (read-char-by-name, ucs-insert):
+       Document completion with asterisk and a substring.
 -2011-02-17  Glenn Morris  <rgm@gnu.org>
 -
++2011-02-19  Glenn Morris  <rgm@gnu.org>
+       * files.el (find-file-literally): Doc fix.
 -2011-02-14  Chong Yidong  <cyd@stupidchicken.com>
+       * simple.el (rfc822-goto-eoh): Give it a doc-string.
+       * log-edit.el (log-edit-insert-changelog):
+       Fix `log-edit-strip-single-file-name' functionality.  (Bug#8057)
 +2011-02-19  Glenn Morris  <rgm@gnu.org>
  
 -      * pgg-gpg.el (pgg-gpg-process-region): Bind
 -      delete-by-moving-to-trash to nil.
 +      * dired-x.el (dired-read-shell-command): Merge into dired-aux's version.
 +      * dired-aux.el (dired-read-shell-command): Merge dired-x's version.
  
 -      * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region)
 -      (pgg-pgp-snarf-keys-region):
 -      * pgg-pgp5.el (pgg-pgp5-process-region, pgg-pgp5-verify-region)
 -      (pgg-pgp5-snarf-keys-region): Likewise.
 +      * dired-x.el (dired-clean-up-after-deletion): Merge into dired.el.
 +      * dired.el (dired-clean-up-after-deletion): Merge dired-x's version.
 +      (dired-clean-up-buffers-too): Declare.
  
 -2011-02-12  Chong Yidong  <cyd@stupidchicken.com>
 +      * dired-x.el (dired-initial-position): Merge into dired.el's version.
 +      * dired.el (dired-initial-position): Merge dired-x's version here.
 +      (dired-find-subdir): Declare.
  
 -      * files.el (copy-directory): Revert to pre-2011-01-29 version.
 +      * dired-x.el (dired-omit-new-add-entry): Merge into dired-add-entry.
 +      * dired-aux.el (dired-add-entry): Give it a doc-string.
 +      Merge dired-x's dired-omit handling here.
 +      (dired-omit-mode, dired-omit-regexp, dired-omit-localp): Declare.
  
 -2011-02-12  Chong Yidong  <cyd@stupidchicken.com>
 +      * international/mule-diag.el (list-input-methods-1):
 +      Indent all lines of multi-line doc-strings.  (Bug#8066)
  
 -      * epg.el (epg-delete-output-file, epg-decrypt-string)
 -      (epg-verify-string, epg-sign-string, epg-encrypt-string): Bind
 -      delete-by-moving-to-trash to nil.
 +2011-02-18  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * epa-file.el (epa-file-insert-file-contents): Likewise.
 +      Fix 2011-02-02 changes.
  
 -2011-02-10  Glenn Morris  <rgm@gnu.org>
 +      * apropos.el (apropos-print): Call apropos-mode before setting up
 +      buffer variables.  Use inhibit-read-only.
  
 -      * emacs-lisp/cl-seq.el (union, nunion, intersection)
 -      (nintersection, set-difference, nset-difference)
 -      (set-exclusive-or, nset-exclusive-or): Doc fix.
 +      * emacs-lisp/package.el (package--list-packages): Call
 +      package-menu-mode before setting up buffer variables.
  
 -      * ediff-ptch.el (ediff-fixup-patch-map): Doc fix.
 +      * play/solitaire.el (solitaire): Call solitaire-mode before
 +      setting up buffer variables.  Use inhibit-read-only.
  
 -2011-02-08  Glenn Morris  <rgm@gnu.org>
 +2011-02-18  Lawrence Mitchell  <wence@gmx.li>
  
 -      * faces.el (face-attr-match-p): Handle the obsolete :bold and
 -      :italic props, so that frame-set-background-mode works.  (Bug#7966)
 +      * progmodes/sh-script.el (sh-syntax-propertize-here-doc): (bug#8053)
 +      Bind case-fold-search to nil when looking for end of here-doc.
  
 -2011-02-07  Glenn Morris  <rgm@gnu.org>
 +2011-02-18  Eli Zaretskii  <eliz@gnu.org>
  
 -      * simple.el (next-error): Doc fix.
 +      * image-mode.el (image-toggle-display-image):
 +      Set find-file-literally non-nil in buffers visiting binary image
 +      files.  (Bug#8047)
  
 -2011-02-06  Chong Yidong  <cyd@stupidchicken.com>
 -            Thierry Volpiatto <thierry.volpiatto@gmail.com>
 +2011-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * files.el (copy-directory): New arg COPY-AS-SUBDIR.  If nil,
 -      don't copy as a subdirectory.
 +      * files.el (cd): Make completion obey cd-path (bug#7924).
  
 -2011-02-05  Glenn Morris  <rgm@gnu.org>
 +2011-02-18  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/cl-macs.el (return-from): Fix doc typo.
 +      * progmodes/prolog.el: Don't require compile when compiling.
 +      (compilation-shell-minor-mode, compilation-error-regexp-alist)
 +      (compilation-forget-errors, compilation-fake-loc)
 +      (compilation-parse-errors-function, compilation-error-list): Declare.
 +      (prolog-inferior-mode): Require 'compile.
 +
 +      * emulation/cua-base.el (pc-selection-mode): Declare.
 +
 +      * emacs-lisp/eieio-custom.el: Set generated-autoload-file.
 +      (customize-object): Add autoload cookie.
 +      * emacs-lisp/eieio-opt.el: Set generated-autoload-file.
 +      (eieio-browse, describe-class, eieio-describe-class)
 +      (eieio-describe-constructor, describe-generic, eieio-describe-generic)
 +      (eieio-help-mode-augmentation-maybee): Add autoload cookies.
 +      * emacs-lisp/eieio.el: Regenerate with automatic autoloads.
 +      * Makefile.in (autoloads): Make eieio.el writable.
 +
 +      * dired-x.el (dired-clean-up-after-deletion, dired-do-relsymlink)
 +      (dired-do-relsymlink-regexp, dired-find-buffer-nocreate): Use #'.
 +      (dired-hack-local-variables): Use inhibit-read-only.
 +      (dired-guess-default): Simplify.
 +      (dired-make-relative-symlink): Use dotimes.
 +      (dired-simultaneous-find-file): Use dolist.
 +      (dired-mark-sexp): Remove unneeded `if'.  Use line-end-position.
 +      (dired-x-hands-off-my-keys): Doc fix.
 +      (dired-x-bind-find-file): Doc fix.  Use remapping.
 +      (after-init-hook): No need to add dired-x-bind-find-file.
 +      (dired-x-find-file, dired-x-find-file-other-window): Doc fixes.
 +      No need to call expand-file-name.
 +      (dired-filename-at-point): Remove unused locals `end', `filename'.
 +
 +2011-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase--u1): Understand non-linear patterns.
 +
 +2011-02-18  Christian Ohler  <ohler@gnu.org>
 +
 +      * emacs-lisp/ert.el (ert--setup-results-buffer)
 +      (ert-results-pop-to-backtrace-for-test-at-point)
 +      (ert-results-pop-to-messages-for-test-at-point)
 +      (ert-results-pop-to-should-forms-for-test-at-point)
 +      (ert-results-pop-to-timings): Revert parts of change 2011-02-02T17:59:44Z!sds@gnu.org that
 +      were incorrect and unnecessary.  This should make `make check'
 +      pass again.
 +
 +2011-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      * lisp/allout-widgets.el: (allout-widgets-icons-light-subdir)
 +      (allout-widgets-icons-dark-subdir): Track relocations of icons
 +      * lisp/allout.el: Remove commentary about remove encryption
 +      passphrase mnemonic support and verification.
 +      (allout-encrypt-string): (allout-encrypt-string): Recognize epg
 +      failure to decrypt gpg2 armored text using gpg1, and indicate that
 +      the gpg version *might* be the problem in the error message.
 +
 +2011-02-17  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el (rcirc-float-time): New function.
 +      (rcirc-keepalive, rcirc-handler-ctcp-KEEPALIVE)
 +      (rcirc-ctcp-sender-PING): Use it.
  
 -2011-02-04  Glenn Morris  <rgm@gnu.org>
 +2011-02-17  Glenn Morris  <rgm@gnu.org>
  
 -      * calendar/diary-lib.el (diary-font-lock-keywords):
 -      Tweak diary-time-regexp match.  (Bug#7891)
 +      * speedbar.el (speedbar-ignored-modes, speedbar-file-unshown-regexp)
 +      (speedbar-update-flag, speedbar-fetch-etags-command)
 +      (speedbar-fetch-etags-arguments):
 +      * term.el (term-buffer-maximum-size, term-input-chunk-size)
 +      (term-completion-autolist, term-completion-addsuffix)
 +      (term-completion-recexact, term-completion-fignore):
 +      * term/sup-mouse.el (sup-mouse-fast-select-window):
 +      * term/x-win.el (x-select-request-type):
 +      Convert some defvars with "*" to defcustoms.
  
 -      * progmodes/f90.el (f90-find-tag-default): New function.  (Bug#7919)
 -      (f90-mode): Use it for mode's `find-tag-default-function' property.
 +      * shell.el (shell-delimiter-argument-list): Set it to nil.  (Bug#8027)
  
 -2011-02-03  Glenn Morris  <rgm@gnu.org>
 +      * vc/vc.el (vc-default-previous-version):
 +      Remove alias that points nowhere.  (Bug#4496)
  
 -      * ibuf-ext.el (ibuffer-filter-disable): Make it work.  (Bug#7969)
 +      * dired-x.el (dired-clean-up-after-deletion):
 +      kill-buffer does not need save-excursion.
 +      (dired-do-run-mail): Doc fix.
 +      (dired-filename-at-point): Doc fix.
 +      Use looking-at, and skip-chars rather than re search.
  
 -      * faces.el (set-face-attribute): Doc fix.  (Bug#2659)
 +      * dired-x.el (dired-filename-at-point): Fix 8-year old typo.
  
 -2011-02-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-02-16  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -      * pcomplete.el (pcomplete-here*): Backport fix for mistaken change
 -      (bug#7959) and (bug#5935).
 +      * allout-widgets.el: New allout extension that shows allout
 +      outline structure with graphical widgets.  'allout-widgets'
 +      customize group is an 'allout' subgroup, for easy discovery.
  
 -2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +      * allout.el: Include PGP and GnuPG in Keywords, and other
 +      commentary refinements.
 +      (allout-abbreviate-flattened-numbering): Rename to
 +      allout-flattened-numbering-abbreviation, and
 +      define-obsolete-variable-alias the old name.
 +      (allout-flattened-numbering-abbreviation): Rename from
 +      allout-abbreviate-flattened-numbering.
 +      (allout-mode-p): Include among autoloads, for use by other modes
 +      with impunity.
 +      (allout-listify-exposed):
 +      Use allout-flattened-numbering-abbreviation.
 +      (allout-encrypt-string): Use set-buffer-multibyte directly.
 +      (allout-set-buffer-multibyte): Remove.
  
 -      * net/rcirc.el: Clean log filenames (Bug#7933).
 -      (rcirc-log-write): Use convert-standard-filename.
 -      (rcirc-log-filename-function): Documentation updates.
 +2011-02-16  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -2011-01-31  Alan Mackenzie  <acm@muc.de>
 +      * simple.el (just-one-space): Remove useless `or' call.
  
 -      * progmodes/cc-cmds.el (c-forward-over-illiterals):
 -      Continue parsing if we encounter a naked # (Bug#7595).
 -      (c-beginning-of-statement): Avoid loop in locating the beginning
 -      of a macro.
 +2011-02-16  Alex Harsanyi  <AlexHarsanyi@gmail.com>
  
 -2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
 +      * soap-client.el (soap-well-known-xmlns, soap-local-xmlns)
 +      (soap-default-xmlns, soap-target-xmlns, soap-multi-refs)
 +      (soap-decoded-multi-refs, soap-current-wsdl)
 +      (soap-encoded-namespaces): Rename CL-style *...* variables.
  
 -      * files.el (copy-directory): Fix arguments to recursive call.
 +2011-02-16  Michael Albinus  <michael.albinus@gmx.de>
  
 -2011-01-29  Daiki Ueno  <ueno@unixuser.org>
 +      * net/soap-client.el: Add "comm" and "hypermedia" to the
 +      keywords.  Reflow too long lines.
  
 -      * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED):
 -      Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status
 -      (Bug#7931).
 +      * net/soap-inspect.el: Ditto.  Require 'cl.
  
 -2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +2011-02-16  Bastien Guerry  <bzg@altern.org>
  
 -      * files.el (copy-directory): If destination is an existing
 -      directory, copy into a subdirectory there.
 +      * play/doctor.el (doctor-mode): Bugfix: escape the "," character
 +      in a `doctor-type' argument.
  
 -2011-01-29  Andreas Schwab  <schwab@linux-m68k.org>
 +2011-02-16  Alex Harsanyi  <AlexHarsanyi@gmail.com>
  
 -      * emacs-lisp/shadow.el (load-path-shadows-find): Ignore leim-list
 -      files.
 +      * net/soap-client.el:
 +      * net/soap-inspect.el: New files.
  
 -2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
 +2011-02-16  Leo  <sdl.web@gmail.com>
  
 -      * image-dired.el (image-dired-mouse-display-image): No-op if no
 -      file is found (Bug#7817).
 +      * dired-x.el (dired-mode-map, dired-extra-startup):
 +      Remove dired-copy-filename-as-kill since it's already in dired.el.
  
 -      * mouse.el (mouse-menu-non-singleton): Doc fix (Bug#7801).
 +2011-02-16  Glenn Morris  <rgm@gnu.org>
  
 -2011-01-28  Kenichi Handa  <handa@m17n.org>
 +      * dired-x.el (dired-bind-jump, dired-bind-man, dired-bind-info):
 +      Doc fixes.  Add :set property, replacing top-level calls.
 +      (dired-vm-read-only-folders, dired-vm): Doc fix (drop v. old VM 4).
 +      (dired-guess-shell-gnutar): Test tar version rather than system-type.
 +      (dired-extra-startup, dired-man, dired-info): Doc fixes.
 +      (dired-clean-up-after-deletion): Use when and dolist.
 +      (dired-jump): Use unless and when.
 +      (dired-virtual): Use line-end-position.
 +      (dired-default-directory-alist): Rename from default-directory-alist.
 +      (dired-default-directory): Update for above name change.
 +      (dired-vm): Drop VM < 5 and simplify.
 +      (dired-buffer-more-recently-used-p): Rewrite.
 +      (dired-filename-at-point): Use when and or.
 +      (dired-x-read-filename-at-point): Rename from read-filename-at-point.
 +      Update callers.
  
 -      * international/quail.el (quail-keyboard-layout-alist):
 -      Remove superfluous SPC for "pc105-uk" (bug#7927).
 +2011-02-15  Glenn Morris  <rgm@gnu.org>
  
 -2011-01-27  Glenn Morris  <rgm@gnu.org>
 +      * dired-x.el: Use easymenu for menu items.  Fix item capitalization.
  
 -      * msb.el (msb-menu-bar-update-buffers): Update for changed
 -      argument handling of menu-bar-select-frame.  (Bug#7902)
 +2011-02-14  Chong Yidong  <cyd@stupidchicken.com>
  
 -2011-01-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc/vc-git.el (vc-git-root-log-format): New option for
 +      customizing log format.
 +      (vc-git-print-log, vc-git-log-outgoing, vc-git-log-incoming)
 +      (vc-git-log-view-mode): Use it.
 +      (vc-git-expanded-log-entry): New function.
 +      (vc-git-log-view-mode): Use it.  Truncate lines in root log.
  
 -      * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit
 -      to the recursion depth (Bug#7722).
 +      * vc/vc-hg.el (vc-hg-root-log-template): New option for
 +      customizing log format.
 +      (vc-hg-print-log): Use it.
 +      (vc-hg-expanded-log-entry): New function.
 +      (vc-hg-log-view-mode): Use vc-hg-root-log-template and
 +      vc-hg-expanded-log-entry.  Truncate lines in root log.
  
 -2011-01-26  Roy Liu  <carsomyr@gmail.com>  (tiny change)
 +      * vc/vc-bzr.el (vc-bzr-log-view-mode): Truncate lines in root log.
  
 -      * term/ns-win.el (ns-find-file): Expand ns-input-file with
 -      command-line-default-directory (Bug#7872).
 +      * vc/log-view.el (log-view-mode-menu):
 +      Add log-view-toggle-entry-display.
  
 -2011-01-25  Glenn Morris  <rgm@gnu.org>
 +2011-02-14  Glenn Morris  <rgm@gnu.org>
  
 -      * comint.el (comint-mode): Doc fix.  (Bug#7897)
 +      * dired-x.el: Don't require man when compiling.
 +      (dired-omit-extensions, dired-local-variables-file)
 +      (dired-x-hands-off-my-keys): Make them defcustoms.
 +      (Man-support-local-filenames, Man-getpage-in-background): Declare.
 +      (vm-visit-folder): Declare rather than defining.
 +      (dired-x-help-address, dired-x-variable-list): Remove.
 +      (dired-x-submit-report): Make it an obsolete alias.
  
 -2011-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-02-14  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * files.el (file-name-non-special): Only change buffer-file-name after
 -      insert-file-contents if it's `visit'ing the file (bug#7854).
 +      * makefile.w32-in (TRAMP_SRC): Remove tramp-imap.el.
  
 -2011-01-23  Chong Yidong  <cyd@stupidchicken.com>
 +2011-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * dired.el (dired-revert): Doc fix (Bug#7758).
 +      * net/imap.el: Bring it back.
  
 -2011-01-23  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 +2011-02-13  Alan Mackenzie  <acm@muc.de>
  
 -      * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for
 -      here-doc which ends with an underscore.
 -      (ruby-mode-set-encoding): Skip shebang line always.
 -      (ruby-mode-map): Bind C-c C-c to comment-region.
 -      (ruby-font-lock-keywords): Highlight literal hash key labels as symbols.
 -      (ruby-forward-sexp): Stop after literal hash key labels.
 -      (ruby-font-lock-syntactic-keywords): Highlight regexp after open
 -      bracket.
 +      * progmodes/cc-fonts.el (c-font-lock-declarations): Remove a
 +      narrow-to-region call that cuts context off the end (Bug#7722).
  
 -2011-01-22  Keitaro Miyazaki  <keitaro.miyazaki@gmail.com>  (tiny change)
 +      * progmodes/cc-engine.el (c-forward-<>-arglist-recur):
 +      Refactor nested if-forms with a simple cond.
 +      (c-forward-<>-arglist): Revert 2011-01-31 change.
  
 -      * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in
 -      the correct buffer (Bug#7650).
 +2011-02-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -2011-01-22  Glenn Morris  <rgm@gnu.org>
 +      * vc/log-view.el: New command log-view-toggle-entry-display for
 +      toggling log entries between concise and detailed forms.
 +      (log-view-toggle-entry-display): New command.
 +      (log-view-mode-map): Bind RET to it.
 +      (log-view-expanded-log-entry-function): New variable.
 +      (log-view-current-entry, log-view-inside-comment-p)
 +      (log-view-current-tag): New functions.
 +      (log-view-toggle-mark-entry): Use log-view-current-entry and
 +      log-view-end-of-defun instead of searching directly with
 +      log-view-message-re.
 +      (log-view-end-of-defun): Likewise.  Add optional ARG for
 +      compatibility with end-of-defun.
 +      (log-view-end-of-defun): Ignore comments and VC buttons.
  
 -      * simple.el (do-auto-fill): Give it a doc string.
 +      * vc/vc-bzr.el (vc-bzr-expanded-log-entry): New function.
 +      (vc-bzr-log-view-mode): Use log-view-expanded-log-entry-function.
  
 -      * button.el (make-text-button): Doc fix.  (See bug#7881)
 +2011-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -2011-01-22  Chong Yidong  <cyd@stupidchicken.com>
 +      * net/imap.el: Remove file.  All the functionality is in nnimap.el.
  
 -      * simple.el (line-move-visual): Doc fix (Bug#7594).
 +      * net/imap-hash.el: Remove file.
  
 -      * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in
 -      "Case sensitive" menu item.
 +2011-02-13  Michael Albinus  <michael.albinus@gmx.de>
  
 -2011-01-21  Roland McGrath  <roland@frob.com>
 +      * Makefile.in (TRAMP_SRC): Remove tramp-imap.el.
  
 -      * comint.el (comint-replace-by-expanded-history-before-point): Fix
 -      expansion of !$ and !!:N syntax to pick the indicated word (bug#7883).
 +      * net/tramp.el (tramp-read-passwd): Simplify `auth-source-search'
 +      call.
  
 -2011-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp-imap.el: Remove file.
  
 -      * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882).
 +2011-02-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -2011-01-21  Jari Aalto  <jari.aalto@cante.net>
 +      * vc/vc.el (vc-print-log-setup-buttons): Instead of using the
 +      widget library for buttons, just use button.el.
  
 -      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
 -      Assume foo(bar) is a manpage reference rather than some unquoted
 -      symbol (bug#7705).
 +      * vc/log-view.el (log-view-mode-map): Don't inherit from
 +      widget-keymap.
  
 -2011-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-02-12  Glenn Morris  <rgm@gnu.org>
  
 -      * subr.el (shell-quote-argument): Properly quote \n (bug#7687).
 -      Suggested by Flo <sensorflo@gmail.com>.
 +      * emacs-lisp/cl-seq.el (union, nunion, intersection)
 +      (nintersection, set-difference, nset-difference)
 +      (set-exclusive-or, nset-exclusive-or): Doc fix.
  
 -2011-01-21  Glenn Morris  <rgm@gnu.org>
 +      * ediff-ptch.el (ediff-fixup-patch-map): Doc fix.
  
 -      * progmodes/compile.el (compilation-error-regexp-alist):
 -      Fix custom type.  (Bug#7812)
 +      * faces.el (face-attr-match-p): Handle the obsolete :bold and
 +      :italic props, so that frame-set-background-mode works.  (Bug#7966)
  
 -2011-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * simple.el (next-error): Doc fix.
  
 -      * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the
 -      keymap expression.  Improve docstring.
 +2011-02-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
 -2011-01-15  Mark Diekhans  <markd@soe.ucsc.edu>
 +      * dired-aux.el (dired-create-files): Adapt destination name to
 +      match the new behavior of copy-directory.
  
 -      * files.el (backup-buffer): Make last-resort backup file in
 -      .emacs.d (Bug#6953).
 +2011-02-12  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * subr.el (locate-user-emacs-file): If .emacs.d does not exist,
 -      make it with permission 700.
 +      * mail/mail-utils.el (mail-dont-reply-to-names): New variable,
 +      from rmail-dont-reply-to-names.  Callers changed.
 +      (mail-dont-reply-to): Rename from mail-dont-reply-to.
 +      (rmail-dont-reply-to): Make it an obsolete alias.
  
 -2011-01-14  Kenichi Handa  <handa@m17n.org>
 +      * mail/rmail.el (rmail-default-dont-reply-to-names): Default to
 +      nil, and make obsolete (Bug#7888).
 +      (rmail-dont-reply-to-names): Alias to mail-dont-reply-to-names.
  
 -      * mail/rmailmm.el (rmail-mime-insert-header):
 -      Set rmail-mime-coding-system to a cons whose car is the last coding
 -      system used to decode the header.
 -      (rmail-mime-find-header-encoding): New function.
 -      (rmail-mime-insert-decoded-text):
 -      Override rmail-mime-coding-system if it is a cons.
 -      (rmail-show-mime): If only a header part was decoded, find the
 -      coding system while ignoring mm-charset-override-alist.
 +      * mail/rmailsum.el (rmail-summary-sort-by-correspondent): Doc fix.
  
 -2011-01-13  Chong Yidong  <cyd@stupidchicken.com>
 +      * mail/rmailsort.el (rmail-sort-by-correspondent)
 +      (rmail-select-correspondent): Doc fix.  Use mail-dont-reply-to.
  
 -      * subr.el (event-start, event-end): Doc fix (Bug#7826).
 +      * mail/rmail.el (rmail-reply): Use mail-dont-reply-to.
  
 -2011-01-12  Kenichi Handa  <handa@m17n.org>
 +2011-02-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
 -      * mail/rmailmm.el (rmail-mime-next-item)
 -      (rmail-mime-previous-item): Delete them.
 -      (rmail-mime-shown-mode): Recursively call for children.
 -      (rmail-mime-hidden-mode): Delete the 2nd arg TOP.
 -      Callers changed.
 -      (rmail-mime-raw-mode): Recursively call for children.
 -      (rmail-mode-map): Change mapping of tab and backtab to
 -      forward-button and backward-button respectively.
 -      (rmail-mime-insert-tagline): Always insert "Hide" or "Show"
 -      button.
 -      (rmail-mime-update-tagline): New function.
 -      (rmail-mime-insert-text): Call rmail-mime-update-tagline if the
 -      body display is changed.
 -      (rmail-mime-toggle-button): Rename from rmail-mime-image.
 -      (rmail-mime-image): Delete this button type.
 -      (rmail-mime-toggle): New button type.
 -      (rmail-mime-insert-bulk): Call rmail-mime-update-tagline if the
 -      body display is changed.  Change the save button label to "Save".
 -      Don't process show/hide button here.
 -      (rmail-mime-insert-multipart): Call rmail-mime-update-tagline if
 -      the body display is changed.  Unconditionally call
 -      rmail-mime-insert for children.
 -      (rmail-mime-handle): Update `display' vector of the just inserted
 -      entity.
 -      (rmail-mime-process): If mail-header-parse-content-type returns
 -      nil, use "text/plain" as the fallback type.
 -      (rmail-mime-insert): For raw-mode, recursively call
 -      rmail-mim-insert for children.
 -      (rmail-mime): Handle the case that the current buffer is not rmail
 -      buffer (e.g. in summary buffer).
 +      * files.el (copy-directory): New argument COPY-CONTENTS for
 +      copying directory contents into another existing directory.
  
 -2011-01-05  Kenichi Handa  <handa@m17n.org>
 +2011-02-12  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * mail/rmailmm.el (rmail-mime-next-item)
 -      (rmail-mime-previous-item): Skip the body of a non-multipart
 -      entity if a tagline is shown.
 +      * minibuffer.el (completion-table-case-fold): New function for
 +      creating a case-insensitive completion table.
  
 -2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-02-12  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721).
 -      (tmm-prompt): Simplify.
 -      (tmm-add-prompt): Remove unused var `win'.
 +      * net/tramp.el (tramp-default-method): Also check if
 +      `auth-source-search' is bound.
 +      (tramp-read-passwd): Use `auth-source-search' instead of
 +      `auto-source-user-or-password'.
  
 -      * whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810)
 -      to minor mode which used nil accidentally to mean "turn off".
 +      * net/tramp-imap.el: Autoload `auto-source-search' instead of
 +      `auto-source-user-or-password.
 +      (tramp-imap-passphrase-callback-function): Use it.
  
 -2011-01-10  Michael Albinus  <michael.albinus@gmx.de>
 +      * net/imap-hash.el: Autoload `auto-source-search' instead of
 +      `auto-source-user-or-password.
 +      (imap-hash-open-connection): Use it.
  
 -      * net/tramp.el (tramp-find-inline-compress)
 -      (tramp-get-inline-coding): Quote command after pipe symbol for
 -      local calls under W32.  (Bug#6784)
 +      * mail/smtpmail.el: Autoload `auto-source-search' instead of
 +      `auto-source-user-or-password.
 +      (smtpmail-try-auth-methods): Use it.
  
 -2011-01-10  Michael Albinus  <michael.albinus@gmx.de>
 +2011-02-12  Phil Hagelberg  <phil@hagelb.org>
  
 -      * net/tramp.el (tramp-default-method): Initialize with pscp/plink
 -      only when running under W32.
 +      * emacs-lisp/package.el: Allow packages to be reinstalled.
 +      (package--write-file-no-coding): Remove EXCL arg.
 +      (package-unpack-single): Don't use it.
  
 -2011-01-09  Eli Zaretskii  <eliz@gnu.org>
 +2011-02-12  Karl Pflästerer  <k@rl.pflaesterer.de>  (tiny change)
  
 -      * progmodes/grep.el (grep-compute-defaults): Quote the program
 -      file name after the pipe symbol in Grep templates.  (Bug#6784)
 -      * jka-compr.el (jka-compr-partial-uncompress): Likewise.
 +      * vc/vc-svn.el: Adapt to Subversion change, with no .svn directory
 +      in each sub directory.
 +      (vc-svn-registered): Use vc-svn-root.
 +      (vc-svn-root): New function.  Make vc-svn-responsible-p an alias.
 +      (vc-svn-repository-hostname): Use "svn info".
  
 -2011-01-08  Lennart Borgman  <lennart.borgman@gmail.com>
 +2011-02-11  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * buff-menu.el (Buffer-menu-buffer-list): New var.
 -      (Buffer-menu-revert-function, list-buffers-noselect): Use it, so a
 -      restricted buffer list is not lost on revert (Bug#7749).
 +      * simple.el (delete-trailing-whitespace): New optional buffer
 +      bound parameters.
  
 -2011-01-08  Eric Hanchrow  <eric.hanchrow@gmail.com>
 +2011-02-11  Bastien Guerry  <bzg@altern.org>
  
 -      * net/ldap.el (ldap-search-internal): Discard stderr output.
 +      * files.el (basic-save-buffer): save unmodified buffers when
 +      the file pointed by buffer-file-name doesn't exist.
  
 -2011-01-07  Eli Zaretskii  <eliz@gnu.org>
 +2011-02-11  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * files.el (directory-abbrev-alist): Doc fix.  (Bug#7777)
 +      * net/rcirc.el (defun-rcirc-join): Accept multiple channels.
  
 -2011-01-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-02-11  Glenn Morris  <rgm@gnu.org>
  
 -      * vc-bzr.el (vc-bzr-annotate-command, vc-bzr-annotate-time):
 -      Author names can have spaces (bug#7792).
 +      * emacs-lisp/cl-specs.el (multiple-value-bind): Fix debug spec.
  
 -2011-01-04  Kenichi Handa  <handa@m17n.org>
 +2011-02-11  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown
 -      part as a plain text.
 -      (rmail-mime-process-multipart): Set the default content-type to
 -      nil for unknown multipart subtypes (bug#7651).
 +      * net/rcirc.el (rcirc-send-ctcp): Remove spurious arg to `format'.
  
 -2011-01-03  Brent Goodrick  <bgoodr@gmail.com>  (tiny change)
 +2011-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * abbrev.el (prepare-abbrev-list-buffer): If listing local abbrev
 -      table, get the value before switching to the output buffer.  (Bug#7733)
 +      * server.el (server-process-filter): Use pcase.
  
 -2011-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/smie.el (smie-blink-matching-open): Don't use `pos' in two
 +      conflicting ways.
 +      (smie-indent--parent): Extend to "parent of arg".
 +      (smie-indent-inside-string): New function.
 +      (smie-indent-functions): Use it.
  
 -      * progmodes/python.el (python-mode): Don't impose font-lock (bug#3628).
 +      * vc/vc-dir.el (vc-dir-refresh): Reorder operations to try and avoid
 +      bzr locking race condition.
  
 -2011-01-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/edebug.el (edebug-instrument-function): Check a marker is
 +      still valid before using it.
  
 -      * files.el (file-local-variables-alist):
 -      Make permanent-local (bug#7767).
 +      * progmodes/grep.el (grep-mode-font-lock-keywords): Adjust to
 +      `message' -> `compilation-message' rename (bug#8004).
  
 -2011-01-02  Glenn Morris  <rgm@gnu.org>
 +      Move keymap initialization into declaration.
 +      * textmodes/enriched.el (enriched-mode-map):
 +      * textmodes/bib-mode.el (bib-mode-map):
 +      * term/lk201.el (lk201-function-map):
 +      * tar-mode.el (tar-mode-map):
 +      * replace.el (occur-mode-map):
 +      * progmodes/idlwave.el (idlwave-rinfo-mouse-map, idlwave-rinfo-map):
 +      * progmodes/idlw-help.el (idlwave-help-mode-map):
 +      * progmodes/gdb-mi.el (gdb-memory-format-menu, gdb-memory-unit-menu):
 +      * play/solitaire.el (solitaire-mode-map):
 +      * play/snake.el (snake-mode-map, snake-null-map):
 +      * play/pong.el (pong-mode-map):
 +      * play/handwrite.el (menu-bar-handwrite-map):
 +      * play/gametree.el (gametree-mode-map):
 +      * net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map
 +      (rcirc-multiline-minor-mode-map, rcirc-track-minor-mode-map):
 +      * net/newst-plainview.el (newsticker-menu, newsticker-mode-map)
 +      (newsticker--url-keymap):
 +      * net/net-utils.el (nslookup-mode-map, ftp-mode-map):
 +      * menu-bar.el (menu-bar-file-menu, menu-bar-i-search-menu)
 +      (menu-bar-search-menu, menu-bar-replace-menu, menu-bar-goto-menu)
 +      (menu-bar-edit-menu, menu-bar-custom-menu)
 +      (menu-bar-showhide-fringe-ind-menu, menu-bar-showhide-fringe-menu)
 +      (menu-bar-showhide-scroll-bar-menu, menu-bar-showhide-menu)
 +      (menu-bar-line-wrapping-menu, menu-bar-options-menu)
 +      (menu-bar-games-menu, menu-bar-encryption-decryption-menu)
 +      (menu-bar-tools-menu, menu-bar-describe-menu)
 +      (menu-bar-search-documentation-menu, menu-bar-manuals-menu)
 +      (menu-bar-help-menu):
 +      * mail/rmailsum.el (rmail-summary-mode-map):
 +      * kmacro.el (kmacro-step-edit-map):
 +      * ibuffer.el (ibuffer-mode-groups-popup, ibuffer-mode-map)
 +      (ibuffer-mode-operate-map):
 +      * hi-lock.el (hi-lock-menu, hi-lock-map):
 +      * emulation/vip.el (vip-mode-map):
 +      * emacs-lisp/re-builder.el (reb-lisp-mode-map):
 +      * bookmark.el (bookmark-bmenu-mode-map):
 +      * help-mode.el (help-mode-map): Move initialization into declaration.
  
 -      * version.el (emacs-copyright): Set short copyright year to 2011.
 +2011-02-10  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -2011-01-02  Mark Lillibridge  <mark.lillibridge@hp.com>  (tiny change)
 +      * net/rcirc.el: Add PRIVMSG and CTCP functions.
 +      (rcirc-send-privmsg, rcirc-send-ctcp): New functions.
 +      (rcirc-keepalive, rcirc-cmd-ctcp, rcirc-ctcp-sender-PING)
 +      (rcirc-cmd-me, rcirc-authenticate): Use them.
  
 -      * mail/mail-utils.el (mail-strip-quoted-names): Avoid clobbering
 -      an existing temp buffer.  (Bug#7746)
 +2011-02-10  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -2011-01-02  Glenn Morris  <rgm@gnu.org>
 +      * allout.el: Synopsis: Change allout user configuration so
 +      auto-activation is controlled solely by customization
 +      `allout-auto-activation'.
  
 -      * mail/mail-utils.el (mail-mbox-from): Handle From: headers with
 -      multiple addresses.  (Bug#7760)
 +      (allout-auto-activation-helper) (allout-setup): New autoloads
 +      implement new custom set procedure for allout-auto-activation.
 +      Also, explicitly invoke
 +      (allout-setup) after allout-auto-activation is custom-defined, to
 +      effect the settings in emacs sessions besides the few where
 +      allout-auto-activation customization is donea.
 +      (allout-auto-activation): Use allout-auto-activation-helper to
 +      :set.  Revise the docstring.
 +      (allout-init): Reduce functionality to just customizing
 +      allout-auto-activation, and mark obsolete.
 +      (allout-mode): Respect string values for allout-auto-activation.
 +      Run allout-after-copy-or-kill-hook without any args.
 +      (allout-mode) (allout-layout) (allout-default-layout)
 +      (outlineify-sticky): Adjust docstring for new scheme.
 +      (allout-after-copy-or-kill-hook): No arguments - hook implementers
 +      should concentrate on the kill ring.
  
 -2010-12-31  Michael Albinus  <michael.albinus@gmx.de>
 +2011-02-09  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * net/tramp.el (tramp-methods): Add recursive options to "scpc",
 -      "scpx", "pscp" and "psftp".
 +      * password-cache.el (password-cache-remove): Accept secrets that are
 +      not strings.
  
 -2010-12-31  Eli Zaretskii  <eliz@gnu.org>
 +2011-02-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * term/w32-win.el (image-library-alist): Set up correctly for
 -      libpng versions both before and after 1.4.0.  (Bug#7716)
 +      * progmodes/sh-script.el (sh-font-lock-open-heredoc): Fix case
 +      of here-doc that immediately follows a comment.
  
 -2010-12-25  Eli Zaretskii  <eliz@gnu.org>
 +2011-02-09  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * time.el (display-time-mode): Mention display-time-interval in
 -      the doc string.  (Bug#7713)
 +      * net/rcirc.el (rcirc-ctcp-sender-PING): Simplifying.
  
 -      * simple.el (select-active-regions): Doc fix.  (Bug#7702)
 +      * net/rcirc.el (rcirc-cmd-ctcp): Use dedicated function when
 +      available.
 +      (rcirc-ctcp-sender-PING): New function.
  
 -2010-12-24  Kenichi Handa  <handa@m17n.org>
 +2011-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * mail/rmailmm.el (rmail-mime-parse): Perform parsing in
 -      condition-case and return an error message string if something
 -      goes wrong.
 -      (rmail-show-mime): Adjust for the above change.  Insert the
 -      header by rmail-mime-insert-header.
 +      * obsolete/pc-select.el: Rename from emulation/pc-select.el (bug#7940).
 +      Remove the mark/nomark handling, and activate shift-select-mode instead.
  
 -2010-12-24  Kenichi Handa  <handa@m17n.org>
 +      * obsolete/pc-mode.el: Rename from emulation/pc-mode.el.
  
 -      * mail/rmailmm.el: New key bindings for rmail-mime-next-item,
 -      rmail-mime-previous-item, and rmail-mime-toggle-hidden.
 -      (rmail-mime-mbox-buffer)
 -      (rmail-mime-view-buffer, rmail-mime-coding-system): New variables.
 -      (rmail-mime-entity): Argument changed.  All codes handling an
 -      entity object are changed.
 -      (rmail-mime-entity-header, rmail-mime-entity-body): Adjust for
 -      the above change.
 -      (rmail-mime-entity-children, rmail-mime-entity-handler)
 -      (rmail-mime-entity-tagline): New functions.
 -      (rmail-mime-message-p): New function.
 -      (rmail-mime-save): Bind rmail-mime-mbox-buffer.
 -      (rmail-mime-entity-segment, rmail-mime-next-item)
 -      (rmail-mime-previous-item, rmail-mime-shown-mode)
 -      (rmail-mime-hidden-mode, rmail-mime-raw-mode)
 -      (rmail-mime-toggle-raw, rmail-mime-toggle-hidden)
 -      (rmail-mime-insert-tagline, rmail-mime-insert-header):
 -      New functions.
 -      (rmail-mime-text-handler): Call rmail-mime-insert-text.
 -      (rmail-mime-insert-decoded-text): New function.
 -      (rmail-mime-insert-text): Call rmail-mime-insert-decoded-text.
 -      (rmail-mime-insert-image): Argument changed.  Caller changed.
 -      (rmail-mime-image): Call rmail-mime-toggle-hidden.
 -      (rmail-mime-set-bulk-data): New function.
 -      (rmail-mime-insert-bulk): Argument changed.
 -      (rmail-mime-multipart-handler): Return t.
 -      (rmail-mime-process-multipart): Argument changed.
 -      Handle "multipart/alternative" here.
 -      (rmail-mime-process): Argument changed.
 -      (rmail-mime-parse): Bind rmail-mime-mbox-buffer.
 -      (rmail-mime-insert): Argument changed.  Handle raw display mode.
 -      (rmail-mime): Argument changed.  Handle toggling of raw display
 -      mode.
 -      (rmail-show-mime): Bind rmail-mime-mbox-buffer and
 -      rmail-mime-view-buffer.
 -      (rmail-insert-mime-forwarded-message): Likewise.
 -      (rmail-search-mime-message): Likewise.  Don't bind rmail-buffer.
 +2011-02-07  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -      * mail/rmail.el (rmail-show-message-1): If rmail-enable-mime is
 -      non-nil, handle the header in rmail-show-mime-function.
 +      * calc/calc-units.el (math-logunits-quant): Add support for
 +      non-logarithmic units.
  
 -2010-12-20  Leo  <sdl.web@gmail.com>
 +2011-02-07  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -      * help-fns.el (describe-variable): Fix 2010-12-17 change.
 +      * allout.el (allout-after-copy-or-kill-hook): New hook for
 +      extension-specific processing of killed text.
 +      (allout-mode): Include new allout-after-copy-or-kill-hook among
 +      mentioned hooks.
 +      (allout-kill-line) (allout-kill-topic): Ensure that processing
 +      after kill happens even if barf-if-buffer-read-only is raised.
 +      Include new allout-after-copy-or-kill-hook among that subsequent
 +      processing.
 +      (allout-deannotate-hidden): Actually remove the annotation text
 +      properties.
  
 -2010-12-20  Juri Linkov  <juri@jurta.org>
 +      * allout.el (allout-listify-exposed): Copy text sans text properties.
  
 -      * isearch.el (isearch-lazy-highlight-error): New variable.
 -      (isearch-lazy-highlight-new-loop): Compare `isearch-error' and
 -      `isearch-lazy-highlight-error'.  Set `isearch-lazy-highlight-error'
 -      to the current value of `isearch-error' (Bug#7468).
 +2011-02-07  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-12-17  Chong Yidong  <cyd@stupidchicken.com>
 +      * net/dbus.el (dbus-list-activatable-names): Add optional argument BUS.
  
 -      * help-fns.el (describe-variable): Don't emit trailing whitespace
 -      (Bug#7511).
 +2011-02-07  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -2010-12-17  Leo  <sdl.web@gmail.com>
 +      * net/rcirc.el (rcirc-handler-317): New function (Bug#6507).
  
 -      * eshell/em-hist.el (eshell-previous-matching-input): Signal error
 -      if point is not behind eshell-last-output-end (Bug#7585).
 +2011-02-06  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-12-16  Chong Yidong  <cyd@stupidchicken.com>
 +      * calc/calc.el (calc-logunits-field-reference): Rename from
 +      `calc-default-field-reference-level'.
 +      (calc-logunits-power-reference): Rename from
 +      `calc-default-power-reference-level'
  
 -      * textmodes/rst.el (rst-compile-pdf-preview)
 -      (rst-compile-slides-preview): Use make-temp-file (Bug#7646).
 +      * calc/calc-units.el (math-logunits-quant): Rename from
 +      `math-logunits-level'
 +      (math-logunits-plus): Rename from math-logcombine.
 +      (calcFunc-luplus, calcFunc-luminus calc-luplus, calc-luminus): Remove.
 +      (calcFunc-lufieldadd, calcFunc-lupoweradd, calcFunc-lufieldsub)
 +      (calcFunc-lufieldsub,calc-logunits-add calc-logunits-sub):
 +      New functions.
 +      (calcFunc-fieldquant): Rename from `calcFunc-fieldlevel'.
 +      (calcFunc-powerquant): Rename from `calcFunc-powerlevel'.
 +      (calc-logunits-quantity): Rename from `calc-level'.
 +      (calcFunc-dbfieldlevel, calcFunc-dbpowerlevel, calcFunc-npfieldlevel)
 +      (calcFunc-nppowerlevel,calc-logunits-dblevel, calc-logunits-nplevel)
 +      (math-logunits-mul, calcFunc-lufieldmul, calcFunc-lupowermul)
 +      (calc-logunits-mul, math-logunits-divide, calcFunc-lufielddiv)
 +      (calcFunc-lupowerdiv,calc-logunits-divide,math-logunits-level):
 +      New functions.
  
 -2010-12-15  Kevin Gallagher  <Kevin.Gallagher@boeing.com>
 +      * calc/calc-help.el (calc-u-prefix-help): Remove "L" reference.
 +      (calc-ul-prefix-help): Remove.
 +      (calc-l-prefix-help): New function.
 +      (calc-full-help): Add reference to `calc-l-prefix-help'.
  
 -      * emulation/edt-mapper.el: Override mapping of function keys so
 -      that the later call to read-key-sequence works.
 +      * calc/calc-ext.el (calc-init-extensions): Update autoloads.
  
 -2010-12-13  Eli Zaretskii  <eliz@gnu.org>
 +      * calc/README: Mention logarithmic units.
  
 -      * mail/smtpmail.el (smtpmail-send-it): Write queued mail body with
 -      Unix EOLs.  (Bug#7589)
 +2011-02-06  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-12-12  Eli Zaretskii  <eliz@gnu.org>
 +      * mail/emacsbug.el (report-emacs-bug-hook): Remove the check for
 +      non-ASCII characters (Bug#7925).
  
 -      * subr.el (posn-col-row): Evaluate header-line-format in the
 -      context of the POSITION window's buffer.
 +2011-02-05  Glenn Morris  <rgm@gnu.org>
  
 -2010-12-11  Glenn Morris  <rgm@gnu.org>
 +      * emacs-lisp/cl-macs.el (return-from): Fix doc typo.
  
 -      * subr.el (member-ignore-case, run-mode-hooks, insert-for-yank-1)
 -      (with-silent-modifications): Doc fixes.
 +      * calendar/diary-lib.el (diary-font-lock-keywords):
 +      Tweak diary-time-regexp match.  (Bug#7891)
  
 -2010-12-10  Michael Albinus  <michael.albinus@gmx.de>
 +      * progmodes/f90.el (f90-find-tag-default): New function.  (Bug#7919)
 +      (f90-mode): Use it for mode's `find-tag-default-function' property.
  
 -      * net/tramp.el (tramp-action-password, tramp-process-actions):
 -      Revert patch from 2010-12-08.  Use `save-restriction'.
 +      * ibuf-ext.el (ibuffer-filter-disable): Make it work.  (Bug#7969)
  
 -2010-12-09  Eli Zaretskii  <eliz@gnu.org>
 +      * faces.el (set-face-attribute): Doc fix.  (Bug#2659)
  
 -      * menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p):
 -      New functions.
 -      (menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>: Use
 -      them instead of `nil' and `>', respectively.  (Bug#1077)
 +2011-02-05  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -2010-12-09  Stephen Berman  <stephen.berman@gmx.net>
 +      * net/rcirc.el (rcirc-handler-JOIN): Reset mode-line-process
 +      (Bug#6386).
  
 -      * calendar/diary-lib.el (diary-list-sexp-entries):
 -      Handle case of no newline at end of file.  (Bug#7536)
 +2011-02-05  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-12-09  Glenn Morris  <rgm@gnu.org>
 +      * progmodes/sh-script.el (sh-here-doc-open-re): Don't rely on the
 +      font-lock-syntax-table remappings.
 +      (sh-here-doc-markers, sh-here-doc-re): Remove.
 +      (sh-font-lock-close-heredoc): Remove.
 +      (sh-syntax-propertize-here-doc): New function.
 +      (sh-font-lock-open-heredoc): Set the sh-here-doc-marker property
 +      instead of the sh-here-doc-re.
 +      (sh-font-lock-paren): Don't do anything in comments or strings.
 +      Handle line continuations.  Accept a few more chars.
 +      Don't rely on the font-lock-syntax-table remappings.
 +      `esac' is not a valid pattern.
 +      (sh-syntax-propertize-function): Handle here-docs differently, so we
 +      don't bother syntax-propertizing the insides.
  
 -      * mail/smtpmail.el (smtpmail-send-it): Revert previous change.
 +      * progmodes/sh-script.el (sh-font-lock-paren, sh-kw, sh-prev-thing):
 +      Handle new bashisms ";&" and ";;&" (bug#7947).
  
 -2010-12-08  Michael Albinus  <michael.albinus@gmx.de>
 +2011-02-05  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * net/tramp.el (tramp-handle-start-file-process):
 -      Protect buffer-modified value.  (Bug#7557)
 -      (tramp-action-password): Delete region, do not narrow.
 -      (tramp-process-actions): Do not widen.
 +      * net/tramp-smb.el (tramp-smb-errors): Use `regexp-opt'.
 +      Add "NT_STATUS_IO_TIMEOUT" and "NT_STATUS_NO_SUCH_USER".
  
 -2010-12-08   Jan Moringen  <jmoringe@techfak.uni-bielefeld.de>
 +2011-02-05  Era Eriksson  <era+tramp@iki.fi>  (tiny change)
  
 -      * log-edit.el (log-edit-changelog-entries):
 -      Regexp quote filename.  (Bug#7505)
 +      * net/tramp.el (tramp-postfix-method-format)
 +      (tramp-postfix-method-regexp, tramp-prefix-domain-format)
 +      (tramp-prefix-domain-regexp, tramp-postfix-user-format)
 +      (tramp-postfix-user-regexp, tramp-prefix-port-format)
 +      (tramp-prefix-port-regexp, tramp-postfix-host-format)
 +      (tramp-postfix-host-regexp, tramp-handle-substitute-in-file-name):
 +      Doc fix.
  
 -2010-12-08  Tom Breton  <tehom@panix.com>
 +2011-02-04  Sam Steingold  <sds@gnu.org>
  
 -      * cus-edit.el (custom-save-all):
 -      Bind print-length and print-level to nil.  (Bug#7581)
 +      * mouse.el (mouse-buffer-menu-mode-groups): Add a "GDB" group.
  
 -2010-12-08  Glenn Morris  <rgm@gnu.org>
 +2011-02-04  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      * mouse.el (mouse-menu-major-mode-map, mouse-menu-bar-map):
 -      Run hooks to update menu contents.  (Bug#7586)
 +      * international/mule-util.el (with-coding-priority): Doc fix.
  
 -      * mail/smtpmail.el (smtpmail-send-it): Avoid colons in the queued
 -      file names, for the sake of MS Windows.  (Bug#7588)
 +2011-02-04  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * arc-mode.el (archive-mode-map): Fix a typo in last change.
  
 -      * diff-mode.el (diff-refine-hunk): Make it work when the hunk contains
 -      empty lines without a leading space.
 +2011-02-03  Sam Steingold  <sds@gnu.org>
  
 -2010-12-06  Leo  <sdl.web@gmail.com>
 +      * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom):
 +      Do not error out when `func' is nil.
  
 -      * dired-aux.el (dired-do-redisplay): Postpone dired-after-readin-hook
 -      while mapping over marks (Bug#6810).
 +2011-02-03  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-12-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * net/tramp-sh.el (tramp-remote-path): Add default settings for
 +      `tramp-default-remote-path' to the docstring.
 +      (tramp-get-remote-path): Suppress error message when `getconf
 +      PATH' fails.
  
 -      * image-dired.el (image-dired-db-file)
 -      (image-dired-temp-image-file, image-dired-gallery-dir)
 -      (image-dired-temp-rotate-image-file): Set default values relative
 -      to image-dired-dir (Bug#7518).
 +      * net/tramp-smb.el (tramp-smb-errors): Add "NT_STATUS_UNSUCCESSFUL".
  
 -2010-12-06  Lawrence Mitchell  <wence@gmx.li>
 +2011-02-03  Glenn Morris  <rgm@gnu.org>
  
 -      * format.el (format-decode-run-method): Pass args FROM and TO, not
 -      point-min and point-max, to shell-command-on-region (Bug#7488).
 +      * vc/vc-hg.el (vc-hg-command): Doc fix.
 +
 +      * term/w32-win.el (libpng-version): Declare for compiler.
 +
 +      * msb.el: No need to load dired while compiling.
 +
 +      * emacs-lisp/elint.el (elint-standard-variables):
 +      Remove a couple of built-ins that now have doc-strings.
 +
 +      * hi-lock.el, ps-bdf.el, ps-mule.el, ps-print.el, ps-samp.el:
 +      `require' is automatically `eval-and-compile'd.
 +
 +      * net/rcirc.el (rcirc-nick-completion-format): Add :version tag.
 +      (rcirc-log-directory, rcirc-log-flag): Move definitions before use.
 +
 +      * strokes.el (strokes-fill-current-buffer-with-whitespace):
 +      Move definition before use.
 +      (strokes-report-bug): Make it obsolete.
 +
 +2011-02-02  Sam Steingold  <sds@gnu.org>
 +
 +      * apropos.el (apropos-print): Now that `apropos-mode' inherits
 +      from `special-mode', entering it makes the buffer read-only, so
 +      call it only when everything has been already inserted.
 +      * emacs-lisp/ert.el (ert--setup-results-buffer)
 +      (ert-results-pop-to-backtrace-for-test-at-point)
 +      (ert-results-pop-to-messages-for-test-at-point)
 +      (ert-results-pop-to-timings): Ditto.
 +      * emacs-lisp/package.el (package--list-packages): Ditto.
 +      * play/solitaire.el (solitaire): Ditto.
 +
 +2011-02-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el: Make all faces inherit.
 +      (compilation-warning): Inherit from font-lock-variable-name-face.
 +      (compilation-info): Inherit from font-lock-type-face.
 +      (compilation-line-number): Reassign to font-lock-keyword-face.
 +      (compilation-column-number): Reassign to font-lock-doc-face.
 +      (compilation-leave-directory-face): Reassign to
 +      font-lock-builtin-face.
 +
 +2011-02-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dired.el (dired-insert-directory): Don't invoke `ls' when
 +      ls-lisp.el is used to emulate it.
 +
 +2011-02-01  Julien Danjou  <julien@danjou.info>
 +
 +      * color.el (color-gradient): Add a color-gradient function.
 +
 +2011-02-01  Sam Steingold  <sds@gnu.org>
 +
 +      * simple.el (special-mode-map): Bind "h" to `describe-mode';
 +      bind "z" to `kill-this-buffer'.
 +      (completion-list-mode-map): Bind "z" to `kill-this-buffer'.
 +      * apropos.el (apropos-mode-map): Inherit from `special-mode-map'.
 +      (apropos-mode): Inherit from `special-mode'.
 +      * arc-mode.el (archive-mode-map): Inherit from `special-mode-map'.
 +      * bookmark.el (bookmark-bmenu-mode): Define using
 +      `define-derived-mode' inheriting from `special-mode'.
 +      * dired.el (dired-mode-map): Inherit from `special-mode-map'.
 +      * image-mode.el (image-mode-map): Ditto.
 +      * replace.el (occur-mode): Define using
 +      `define-derived-mode' inheriting from `special-mode'.
 +      * tar-mode.el (tar-mode): Inherit from `special-mode'.
 +      * calendar/diary-lib.el (diary-fancy-display-mode):
 +      Inherit from `special-mode-map'.
 +      * emacs-lisp/ert.el (ert-simple-view-mode, ert-results-mode):
 +      Inherit from `special-mode'.
 +      * emacs-lisp/package.el (package-menu-mode-map): Copy from
 +      `special-mode-map'.
 +      (package-menu-mode): Define using `define-derived-mode'
 +      inheriting from `special-mode'.
 +      * erc/erc-list.el (erc-list-menu-mode): Inherit from `special-mode'.
 +      * net/xesam.el (xesam-mode): Inherit from `special-mode'.
 +      (xesam-mode-map): Define separately.
 +      * play/solitaire.el (solitaire-mode): Inherit from `special-mode'.
 +      * progmodes/compile.el (compilation-minor-mode-map)
 +      (compilation-mode-map): Inherit from `special-mode-map'.
 +      * vc/diff-mode.el (diff-mode-shared-map):
 +      Inherit from `special-mode-map'.
 +      * vc/log-view.el (log-view-mode-map): Add a comment.
 +
 +2011-02-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.el (load-theme): Define return value.  Drop use of
 +      unsafep; call custom-theme-load-confirm for non-known-safe themes.
 +      (custom-theme-load-confirm): Scroll in the correct window.
 +      (custom-enabled-themes): Add custom-safe-themes to :set-after.
 +
 +      * cus-theme.el (custom-theme-checkbox-toggle): Don't activate the
 +      checkbox if load-theme fails.
 +
 +2011-02-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation-next-error): Check there's
 +      a message before using it (bug#7941).
 +
 +2011-02-01  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-mtx.el (math-lud-pivot-check): New function.
 +      (math-do-matrix-lud): Use `math-lud-pivot-check' to check the size
 +      of potential pivots.
  
 -2010-12-06  Jan Djärv  <jan.h.d@swipnet.se>
 +2011-01-31  Alan Mackenzie  <acm@muc.de>
  
 -      * frame.el (blink-cursor-mode): Make default t for ns.
 +      * progmodes/cc-cmds.el (c-forward-over-illiterals):
 +      Continue parsing if we encounter a naked # (Bug#7595).
 +      (c-beginning-of-statement): Avoid loop in locating the beginning
 +      of a macro.
  
 -2010-12-05  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501).
 +      * files.el (copy-directory): Fix arguments to recursive call.
  
 -2010-12-05  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * comint.el (comint-dynamic-list-input-ring)
 -      (comint-dynamic-complete-filename)
 -      (comint-replace-by-expanded-filename)
 -      (comint-dynamic-simple-complete)
 -      (comint-dynamic-list-filename-completions)
 -      (comint-dynamic-list-completions): Doc fix (Bug#7499).
 +      * files.el (copy-directory): If destination is an existing
 +      directory, copy into a subdirectory there.
  
 -      * subr.el (posn-x-y, posn-object-x-y, posn-object-width-height):
 -      Doc fix (Bug#7471).
 +2011-01-31  Andreas Schwab  <schwab@linux-m68k.org>
  
 -2010-12-04  Martin Rudalics  <rudalics@gmx.at>
 +      * emacs-lisp/shadow.el (load-path-shadows-find): Ignore leim-list
 +      files.
  
 -      * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil
 -      (Bug#7533).
 +2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-12-04  W. Martin Borgert <debacle@debian.org>  (tiny change)
 +      * image-dired.el (image-dired-mouse-display-image): No-op if no
 +      file is found (Bug#7817).
  
 -      * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode.
 -      (Bug#7491).
 +      * mouse.el (mouse-menu-non-singleton): Doc fix (Bug#7801).
  
 -2010-12-04  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-31  Kenichi Handa  <handa@m17n.org>
  
 -      * simple.el (transient-mark-mode): Doc fix (Bug#7465).
 +      * international/quail.el (quail-keyboard-layout-alist):
 +      Remove superfluous SPC for "pc105-uk" (bug#7927).
  
 -2010-12-04  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-31  Glenn Morris  <rgm@gnu.org>
  
 -      * files.el (file-relative-name): Handle UNC file names on
 -      DOS/Windows.  (Bug#4674)
 +      * msb.el (msb-menu-bar-update-buffers): Update for changed
 +      argument handling of menu-bar-select-frame.  (Bug#7902)
  
 -2010-12-03  Daiki Ueno  <ueno@unixuser.org>
 +2011-01-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with
 -      "RIPEMD160" (Bug#7490).  Reported by Daniel Kahn Gillmor.
 -      (epg-context-set-passphrase-callback): Mention that the callback
 -      is not called when used with GnuPG 2.x.
 +      * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit
 +      to the recursion depth (Bug#7722).
  
 -2010-12-02  Glenn Morris  <rgm@gnu.org>
 +2011-01-31  Roy Liu  <carsomyr@gmail.com>  (tiny change)
  
 -      * ps-print.el (ps-line-lengths-internal, ps-nb-pages):
 -      Ensure ps-footer-font-size-internal is initialized.
 -      Call ps-get-page-dimensions before trying to use ps-font-for-text.
 +      * term/ns-win.el (ns-find-file): Expand ns-input-file with
 +      command-line-default-directory (Bug#7872).
  
 -2010-12-01  Kenichi Handa  <handa@m17n.org>
 +2011-01-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * mail/rmailmm.el (rmail-mime-parse): Call rmail-mime-process
 -      within condition-case.
 -      (rmail-show-mime): Don't use condition-case.
 -      (rmail-search-mime-message): New function.
 -      (rmail-search-mime-message-function): Set to
 -      rmail-search-mime-message.
 +      * progmodes/compile.el (compilation--flush-directory-cache):
 +      New function, extracted from compilation--remove-properties.
 +      (compilation--remove-properties, compilation--parse-region): Use it.
 +      (compilation--previous-directory): Handle one more case.
 +      (compilation-enable-debug-messages): Remove.
 +      (compilation-parse-errors, compilation--flush-parse): Just remove the
 +      left over debug messages.
  
 -2010-12-01  Leo  <sdl.web@gmail.com>
 +2011-01-31  Sam Steingold  <sds@gnu.org>
  
 -      * ido.el (ido-common-initialization): New function.  (bug#3274)
 -      (ido-mode): Use it.
 -      (ido-completing-read): Call it.
 +      * progmodes/compile.el (compilation-enable-debug-messages):
 +      Add a variable to make the parsing messages introduced in
 +      2011-01-28T22:12:05Z!monnier@iro.umontreal.ca optional.
 +      (compilation-parse-errors, compilation--flush-parse): Use it.
  
 -2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * log-edit.el (log-edit-font-lock-keywords): Don't try matching
 -      stand-alone lines, since that is handled by log-edit-match-to-eoh
 -      (Bug#6465).
 +      * net/rcirc.el: New customizable nick completion format.  (Bug#6314)
 +      (rcirc-nick-completion-format): New defcustom.
 +      (rcirc-complete): Use it.
  
 -2010-11-27  Eduard Wiebe  <usenet@pusto.de>
 +2011-01-31  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * dired.el (dired-get-filename): Replace backslashes with slashes
 -      in file names on MS-Windows, needed by `locate'.  (Bug#7308)
 -      * locate.el (locate-default-make-command-line): Don't consider
 -      drive letter and root directory part of
 -      `directory-listing-before-filename-regexp'.  (Bug#7308)
 -      (locate-post-command-hook, locate-post-command-hook): New defcustoms.
 +      * net/rcirc.el: Clean log filenames (Bug#7933).
 +      (rcirc-log-write): Use convert-standard-filename.
 +      (rcirc-log-filename-function): Documentation updates.
  
 -2010-11-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-30  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * emacs-lisp/smie.el (smie-prec2->grammar): Simplify handling
 -      of :smie-open/close-alist.
 -      (smie-next-sexp): Make it accept a "start token" as argument.
 -      (smie-indent-keyword): Be careful not to misidentify tokens that span
 -      more than one line, as empty lines.  Add argument `token'.
 +      * mail/emacsbug.el (report-emacs-bug-insert-to-mailer):
 +      Check report-emacs-bug-can-use-osx-open and use that if t.
 +      (report-emacs-bug-can-use-osx-open): New function.
 +      (report-emacs-bug): Rename can-xdg-email to can-insert-mail.
 +      Check report-emacs-bug-can-use-osx-open also for can-insert-mail.
  
 -2010-11-26  Kenichi Handa  <handa@m17n.org>
 +2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * mail/rmailmm.el (rmail-mime-insert-multipart): For unsupported
 -      multipart subtypes, insert all as usual.
 +      * vc/vc-dispatcher.el (vc-set-async-update): New function for
 +      updating Dired or VC-dir buffers after async command completes.
  
 -      * mail/rmail.el: Require rfc2047.
 +      * vc/vc-bzr.el (vc-bzr-async-command): Return the process buffer.
 +      (vc-bzr-pull, vc-bzr-merge-branch): Use vc-set-async-update.
  
 -2010-11-26  Kenichi Handa  <handa@m17n.org>
 +      * vc/vc-git.el (vc-git-merge-branch): Add FETCH_HEAD to branch
 +      completions if it exists.  Use vc-set-async-update.
 +      (vc-git-pull): Use vc-set-async-update.
  
 -      * mail/rmailmm.el (rmail-mime-entity, rmail-mime-entity-type)
 -      (rmail-mime-entity-disposition)
 -      (rmail-mime-entity-transfer-encoding, rmail-mime-entity-header)
 -      (rmail-mime-entity-body, rmail-mime-entity-children): New functions.
 -      (rmail-mime-save): Handle the case that the button's `data' is a
 -      MIME entity.
 -      (rmail-mime-insert-text): New function.
 -      (rmail-mime-insert-image): Handle the case that DATA is a MIME entity.
 -      (rmail-mime-bulk-handler): Just call rmail-mime-insert-bulk.
 -      (rmail-mime-insert-bulk): New function mostly copied from the old
 -      rmail-mime-bulk-handler.
 -      (rmail-mime-multipart-handler): Just call rmail-mime-process-multipart.
 -      (rmail-mime-process-multipart): New function mostly copied from
 -      the old rmail-mime-multipart-handler.
 -      (rmail-mime-show): Just call rmail-mime-process.
 -      (rmail-mime-process): New function mostly copied from the old
 -      rmail-mime-show.
 -      (rmail-mime-insert-multipart, rmail-mime-parse)
 -      (rmail-mime-insert, rmail-show-mime)
 -      (rmail-insert-mime-forwarded-message)
 -      (rmail-insert-mime-resent-message): New functions.
 -      (rmail-insert-mime-forwarded-message-function): Set to
 -      rmail-insert-mime-forwarded-message.
 -      (rmail-insert-mime-resent-message-function): Set to
 -      rmail-insert-mime-resent-message.
 +      * vc/vc-hg.el (vc-hg-pull): Fix default-contents arg to
 +      read-shell-command.  Use vc-set-async-update.
 +      (vc-hg-merge-branch): Use vc-set-async-update.
  
 -      * mail/rmailsum.el: Require rfc2047.
 -      (rmail-header-summary): Handle multiline Subject: field.
 -      (rmail-summary-line-decoder): Change the default to
 -      rfc2047-decode-string.
 +2011-01-29  Daiki Ueno  <ueno@unixuser.org>
  
 -      * mail/rmail.el (rmail-enable-mime): Change the default to t.
 -      (rmail-mime-feature): Change the default to `rmailmm'.
 -      (rmail-quit): Delete the specifal code for rmail-enable-mime.
 -      (rmail-display-labels): Likewise.
 -      (rmail-show-message-1): Check rmail-enable-mime, and use
 -      rmail-show-mime-function for a MIME message.  Decode the headers
 -      according to RFC2047.
 +      * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED):
 +      Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status
 +      (Bug#7931).
  
 -2010-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-29  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * progmodes/which-func.el (which-func-imenu-joiner-function):
 -      Return a string, as expected.
 -      (which-function-mode): Make sure we stop any previous timer before
 -      starting a new one.
 +      * progmodes/compile.el: Avoid an N² behavior in grep.
 +      (compilation--previous-directory): New fun.
 +      (compilation--previous-directory-cache): New var.
 +      (compilation--remove-properties): Flush it.
 +      (compilation-directory-properties, compilation-error-properties):
 +      Use the new fun to speed up looking for the current directory.
  
 -2010-11-23  Michael Albinus  <michael.albinus@gmx.de>
 +2011-01-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * net/tramp.el (tramp-default-method-alist)
 -      (tramp-default-user-alist, tramp-default-proxies-alist):
 -      Adapt custom options type.  (Bug#7445)
 +      * vc/vc-hg.el (vc-hg-history): New var.
 +      (vc-hg-pull): Perform default pull if called via Lisp by vc-pull.
 +      (vc-hg-merge-branch): New function.
  
 -2010-11-21  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc/vc.el (vc-pull): Make vc-update an alias for this, instead of
 +      the other way around.
  
 -      * progmodes/python.el: Add Ipython support (Bug#5390).
 -      (python-shell-prompt-alist)
 -      (python-shell-continuation-prompt-alist): New options.
 -      (python--set-prompt-regexp): New function.
 -      (inferior-python-mode, run-python, python-shell):
 -      Require ansi-color.  Use python--set-prompt-regexp to set the comint
 -      prompt based on the Python interpreter.
 -      (python--prompt-regexp): New var.
 -      (python-check-comint-prompt)
 -      (python-comint-output-filter-function): Use it.
 -      (run-python): Use a pipe (Bug#5694).
 +      * vc/vc-git.el (vc-git-branches, vc-git-pull)
 +      (vc-git-merge-branch): New functions.
 +      (vc-git-history): New var.
  
 -2010-11-21  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * progmodes/python.el (run-python): Doc fix.
 -      (python-keep-current-directory-in-path): New var (Bug#7454).
 +      * vc/vc-dispatcher.el (vc-do-async-command): New function.
  
 -2010-11-20  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc/vc-bzr.el (vc-bzr-async-command): Convert into a wrapper for
 +      vc-do-async-command.
  
 -      * lpr.el (lpr-buffer, print-buffer, lpr-region, print-region):
 -      Prompt user before actually printing.
 +      * vc/vc-bzr.el (vc-bzr-pull, vc-bzr-merge-branch):
 +      Callers changed.
  
 -2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-28  Leo  <sdl.web@gmail.com>
  
 -      * simple.el (kill-new, kill-append, kill-region):
 -      * comint.el (comint-kill-region): Make the yank-handler argument
 -      obsolete.
 +      * emacs-lisp/advice.el (ad-make-advised-docstring): Don't apply
 +      highlighting to the "this function is advised" message.
  
 -2010-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * help-mode.el (help-mode-finish): Apply highlighting here, to
 +      avoid clobbering by substitute-command-keys (Bug#6304).
  
 -      * emacs-lisp/smie.el (smie-bnf-classify): Signal errors for tokens
 -      that are both openers (resp. closers) and something else.
 -      (smie-grammar): Loosen definition of valid values.
 -      (smie-next-sexp, smie-down-list, smie-blink-matching-open)
 -      (smie-indent--parent, smie-rule-parent, smie-indent-keyword)
 -      (smie-indent-after-keyword): Adjust users.
 -      (smie-indent-keyword): Don't indent empty lines.
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * vc-hg.el (vc-hg-program): New var.
 -      Suggested by Norman Gray <norman@astro.gla.ac.uk>.
 -      (vc-hg-state, vc-hg-working-revision, vc-hg-command): Use it.
 +      * woman.el (woman0-roff-buffer): Process roff escape sequences
 +      occurring prior to the first request (Bug#7843).
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el: Don't use font-lock any more.
 +      (compilation-error-regexp-alist-alist): Change handling of makepp
 +      so it preserves the warning/error distinction on subsequent files.
 +      Simplify various rules.
 +      (compilation-directory-properties): Use font-lock-face.
 +      Add a compilation-message property.
 +      (compilation-internal-error-properties): Use font-lock-face.
 +      Don't set the compilation-debug property here.
 +      (compilation--put-prop, compilation--remove-properties)
 +      (compilation--parse-region, compilation--ensure-parse)
 +      (compilation--ensure-parse): New functions.
 +      (compilation-parse-errors): New function, largely inspired of
 +      compilation-mode-font-lock-keywords.  Set compilation-debug here.
 +      (compilation--parsed): New var.
 +      (compilation--flush-parse): Use compilation--ensure-parse.
 +      (compilation-start): Don't call font-lock.
 +      (compilation-turn-on-font-lock): Remove.
 +      (compilation-setup): Don't set font-lock-extra-managed-props not change
 +      other font-lock settings, other than keywords.
 +      Don't activate font-lock-mode.
 +      Set change-major-mode-hook and before-change-functions.
 +      (compilation--unsetup): Remove properties and hooks.
 +      (compilation-next-single-property-change): New function.
 +      (compilation-next-error): Use it to parse when needed.
 +      (compile-goto-error): Parse buffer as needed.
 +      (compilation--compat-error-properties): Don't need a dummy `face'
 +      property any more.
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el: Use accessors for clarity and fix omake hack.
 +      (compilation-process-setup-function): Fix docstring's false promises.
 +      (compilation-error-regexp-alist-alist): Catch omake's continuous
 +      recompilation message and avoid reuse of old markers.
 +      (compilation-parse-errors-function): Declare obsolete.
 +      (compilation-buffer-modtime): Remove.
 +      (compilation--make-cdrloc, compilation--loc->col)
 +      (compilation--loc->line, compilation--loc->file-struct)
 +      (compilation--loc->marker, compilation--loc->visited)
 +      (compilation--make-file-struct, compilation--file-struct->file-spec)
 +      (compilation--file-struct->formats)
 +      (compilation--file-struct->loc-tree): New macros.  Use them.
 +      (compilation--message): New defstruct.  Use them.
 +      (compilation-next-error-function): Don't mess with timestamps to try
 +      and guess when to reparse.
 +
 +2011-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/tex-mode.el: Get rid of compilation-parse-errors-function
 +      (tex-old-error-file-name): New function,
 +      extracted from tex-compilation-parse-errors.
 +      (tex-compilation-parse-errors): Remove.
 +      (tex-error-regexp-alist): New var.
 +      (tex-shell): Use it to avoid compilation-parse-errors-function.
 +
 +      * progmodes/grep.el (grep-regexp-alist): Tighten regexp.
 +      (grep-mode-font-lock-keywords): Remove regexp that seems like
 +      a left-over from before we used compile.el.
 +      (grep-mode-font-lock-keywords): Call syntax-ppss-flush-cache when
 +      modifying the buffer within with-silent-modifications.
 +
 +      * progmodes/compile.el: Cleanup text-properties namespace by using
 +      `compilation-message' instead of `message', `compilation-directory'
 +      instead of `directory', and `compilation-debug' instead of `debug'.
 +      (compilation-last-buffer, compilation-parsing-end)
 +      (compilation-error-list, compilation-old-error-list): Move to the
 +      compatibility part of the code.
 +      (compilation-error-properties): If `file' is a function, let it return
 +      a file name.
 +      (compilation-mode-font-lock-keywords): Be more conservative with the
 +      omake "^ *" pattern prefix, to try and minimize the risk of
 +      pathologically slow regexp matching.
 +      (compilation-start): Use inhibit-read-only.
 +      (compilation--unsetup): New function.
 +      (compilation-shell-minor-mode, compilation-minor-mode): Use it.
 +      (compilation-filter): Minor tweaks.
 +      (compilation-next-error-function): Try and avoid abusing variables.
 +      (compilation--flush-file-structure): New fun.
 +      (compilation-fake-loc): Use it to improve behavior when file is reused.
 +      (debug-ignored-errors): Add "Moved past last ...".
 +      (compilation--compat-error-properties)
 +      (compilation--compat-parse-errors): Rename by doubling the "-".
 +
 +      Port features from the previous prolog.el to the new one.
 +      * progmodes/prolog.el (prolog-system): Add GNU and ECLiPSe options.
 +      (prolog-program-name, prolog-program-switches, prolog-consult-string)
 +      (prolog-compile-string, prolog-prompt-regexp): Get rid of the <foo>-i
 +      variable and use a function to compute the value dynamically.
 +      (prolog-prompt-regexp): Add regexp for GNU Prolog.
 +      (prolog-continued-prompt-regexp): Remove, unused.
 +      (prolog-find-value-by-system): Try and use the value of prolog-system
 +      in the *prolog* buffer if it helps.
 +      (prolog-mode-keybindings-common): Bind C-c C-z unconditionally...
 +      (prolog-zip-on): ..and check prolog-system and version here instead.
 +      (prolog-inferior-self-insert-command): New command.
 +      (prolog-inferior-mode-map): Use it.
 +      (prolog-inferior-error-regexp-alist): New var.
 +      (prolog-inferior-mode): Use it, with compilation-shell-minor-mode.
 +      (prolog-input-filter): Use derived-mode-p.
 +      (prolog-inferior-guess-flavor): New function.
 +      (prolog-ensure-process): Use it.  Use make-comint-in-buffer rather than
 +      make-comint to avoid running comint-mode twice.
 +      (prolog-inferior-buffer): New fun.
 +      (prolog-old-process-region, prolog-old-process-file):
 +      Don't call prolog-bsts here...
 +      (prolog-build-prolog-command): ...do it here instead.
 +      (prolog-old-process-region, prolog-old-process-file):
 +      Use compilation-fake-loc and compilation-forget-errors.
 +      (prolog-consult-compile-region): Use bolp.
  
 -2010-11-17  Glenn Morris  <rgm@gnu.org>
 +2011-01-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * emacs-lisp/autoload.el (autoload-find-destination): The function
 -      coding-system-eol-type may return non-numeric values.  (Bug#7414)
 +      * image-mode.el (image-display-size): Doc fix (Bug#7820).
  
 -2010-11-16  Ulrich Mueller  <ulm@gentoo.org>
 +2011-01-27  Sam Steingold  <sds@gnu.org>
  
 -      * server.el (server-force-stop): Ensure the server is stopped (Bug#7409).
 +      * midnight.el (clean-buffer-list-kill-never-buffer-names):
 +      Remove "*server*" which is never created by emacs server.
  
 -2010-11-13  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-27  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
  
 -      * subr.el (posn-col-row): Pay attention to header line.  (Bug#7390)
 +      * vc/vc-bzr.el (vc-bzr-diff): Don't pass --diff-options unless
 +      there are some diff switches.
  
 -2010-11-13  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * textmodes/picture.el (picture-mouse-set-point): Don't use
 -      posn-col-row; explicitly compute the motion based on the posn at
 -      the window-start (Bug#7390).
 +      * progmodes/ruby-mode.el (ruby-syntax-propertize-function):
 +      Copy change made to ruby-font-lock-syntactic-keywords.
  
 -2010-11-13  Michael Albinus  <michael.albinus@gmx.de>
 +      * htmlfontify.el: Make it obey the font-lock-face text property.
 +      Miscellaneous cleanup such as:
 +      - Don't hide expressions after a closing paren.
 +      - Move initial setq into let.
 +      - Hoist common parts out of ifs.
 +      (hfy-p-to-face, hfy-p-to-face-lennart): Remove.
 +      (hfy-face-at): Use get-text-property instead.
 +      (hfy-prop-invisible-p): Use invisible-p if available.
 +      (htmlfontify-manual): Use \\[...].
 +      (hfy-html-quote-regex): Use [...].
 +      (hfy-combined-face-spec): Simplify.
 +      (hfy-compile-face-map): Don't presume point-min==1.
 +      (hfy-css-name, hfy-buffer, htmlfontify-buffer): Use \' rather than $ to
 +      match end of string.
 +      (hfy-text-p): η-reduce.
 +      (hfy-tags-for-file): Receive cache-hash directly.
 +      (hfy-mark-tag-names): Adjust call.
  
 -      * net/tramp.el (tramp-remote-coding-commands): Add an alternative
 -      using "base64 -d -i".  This is needed for older base64 versions
 -      from GNU coreutils.  Reported by Klaus Reichl
 -      <Klaus.Reichl@thalesgroup.com>.
 +2011-01-27  Glenn Morris  <rgm@gnu.org>
  
 -2010-11-13  Glenn Morris  <rgm@gnu.org>
 +      * msb.el (msb-after-load-hooks): Make it an obsolete alias.
 +      (msb-after-load-hook): Remove eval-after-load wackiness.
  
 -      * novice.el (disabled-command-function):
 -      Fix 2009-11-15 change.  (Bug#7384)
 +2011-01-25  Sam Steingold  <sds@gnu.org>
  
 -2010-11-12  Glenn Morris  <rgm@gnu.org>
 +      * vc/vc-svn.el (vc-svn-diff): Use `diff-command' instead of the
 +      literal "diff" (important for windows-nt).
  
 -      * calendar/calendar.el (diary-iso-date-forms): Make elements
 -      mutually exclusive.  (Bug#7377)
 +2011-01-25  Glenn Morris  <rgm@gnu.org>
  
 -2010-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/copyright.el (copyright-at-end-flag)
 +      (copyright-names-regexp): Add safety properties.
 +      (copyright-year-ranges): New option.
 +      (copyright-find-end): New function, split from copyright-update-year.
 +      (copyright-update-year): Use copyright-find-end.
 +      (copyright-fix-years): Optionally, convert years to ranges.
 +      Handle years continued over comment lines.
 +      Do not mess with the fill-prefix.
 +      Do not call copyright-update.
 +      (copyright-update-directory): Optionally, fix years rather than update.
 +      Skip directories.  Find files with only safe local vars.
  
 -      * emacs-lisp/smie.el (smie-prec2->grammar): Obey equality constraints
 -      when filling the remaining "unconstrained" values.
 +2011-01-25  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * files.el (file-name-non-special): Only change buffer-file-name after
 +      insert-file-contents if it's `visit'ing the file (bug#7854).
  
 -      * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
 -      safety predicate.
 +2011-01-25  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * files.el (safe-local-variable-p): Gracefully handle errors.
 +      * dired.el (dired-revert): Doc fix (Bug#7758).
  
 -      * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule):
 -      Use smie-indent-virtual when indenting relative to an opener.
 -      (smie-rule-separator): Use smie-rule-parent.
 -      (smie-indent-keyword): Consult rules, even for openers at bol.
 -      (smie-indent-comment-close): Try to align closer's content.
 +      * simple.el (line-move-visual): Doc fix (Bug#7594).
  
 -2010-11-11  Glenn Morris  <rgm@gnu.org>
 +2011-01-25  Nobuyoshi Nakada  <nobu@ruby-lang.org>
  
 -      * ls-lisp.el (ls-lisp-dired-ignore-case): Make it an obsolete alias.
 +      * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for
 +      here-doc which ends with an underscore.
 +      (ruby-mode-set-encoding): Skip shebang line always.
 +      (ruby-mode-map): Bind C-c C-c to comment-region.
 +      (ruby-font-lock-keywords): Highlight literal hash key labels as symbols.
 +      (ruby-forward-sexp): Stop after literal hash key labels.
 +      (ruby-font-lock-syntactic-keywords): Highlight regexp after open
 +      bracket.
  
 -2010-11-10  Glenn Morris  <rgm@gnu.org>
 +2011-01-25  Keitaro Miyazaki  <keitaro.miyazaki@gmail.com>  (tiny change)
  
 -      * printing.el (pr-menu-bind): Doc fix.
 +      * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in
 +      the correct buffer (Bug#7650).
  
 -      * speedbar.el (speedbar-toggle-images): Doc fix.
 +2011-01-25  Glenn Morris  <rgm@gnu.org>
  
 -      * progmodes/python.el (python-shell): Doc fix.
 +      * comint.el (comint-mode): Doc fix.  (Bug#7897)
  
 -      * wid-edit.el (widget-field-use-before-change)
 -      (widget-use-overlay-change): Doc fixes.
 +      * simple.el (do-auto-fill): Give it a doc string.
  
 -2010-11-09  Glenn Morris  <rgm@gnu.org>
 +      * button.el (make-text-button): Doc fix.  (See bug#7881)
  
 -      * progmodes/tcl.el (tcl-hairy-scan-for-comment): Doc fix.
 +2011-01-24  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/perl-mode.el (perl-syntax-propertize-special-constructs):
 +      Don't move backward, so as not to fall in an inf-loop (bug#7736).
  
 -      * minibuffer.el (minibuffer-completion-help): Specify the end of the
 -      completion field (bug#7211).
 +      * progmodes/ruby-mode.el (ruby-syntax-propertize-function): (bug#7735)
 +      Handle ?" and friends differently (e.g. don't use backrefs).
  
 -      * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322)
 -      Fix handling of backslash escapes.
 -      (python-quote-syntax): Adjust accordingly.
 +2011-01-24  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-11-08  Richard Levitte  <richard@levitte.org>  (tiny change)
 +      * calc/calc.el (calc-default-power-reference-level)
 +      (calc-default-field-reference-level): New variables.
 +      * calc/calc-units.el (math-standard-units): Add dB and Np.
 +      (math-logunits): New variable.
 +      (math-extract-logunits, math-logcombine, calcFunc-luplus)
 +      (calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level)
 +      (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level):
 +      New functions.
 +      (math-find-base-units-rec): Add entry for ln(10).
 +      * calc/calc-help.el (calc-u-prefix-help): Add logarithmic help.
 +      (calc-ul-prefix-help): New function.
 +      * calc/calc-ext.el (calc-init-extensions): Autoload new units
 +      functions.  Add keybindings for new units functions.
  
 -      * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status)
 -      (vc-mtn-workfile-branch): Adjust to new output format.
 +2011-01-22  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
  
 -2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/rcirc.el (rcirc-kill-buffer-hook): Flush logs when killing
 +      rcirc buffers.  (Bug#4940)
  
 -      * international/mule-cmds.el (princ-list): Mark as obsolete.
 +2011-01-22  Glenn Morris  <rgm@gnu.org>
  
 -2010-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/copyright.el (copyright-find-copyright): New function,
 +      split out from copyright-update-year.
 +      (copyright-update): Don't mess with the GPL version if we don't own the
 +      copyright.  Update license regexp, and remove no longer needed
 +      Esperanto stuff.
 +      (copyright-fix-years): Use copyright-find-copyright.
  
 -      * emacs-lisp/smie.el: New package.
 +2011-01-22  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-11-06  Michael Albinus  <michael.albinus@gmx.de>
 +      * vc/diff.el (diff-sentinel): Doc fix (Bug#7682).
  
 -      * files.el (backup-by-copying-when-mismatch):
 -      Set `permanent-local' property.
 +2011-01-22  Jari Aalto  <jari.aalto@cante.net>
  
 -      * net/tramp.el (tramp-handle-insert-file-contents): Do not set
 -      `permanent-local' property for `backup-by-copying-when-mismatch'.
 +      * play/landmark.el: Change `lm-' prefix to `landmark-' (Bug#7672).
 +      (lm): Rename to landmark.
 +      (lm-test-run): Rename to landmark-test-run.
  
 -2010-11-06  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-22  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * ls-lisp.el (insert-directory): Doc fix.  (bug#7285)
 -      (ls-lisp-classify-file): New function.
 -      (ls-lisp-insert-directory): Call it if switches include -F (bug#6294).
 -      (ls-lisp-classify): Call ls-lisp-classify-file.
 -      (insert-directory): Remove blanks from switches.
 +      * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in
 +      "Case sensitive" menu item.
  
 -2010-11-07  Wilson Snyder  <wsnyder@wsnyder.org>
 +2011-01-22  Roland McGrath  <roland@frob.com>
  
 -      * progmodes/verilog-mode.el (verilog-insert-one-definition)
 -      (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and
 -      AUTOINOUT for SV style multidimensional arrays, bug294.
 -      Reported by Eric Mastromarchi.
 -      (verilog-preprocess): Use with-current-buffer and
 -      font-lock-fontify-buffer to cleanup style issues.
 +      * comint.el (comint-replace-by-expanded-history-before-point): Fix
 +      expansion of !$ and !!:N syntax to pick the indicated word (bug#7883).
  
 -2010-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +2011-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/trampver.el: Update release number.
 +      * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882).
  
 -2010-08-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2011-01-22  Jari Aalto  <jari.aalto@cante.net>
  
 -      * mouse.el (mouse-fixup-help-message): Match "mouse-2" only at the
 -      beginning of the string.  Use `string-match-p'.  (Bug#6765)
 +      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
 +      Assume foo(bar) is a manpage reference rather than some unquoted
 +      symbol (bug#7705).
  
 -2010-11-01  Glenn Morris  <rgm@gnu.org>
 +2011-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * locate.el (locate, locate-mode): Doc fixes.
 +      * subr.el (shell-quote-argument): Properly quote \n (bug#7687).
 +      Suggested by Flo <sensorflo@gmail.com>.
  
 -2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-22  Glenn Morris  <rgm@gnu.org>
  
 -      * server.el (server-start): New arg INHIBIT-PROMPT prevents asking
 -      user for confirmation.
 -      (server-force-stop): Use it.
 -      (server-start): Use server-force-stop for kill-emacs-hook, to
 -      avoid user interaction while killing Emacs.
 +      * progmodes/compile.el (compilation-error-regexp-alist):
 +      Fix custom type.  (Bug#7812)
  
 -2010-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-22  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -      * vc/log-edit.el (log-edit-rewrite-fixes): New var.
 -      (log-edit-author): New dynamic var.
 -      (log-edit-changelog-ours-p, log-edit-insert-changelog-entries):
 -      Use it to return the author if different from committer.
 -      (log-edit-insert-changelog): Use them to add Author: and Fixes headers.
 +      * allout.el (allout-prefixed-keybindings): Bind (prefixed) '#' to
 +      allout-number-siblings, in keeping with what obtained due to
 +      (now-defunct) allout-keybindings-list.  Ditch repeat binding to
 +      (prefixed) ?i.
 +      (allout-before-change-handler): Better expose spots affected by
 +      undo.
  
 -2010-10-31  Eli Zaretskii  <eliz@gnu.org>
 +2011-01-22  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix.
 +      * man.el (Man-highlight-references0): Use make-button (Bug#7881).
  
 -2010-10-31  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-22  Phil Hagelberg  <phil@evri.com>
  
 -      * vc/vc.el (vc-deduce-backend): New fun.  Handle diff buffers.
 -      (vc-root-diff, vc-print-root-log, vc-log-incoming)
 -      (vc-log-outgoing): Use it.
 -      (vc-diff-internal): Set diff-vc-backend.
 +      * pcmpl-unix.el (pcmpl-ssh-config-file): New option.
 +      (pcmpl-ssh-known-hosts): Rename from pcmpl-ssh-hosts.
 +      (pcmpl-ssh-config-hosts): New function.
 +      (pcmpl-ssh-hosts): Use pcmpl-ssh-config-hosts in addition to
 +      pcmpl-ssh-known-hosts.
  
 -      * vc/diff-mode.el (diff-vc-backend): New var.
 +2011-01-21  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-10-31  Juri Linkov  <juri@jurta.org>
 +      * calc/calc-undo.el (calc-undo): Autoload it.
 +      * calc/calc-ext.el (calc-init-extensions): Remove keybindings
 +      and autoload for `calc-undo'.
 +      * calc/calc.el (calc-mode-map): Add keybindings for `calc-undo'.
 +      * calc/calc-prog.el:
 +      * calc/calc-graph.el:
 +      * calc/calc-map.el: Change `arglist' to `math-arglist' throughout.
  
 -      * vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
 -      buffer-locally to lambda that re-runs the vc diff command.
 -      (Bug#6447)
 +2011-01-21  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * calc/calc-ext.el (calc-init-extensions): Map all `undo'
 +      keybindings to `calc-undo'.
  
 -      * vc/log-view.el (log-view-mode-map): Bind revert-buffer.
 +2011-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Make 'g' (AKA revert-buffer) rerun VC log, log-incoming and
 -      log-outgoing commands.
 -      * vc/vc.el (vc-log-internal-common): Add a new argument and use it
 -      to create a buffer local revert-buffer-function variable.
 -      (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a
 -      revert-buffer-function lambda.
 +      Don't mess with *temp*.
 +      * obsolete/spell.el: Move from textmodes/spell.el.
 +      (spell-string):
 +      * term.el (term-read-input-ring):
 +      * startup.el (display-startup-echo-area-message):
 +      * progmodes/antlr-mode.el (antlr-directory-dependencies):
 +      * comint.el (comint-read-input-ring): Use with-temp-buffer.
 +      * international/mule.el (ctext-pre-write-conversion): Don't hardcode
 +      point-min==1.
  
 -      Improve VC create/retrieve tag/branch.
 -      * vc.el (vc-create-tag): Do not read the directory name for VCs
 -      with repository revision granularity.  Adjust the tag/branch
 -      prompt.  Reset VC properties.
 -      (vc-retrieve-tag): Do not read the directory name for VCs
 -      with repository revision granularity.  Reset VC properties.
 +2011-01-20  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      * allout.el (allout-institute-keymap): Use fset instead of
 +      reapplying defalias.
 +
 +      (allout-hotspot-key-handler): Check for non-control-modified
 +      bindings for hotspot characters if there are no control-modified
 +      versions.
 +
 +      * allout.el: Summary - migrate to defining allout mode using
 +      define-minor-mode instead of defun.  Significantly clean-up
 +      internal keymap provisions, refactoring and, in the process,
 +      removing a lot of accumulated cruft.
 +
 +      allout-mode-map is now a keymap by virtue of being a defalias to
 +      allout-mode-map-value, which contains the actual keymap structure.
 +
 +      (allout-mode): Use define-minor-mode rather than defun.
 +      Remove now-unnecessary minor-mode setup activities from the body.
 +      Specify :keymap as allout-mode-map so the minor-mode-map-alist
 +      entry will be '(allout-mode . allout-mode-map) - see
 +      allout-mode-map-value, below.  Adjust docstring to track changes.
 +      (allout-minor-mode): Remove this defalias, now that we're using
 +      define-minor-mode.
 +      (allout-mode-map): Set value to be 'allout-mode-map.  The actual
 +      keymap is allout-mode-map-value, via defalias.
 +      (allout-mode-map-value): The variable holding the actual mode
 +      keymap structure, by virtue of defalias from allout-mode-map.
 +      (allout-compose-and-institute-keymap): Rename from
 +      allout-bind-keys, and including the binding-composition
 +      functionality of the former produce-allout-mode-map and
 +      allout-setup-mode-map.
 +      (allout-institute-keymap): Take over the "setup" part of the former
 +      allout-setup-mode-map.  Reassign allout-mode-map-value value and
 +      update the defalias.
 +      (allout-command-prefix) (allout-prefixed-keybindings)
 +      (allout-unprefixed-keybindings):
 +      Use allout-compose-and-institute-keymap to process the bindings.
 +      (allout-unprefixed-keybindings): Remove extraneous '?' question
 +      marks.
 +      (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
 +      user can customize if they want to use that binding.
 +      Bind allout-copy-topic-as-kill to (prefixed) \M-k.
 +      Bind allout-up-current-level to (prefixed) \C-u.  (I think i mistakenly
 +      elided that, previously, instead of the one for \C-h.)
 +      (allout-hotspot-key-handler): Remove attempt to resolve the key
 +      through the literal key-string lookup on allout-keybindings-list.
 +      That probably hasn't worked for a Long Time, and removal of
 +      allout-keybindings-list further simplifies the keybindings
 +      situation.
 +      (allout-pre-command-business): Use allout-mode-map-value instead
 +      of allout-mode-map.
 +      (allout-preempt-trailing-ctrl-h): Remove.  The user can customize
 +      the bindings if they want to use a keybinding having a trailing
 +      \C-h.  No deprecation needed since this feature was never in a
 +      release.
 +      (allout-keybindings-list): Remove.  It's not been useful for a
 +      while.  (See allout-hotspot-key-handler changes, above.)
 +      (produce-allout-mode-map): Remove.  Consolidate into
 +      allout-compose-and-institute-keymap.
 +      (allout-mode-map-adjustments): Remove.  No longer necessary with
 +      removal of allout-preempt-trailing-ctrl-h.
 +      (allout-setup-mode-map): Remove.  Consolidate into
 +      allout-compose-and-institute-keymap and allout-institute-keymap.
 +
 +2011-01-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/vc-svn.el (vc-svn-after-dir-status): Tweak previous change.
 +
 +      * simple.el (read-expression-history): Remove, it's in minibuf.c.
 +
 +2011-01-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el (y-or-n-p): Revert 2011-01-07 change, removing ARGS.
 +
 +      * files.el (find-alternate-file, basic-save-buffer)
 +      (basic-save-buffer-2, revert-buffer, recover-file)
 +      (kill-buffer-ask, abort-if-file-too-large)
 +      (set-visited-file-name, write-file, backup-buffer)
 +      (basic-save-buffer, save-some-buffers):
 +      * dired-aux.el (dired-compress-file): Callers changed.
 +
 +2011-01-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/vc-svn.el (vc-svn-after-dir-status, vc-svn-parse-status):
 +      Also check the property status.  (Bug#7861)
 +
 +2011-01-18  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-debug-message): Extend function exclude
 +      list.  Use `regexp-opt'.
 +
 +2011-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb
 +      highlighting doesn't spill over subsequent lines.
  
 -      Add optional support for resetting VC properties.
 -      * vc-dispatcher.el (vc-resynch-window): Add new optional argument,
 -      call vc-file-clearprops when true.
 -      (vc-resynch-buffer): Add new optional argument, pass it down.
 -      (vc-resynch-buffers-in-directory): Likewise.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the
 +      keymap expression.  Improve docstring.
  
 -      Improve support for special markup in the VC commit message.
 -      * vc-mtn.el (vc-mtn-checkin): Support Author: and Date: markup.
 -      * vc-hg.el (vc-hg-checkin): Add support for Date:.
 -      * vc-git.el (vc-git-checkin):
 -      * vc-bzr.el (vc-bzr-checkin): Likewise.
 +      * electric.el (electric-indent-post-self-insert-function):
 +      Don't auto-indent for indent-to-left-margin, it's too often
 +      counter-productive.
 +
 +2011-01-16  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * strokes.el (strokes-read-stroke): Re-fill strokes buffer with
 +      spaces if the frame was resized, so that the full visible buffer
 +      serves as canvas for strokes.
 +
 +2011-01-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * info-xref.el (info-xref-docstrings): Replace cl function.
 +      Also skip directories.
 +
 +2011-01-16  Kevin Ryde  <user42@zip.com.au>
 +
 +      * info-xref.el: Version 3.
 +      (info-xref-check, info-xref-check-all): Move commentary details
 +      into docstrings for better visibility.
 +      Use compilation-mode for the results buffer.
 +      (info-xref-output, info-xref-output-error, info-xref-with-output)
 +      (info-xref-filename, info-xref-in-progress):
 +      New internals for this.
 +      (info-xref-check-list, info-xref-check-buffer)
 +      (info-xref-check-all-custom): Use those.
 +      (info-xref-output-buffer): Rename from info-xref-results-buffer.
 +      (info-xref-output-heading): Rename from info-xref-filename-heading.
 +      (info-xref-good, info-xref-bad, info-xref-xfile-alist)
 +      (info-xref-filename-heading): Move to output managing section.
 +      (info-xref-docstrings): New command checking "Info node `(foo)Bar'"
 +      (info-xref-lock-file-p, info-xref-with-file): New helpers for it.
 +      (info-xref-subfile-p): Move to generic section with those two.
 +      (info-xref-check-node): New function split from
 +      info-xref-check-buffer, shared by info-xref-docstrings.
 +      (info-xref-goto-node-p): Move to a checking section with that func.
 +      (info-xref-unavail): New counter.
 +      (info-xref-check-node): Use it.
 +      (info-xref-with-output): Show count of unavailables at end of output.
 +      (info-xref-all-info-files): Exclude ".*" dotfiles.  Ignore broken
 +      symlinks.  Exclude .texi files.  Exclude Emacs backup files.
 +      (info-xref-check-all-custom): Fix quietening viper-mode and
 +      gnus-registry-install -- use setq not let so as not to unbind
 +      after load.
 +
 +2011-01-16  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-abort): Don't quit if search has
 +      an incomplete regexp (isearch-error is non-nil).  (Bug#7534)
  
 -      Add support for vc-log-incoming, improve vc-log-outgoing for Git.
 -      * vc-git.el (vc-git-log-view-mode): Fix font lock for
 -      incoming/outgoing logs.
 -      (vc-git-log-outgoing, vc-git-log-incoming): New functions.
 +2011-01-15  Mark Diekhans  <markd@soe.ucsc.edu>
  
 -      * vc-git.el (vc-git-log-outgoing): Use the same format as the
 -      short log.
 -      (vc-git-log-incoming): Likewise.  Run "git fetch" before the log
 -      command
 +      * files.el (backup-buffer): Make last-resort backup file in
 +      .emacs.d (Bug#6953).
  
 -      Add bindings for vc-log-incoming and vc-log-outgoing.
 -      * vc-hooks.el (vc-prefix-map): Add bindings for vc-log-incoming
 -      and vc-log-outgoing.
 -      * vc-dir.el (vc-dir-menu-map): Add menu bindings for vc-log-incoming
 -      and vc-log-outgoing.
 +      * subr.el (locate-user-emacs-file): If .emacs.d does not exist,
 +      make it with permission 700.
  
 -      Improve state updating for VC tag commands.
 -      * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer
 -      to update the state of all buffers in the directory.
 +2011-01-15  Kenichi Handa  <handa@m17n.org>
  
 -2010-05-19  Glenn Morris  <rgm@gnu.org>
 +      * mail/rmailmm.el (rmail-mime-insert-header):
 +      Set rmail-mime-coding-system to a cons whose car is the last coding
 +      system used to decode the header.
 +      (rmail-mime-find-header-encoding): New function.
 +      (rmail-mime-insert-decoded-text):
 +      Override rmail-mime-coding-system if it is a cons.
 +      (rmail-show-mime): If only a header part was decoded, find the
 +      coding system while ignoring mm-charset-override-alist.
  
 -      * vc-dir.el (vc-dir): Don't pop-up-windows.  (Bug#6204)
 +2011-01-15  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * subr.el (event-start, event-end): Doc fix (Bug#7826).
  
 -      * vc.el (vc-checkin, vc-modify-change-comment):
 -      Adjust to new vc-start/finish-logentry.
 -      (vc-find-conflicted-file): New command.
 -      (vc-transfer-file): Adjust to new vc-checkin.
 -      (vc-next-action): Improve scoping.
 +2011-01-15  Kenichi Handa  <handa@m17n.org>
  
 -      * vc-git.el (vc-git-checkin): Use log-edit-extract-headers.
 -      (vc-git-commits-coding-system): Rename from git-commits-coding-system.
 +      * mail/rmailmm.el (rmail-mime-next-item)
 +      (rmail-mime-previous-item): Delete them.
 +      (rmail-mime-shown-mode): Recursively call for children.
 +      (rmail-mime-hidden-mode): Delete the 2nd arg TOP.
 +      Callers changed.
 +      (rmail-mime-raw-mode): Recursively call for children.
 +      (rmail-mode-map): Change mapping of tab and backtab to
 +      forward-button and backward-button respectively.
 +      (rmail-mime-insert-tagline): Always insert "Hide" or "Show"
 +      button.
 +      (rmail-mime-update-tagline): New function.
 +      (rmail-mime-insert-text): Call rmail-mime-update-tagline if the
 +      body display is changed.
 +      (rmail-mime-toggle-button): Rename from rmail-mime-image.
 +      (rmail-mime-image): Delete this button type.
 +      (rmail-mime-toggle): New button type.
 +      (rmail-mime-insert-bulk): Call rmail-mime-update-tagline if the
 +      body display is changed.  Change the save button label to "Save".
 +      Don't process show/hide button here.
 +      (rmail-mime-insert-multipart): Call rmail-mime-update-tagline if
 +      the body display is changed.  Unconditionally call
 +      rmail-mime-insert for children.
 +      (rmail-mime-handle): Update `display' vector of the just inserted
 +      entity.
 +      (rmail-mime-process): If mail-header-parse-content-type returns
 +      nil, use "text/plain" as the fallback type.
 +      (rmail-mime-insert): For raw-mode, recursively call
 +      rmail-mim-insert for children.
 +      (rmail-mime): Handle the case that the current buffer is not rmail
 +      buffer (e.g. in summary buffer).
  
 -      * vc-dispatcher.el (vc-log-edit): Shorten names for
 -      log-edit-show-files.
 +2011-01-15  Kenichi Handa  <handa@m17n.org>
  
 -      * vc-bzr.el (vc-bzr-checkin): Use log-edit-extract-headers.
 -      (vc-bzr-conflicted-files): New function.
 +      * mail/rmailmm.el (rmail-mime-next-item)
 +      (rmail-mime-previous-item): Skip the body of a non-multipart
 +      entity if a tagline is shown.
  
 -      * log-edit.el (log-edit-summary, log-edit-header)
 -      (log-edit-unknown-header): New faces.
 -      (log-edit-headers-alist): New var.
 -      (log-edit-header-contents-regexp): New const.
 -      (log-edit-match-to-eoh): New function.
 -      (log-edit-font-lock-keywords): Use them.
 -      (log-edit): Insert a "Summary:" header as default.
 -      (log-edit-mode): Mark font-lock rules as case-insensitive.
 -      (log-edit-done): Cleanup headers.
 -      (log-edit-extract-headers): New function to replace it.
 +2011-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with
 -      the windows/frames.
 +      * tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721).
 +      (tmm-prompt): Simplify.
 +      (tmm-add-prompt): Remove unused var `win'.
  
 -      * vc-bzr.el (vc-bzr-shelve-apply): Don't use *vc-bzr-shelve*.
 +      * whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810)
 +      to minor mode which used nil accidentally to mean "turn off".
  
 -      * vc-dir.el (vc-dir-kill-line): New command.
 -      (vc-dir-mode-map): Bind it to C-k.
 -      (vc-dir-headers): Abbreviate the working dir.
 +2011-01-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * vc-git.el (vc-git-revision-table): Include remote branches.
 +      * net/tramp-sh.el (tramp-find-inline-compress)
 +      (tramp-get-inline-coding): Quote command after pipe symbol for
 +      local calls under W32.  (Bug#6784)
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +2011-01-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      New VC methods: vc-log-incoming and vc-log-outgoing.
 -      * vc.el (vc-print-log-setup-buttons, vc-log-internal-common)
 -      (vc-incoming-outgoing-internal, vc-log-incoming, vc-log-outgoing):
 -      New functions.
 -      (vc-print-log-internal): Just call vc-log-internal-common.
 -      (vc-log-view-type): New permanent local variable.
 +      * net/tramp.el (tramp-default-method): Initialize with pscp/plink
 +      only when running under W32.
  
 -      * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing.
 +2011-01-15  Eli Zaretskii  <eliz@gnu.org>
  
 -      * vc-bzr.el (vc-bzr-log-view-mode): Use vc-log-view-type instead
 -      of the dynamic bound vc-short-log.
 -      (vc-bzr-log-incoming, vc-bzr-log-outgoing): New functions.
 +      * progmodes/grep.el (grep-compute-defaults): Quote the program
 +      file name after the pipe symbol in Grep templates.  (Bug#6784)
 +      * jka-compr.el (jka-compr-partial-uncompress): Likewise.
  
 -      * vc-git.el (vc-git-log-outgoing): New function.
 -      (vc-git-log-view-mode): Use vc-log-view-type instead
 -      of the dynamic bound vc-short-log.
 +2011-01-15  Lennart Borgman  <lennart.borgman@gmail.com>
  
 -      * vc-hg.el (vc-hg-log-view-mode): Use vc-log-view-type instead of
 -      the dynamic bound vc-short-log.  Highlight the tag.
 -      (vc-hg-log-incoming, vc-hg-log-outgoing): New functions.
 -      (vc-hg-outgoing, vc-hg-incoming, vc-hg-outgoing-mode):
 -      (vc-hg-incoming-mode): Remove.
 -      (vc-hg-extra-menu-map): Do not bind vc-hg-incoming and vc-hg-outgoing.
 +      * buff-menu.el (Buffer-menu-buffer-list): New var.
 +      (Buffer-menu-revert-function, list-buffers-noselect): Use it, so a
 +      restricted buffer list is not lost on revert (Bug#7749).
  
 -      Fix default-directory for vc-root-diff.
 -      * vc.el (vc-root-diff): Bind default-directory to the root
 -      directory for the diff command.
 +2011-01-15  Eric Hanchrow  <eric.hanchrow@gmail.com>
  
 -2010-10-31  Sam Steingold  <sds@gnu.org>
 +      * net/ldap.el (ldap-search-internal): Discard stderr output.
  
 -      * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 -      `vc-hg-command' with a list of flags.
 +2011-01-15  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-10-31  Glenn Morris  <rgm@gnu.org>
 +      * files.el (directory-abbrev-alist): Doc fix.  (Bug#7777)
  
 -      * vc-bzr.el (vc-bzr-log-edit-mode): Add --fixes support to
 -      log-edit-before-checkin-process.
 +2011-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
 +      * vc-bzr.el (vc-bzr-annotate-time): Tweak previous change.
  
 -      * vc-bzr.el, vc-hg.el (log-edit-mode): Declare.
 +2011-01-15  Kenichi Handa  <handa@m17n.org>
  
 -      * vc-dispatcher.el (vc-start-logentry): Doc fix.
 -      (log-view-process-buffer, log-edit-extra-flags): Declare.
 +      * mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown
 +      part as a plain text.
 +      (rmail-mime-process-multipart): Set the default content-type to
 +      nil for unknown multipart subtypes (bug#7651).
  
 -2010-10-31  Dan Nicolaescu  <dann@ics.uci.edu>
 +2011-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Add special markup processing for commit logs.
 -      * log-edit.el (log-edit): Add new argument MODE.  Use that mode
 -      when non-nil instead of the log-view-mode.
 +      * hexl.el (hexl-mode-old-*): Remove.
 +      (hexl-mode--old-var-vals): New var to replace them.
 +      (hexl-mode--minor-mode-p, hexl-mode--setq-local): New funs.
 +      (hexl-mode, hexl-follow-line, hexl-activate-ruler):
 +      Use them to set local vars (bug#7846).
 +      (hexl-mode-exit): Use hexl-mode--old-var-vals to restore state.
 +      (hexl-backward-short, hexl-backward-word, hexl-scroll-down)
 +      (hexl-scroll-up, hexl-end-of-1k-page, hexl-end-of-512b-page): Simplify.
  
 -      * vc.el (vc-default-log-edit-mode): New function.
 +      * vc/smerge-mode.el: Resolve comment conflicts more aggressively.
 +      (smerge-resolve--normalize-re): New var.
 +      (smerge-resolve--extract-comment, smerge-resolve--normalize): New funs.
 +      (smerge-resolve): Use them.
 +      * newcomment.el (comment-only-p): New function.
 +      (comment-or-uncomment-region): Use it.
  
 -      * vc-dispatcher.el (vc-log-edit): Add a mode argument, pass it to
 -      log-edit.
 +2011-01-14  Brent Goodrick  <bgoodr@gmail.com>  (tiny change)
  
 -      Support for shelving snapshots and for showing shelves.
 -      * vc-bzr.el (vc-bzr-shelve-show, vc-bzr-shelve-show-at-point)
 -      (vc-bzr-shelve-apply-and-keep-at-point, vc-bzr-shelve-snapshot):
 -      New functions.
 -      (vc-bzr-shelve-map, vc-bzr-shelve-menu-map)
 -      (vc-bzr-extra-menu-map): Map them.
 +      * abbrev.el (prepare-abbrev-list-buffer): If listing local abbrev
 +      table, get the value before switching to the output buffer.  (Bug#7733)
  
 -2010-10-30  Michael Albinus  <michael.albinus@gmx.de>
 +2011-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp.el (tramp-handle-insert-file-contents): For root,
 -      preserve owner and group when editing files.  (Bug#7289)
 -
 -2010-10-29  Glenn Morris  <rgm@gnu.org>
 -
 -      * speedbar.el (speedbar-mode):
 -      * play/fortune.el (fortune-in-buffer, fortune):
 -      * play/gomoku.el (gomoku-mode):
 -      * play/landmark.el (lm-mode):
 -      * textmodes/bibtex.el (bibtex-validate, bibtex-validate-globally):
 -      Replace inappropriate uses of toggle-read-only.  (Bug#7292)
 -
 -2010-10-28  Glenn Morris  <rgm@gnu.org>
 -
 -      * select.el (x-selection): Mark it as an obsolete alias.
 -
 -2010-10-27  Aaron S. Hawley  <aaron.s.hawley@gmail.com>
 +      * progmodes/python.el (python-mode): Don't impose font-lock (bug#3628).
  
 -      * add-log.el (find-change-log): Use derived-mode-p rather than
 -      major-mode (bug#7284).
 +2011-01-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * emulation/cua-base.el (cua--init-keymaps):
 +      Remap exchange-point-and-mark in cua-global-keymap.
 +
 +2011-01-14  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * progmodes/sh-script.el (sh-other-keywords): Add ZSH's foreach
 +      loop keyword.
 +
 +2011-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/easymenu.el: Add :enable (bug#7754), and obey :label.
 +      Require CL.
 +      (easy-menu-create-menu, easy-menu-convert-item-1):
 +      Use :label rather than nil for labels.  Use `case'.
 +      Add :enable as alias for :active.
 +      (easy-menu-binding): Obey :label.
 +
 +2011-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use run-mode-hooks for major mode hooks (bug#513).
 +      * textmodes/reftex-toc.el (reftex-toc-mode-map):
 +      Rename from reftex-toc-map.
 +      (reftex-toc-mode): Use define-derived-mode.
 +      * textmodes/reftex-sel.el (reftex-select-shared-map): New map.
 +      (reftex-select-label-mode-map, reftex-select-bib-mode-map):
 +      Rename from reftex-select-(label|bib)-map.  Move init into declaration.
 +      (reftex-select-label-mode, reftex-select-bib-mode):
 +      Use define-derived-mode.
 +      * textmodes/reftex-index.el (reftex-index-phrases-mode-map)
 +      (reftex-index-mode-map): Rename from reftex-index(-phrases)-map.
 +      Move init into delcaration.
 +      (reftex-index-mode, reftex-index-phrases-mode):
 +      Use define-derived-mode.
 +      * speedbar.el (speedbar-mode-syntax-table): Renaqme from
 +      speedbar-syntax-table.  Move init into declaration.
 +      (speedbar-mode-map): Rename from speedbar-key-map.
 +      Move init into declaration.
 +      (speedbar-file-key-map): Move init into declaration.
 +      (speedbar-mode): Use define-derived-mode.
 +      * recentf.el (recentf-mode): Don't run hook (or message) redundantly.
 +      * net/rcirc.el (rcirc-mode): Use run-mode-hooks.
 +      * emacs-lisp/chart.el (chart-mode-map): Rename from chart-map.
 +      (chart-face-list): Move initialization into declaration.
 +      (chart-mode): Use define-derived-mode.
 +      * calculator.el (calculator-mode-map): Move init into declaration.
 +      (calculator-mode): Use define-derived-mode.
 +
 +      * mail/mail-utils.el (mail-strip-quoted-names): Make the regexp code
 +      work for nested comments.
 +
 +      * progmodes/prolog.el: Use syntax-propertize.  Further code cleanup.
 +      (prolog-use-prolog-tokenizer-flag): Change default when
 +      syntax-propertize can be used.
 +      (prolog-syntax-propertize-function): New var.
 +      (prolog-mode-variables): Move make-local-variable into `set'.
 +      Don't make comment-column local since we don't set it.
 +      Set comment-add (as it was in previous prolog.el).  Use dolist.
 +      Set syntax-propertize-function.
 +      (prolog-mode, prolog-inferior-mode):
 +      Call prolog(-inferior)-menu directly, not through the mode-hook.
 +      (prolog-buffer-module, prolog-indent-level)
 +      (prolog-paren-is-the-first-on-line-p, prolog-paren-balance)
 +      (prolog-comment-limits, prolog-goto-comment-column):
 +      Use line-(end|beginning)-position.
 +      (prolog-build-prolog-command): Tighten up regexp.
 +      (prolog-consult-compile): Move make-local-variable into `set'.
 +      (prolog-consult-compile-filter, prolog-goto-next-paren)
 +      (prolog-help-on-predicate, prolog-clause-info)
 +      (prolog-mark-predicate): Don't let+setq.
 +      (prolog-indent-line): Use indent-line-to.
 +      Only call prolog-goto-comment-column if necessary.
 +      (prolog-indent-level): Use bobp.
 +      (prolog-first-pos-on-line): Remove, not used any more.
 +      (prolog-in-string-or-comment): Use syntax-ppss if available.
 +      (prolog-help-on-predicate): Use read-string.
 +      (prolog-goto-predicate-info): Simplify.
 +      (prolog-read-predicate): Use `default' rather than `initial'.
 +      (prolog-temporary-file): Use make-temp-file to close a security hole.
 +      (prolog-toggle-sicstus-sd): New command.
 +      (prolog-electric-underscore, prolog-variables-to-anonymous):
 +      Use dynamic-scoping as it was meant.
 +      (prolog-menu): Move menu definitions to top-level.
 +      Use a toggle-button for Sicstus's source debugger.
 +      Change "Code" to the more usual "Prolog", and hence change "Prolog"
 +      to "System".
 +      (prolog-inferior-menu): Reuse prolog-menu's help menu.
 +      Move other menu definition to top-level.
 +
 +2011-01-13  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * doc-view.el (doc-view-open-text): Use meaningful text buffer
 +      name.  Keep original document's directory as default-directory
 +      (bug#6446).
 +      (doc-view-initiate-display): Fall back to normal mode when
 +      doc-view-mode cannot be enabled, also when extracting the document
 +      text into a separate buffer (bug#6446).
 +
 +      * simple.el (shell-command): Don't error out if shell command
 +      buffer contains text with non-nil read-only property when erasing
 +      the buffer.
 +
 +2011-01-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * ido.el (ido-may-cache-directory): Move "too-big" check later.
 +      (ido-next-match, ido-prev-match): Fix stray reordering of matching
 +      items when cycling through the matches.
 +
 +2011-01-13  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * dired-x.el (dired-omit-verbose): New defcustom that allows
 +      disabling the omit messages.
 +      (dired-omit-expunge): Use it.
 +
 +2011-01-13  Christian Ohler  <ohler@gnu.org>
 +
 +      * emacs-lisp/ert.el, emacs-lisp/ert-x.el: New files.
  
 -2010-10-27  Glenn Morris  <rgm@gnu.org>
 +2011-01-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * menu-bar.el (menu-bar-files-menu): Make it into an actual alias,
 -      rather than just an unused variable that inherits from the real one.
 +      * font-lock.el (font-lock-verbose): Default to nil.
  
 -2010-10-23  Michael McNamara  <mac@mail.brushroad.com>
 +2011-01-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * verilog-mode.el (verilog-directive-re): Make this variable
 -      auto-built for efficiency of execution and updating.
 -      (verilog-extended-complete-re): Support 'pure' fucntion & task
 -      declarations (these have no bodies).
 -      (verilog-beg-of-statement): General cleanup to enable support of
 -      'pure' fucntion & task declarations (these have no bodies).
 -      These efforts together fix Verilog bug210 from veripool; which was also
 -      noticed by Steve Pearlmutter.
 -      (verilog-directive-re, verilog-directive-begin, verilog-indent-re)
 -      (verilog-directive-nest-re, verilog-set-auto-endcomments):
 -      Support `elsif.  Reported by Shankar Giri.
 -      (verilog-forward-ws&directives, verilog-in-attribute-p): Fixes for
 -      attribute handling for lining up declarations and assignments.
 -      (verilog-beg-of-statement-1): Fix issue where continued declaration
 -      is indented differently if it is after a begin..end clock.
 -      (verilog-in-attribute-p, verilog-skip-backward-comments)
 -      (verilog-skip-forward-comment-p): Support proper treatment of
 -      attributes by indent code.  Reported by Jeff Steele.
 -      (verilog-in-directive-p): Fix comment to correctly describe function.
 -      (verilog-backward-up-list, verilog-in-struct-region-p)
 -      (verilog-backward-token, verilog-in-struct-p)
 -      (verilog-in-coverage-p, verilog-do-indent)
 -      (verilog-pretty-declarations): Use verilog-backward-up-list as
 -      wrapper around backward-up-list inorder to properly skip comments.
 -      Reported by David Rogoff.
 -      (verilog-property-re, verilog-endcomment-reason-re)
 -      (verilog-beg-of-statement, verilog-set-auto-endcomments)
 -      (verilog-calc-1 ): Fix for assert a; else b; indentation (new form
 -      of if).  Reported by Max Bjurling and
 -      (verilog-calc-1): Fix for clocking block in modport
 -      declaration.  Reported by Brian Hunter.
 +      * simple.el (sendmail-user-agent-compose): Move to sendmail.el.
 +      (compose-mail): New arg RETURN-ACTION.
 +      (compose-mail-other-window, compose-mail-other-frame): Likewise.
  
 -2010-10-23  Wilson Snyder  <wsnyder@wsnyder.org>
 +      * mail/sendmail.el (mail-return-action): New var.
 +      (mail-mode): Make it buffer-local.
 +      (mail-bury): Obey it.  Move special Rmail window handling to
 +      rmail-mail-return.
 +      (mail, mail-setup): New arg RETURN-ACTION.
 +      (sendmail-user-agent-compose): Move from simple.el.
  
 -      * verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
 -      (verilog-gate-keywords, verilog-read-sub-decls)
 -      (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios)
 -      (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support
 -      AUTOINST for gate primitives, bug284.  Reported by Mark Johnson.
 -      (verilog-read-decls): Fix spaces in V2K module parameters causing
 -      mis-identification as interfaces, bug287.
 -      (verilog-read-decls): Fix not treating "parameter string" as a
 -      parameter in AUTOINSTPARAM.
 -      (verilog-read-always-signals-recurse, verilog-read-decls): Fix not
 -      treating `elsif similar to `endif inside AUTOSENSE.
 -      (verilog-do-indent): Implement correct automatic or static task or
 -      function end comment highlight.  Reported by Steve Pearlmutter.
 -      (verilog-font-lock-keywords-2): Fix highlighting of single
 -      character pins, bug264.  Reported by Michael Laajanen.
 -      (verilog-auto-inst, verilog-read-decls, verilog-read-sub-decls)
 -      (verilog-read-sub-decls-in-interfaced, verilog-read-sub-decls-sig)
 -      (verilog-subdecls-get-interfaced, verilog-subdecls-new):
 -      Support interfaces with AUTOINST, bug270.  Reported by Luis Gutierrez.
 -      (verilog-pretty-expr): Fix interactive arguments, bug272.
 -      Reported by Mark Johnson.
 -      (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp):
 -      Add 'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF,
 -      bug269.  Suggested by Gary Delp.
 -      (verilog-mode-map, verilog-preprocess, verilog-preprocess-history)
 -      (verilog-preprocessor, verilog-set-compile-command):
 -      Create verilog-preprocess and verilog-preprocessor to show
 -      preprocessed output.
 -      (verilog-get-beg-of-line, verilog-get-end-of-line)
 -      (verilog-modi-file-or-buffer, verilog-modi-name)
 -      (verilog-modi-point, verilog-within-string): Move defmacro's
 -      before first use to avoid warning.  Reported by Steve Pearlmutter.
 -      (verilog-colorize-buffer, verilog-colorize-include-files-buffer)
 -      (verilog-colorize-region, verilog-highlight-buffer)
 -      (verilog-highlight-includes, verilog-highlight-modules)
 -      (verilog-highlight-region, verilog-mode): Rename colorize to
 -      highlight to match other packages.  Disable module highlighting,
 -      as received speed complaints, reenable for experimentation only
 -      using new verilog-highlight-modules.
 -      (verilog-read-decls): Fix regexp stack overflow in very large
 -      AUTO_TEMPLATEs, bug250.
 -      (verilog-auto, verilog-delete-auto, verilog-save-buffer-state)
 -      (verilog-scan): Create verilog-save-buffer-state to standardize
 -      making insignificant changes that shouldn't call hooks.
 -      (verilog-save-no-change-functions, verilog-save-scan-cache)
 -      (verilog-scan, verilog-scan-cache-ok-p, verilog-scan-region):
 -      Create verilog-save-no-change-functions to wrap verilog-scan
 -      preservation, and fix to work with nested preserved calls.
 -      (verilog-auto-inst, verilog-auto-inst-dot-name): Support .name
 -      port syntax for AUTOWIRE, and with new verilog-auto-inst-dot-name
 -      generate .name with AUTOINST, bug245.  Suggested by David Rogoff.
 -      (verilog-submit-bug-report): Update variable list to be complete.
 -      (verilog-auto, verilog-colorize-region): Fix AUTO expansion
 -      breaking on-the-fly font-locking.
 -      (verilog-colorize-buffer, verilog-colorize-include-files)
 -      (verilog-colorize-include-files-buffer, verilog-colorize-region)
 -      (verilog-load-file-at-mouse, verilog-load-file-at-point)
 -      (verilog-mode, verilog-read-inst-module-matcher): With point on a
 -      AUTOINST cell instance name, middle mouse button now finds-file on
 -      it.  Suggested by Brad Dobbie.
 -      (verilog-alw-get-temps, verilog-auto-reset)
 -      (verilog-auto-sense-sigs, verilog-read-always-signals)
 -      (verilog-read-always-signals-recurse): Fix loop indexes being
 -      AUTORESET.  AUTORESET now assumes any variables in the
 -      initialization section of a for() should be ignored.
 -      Reported by Dan Dever.
 -      (verilog-error-font-lock-keywords)
 -      (verilog-error-regexp-emacs-alist)
 -      (verilog-error-regexp-xemacs-alist): Fix error detection of
 -      Cadence HAL, reported by David Asher.  Repair drift between the
 -      three similar error variables.
 -      (verilog-modi-lookup, verilog-modi-lookup-cache)
 -      (verilog-modi-lookup-last-current, verilog-modi-lookup-last-mod)
 -      (verilog-modi-lookup-last-modi, verilog-modi-lookup-last-tick):
 -      Fix slow verilog-auto expansion on very large files.
 -      (verilog-read-sub-decls-expr, verilog-read-sub-decls-line):
 -      Fix AUTOOUTPUT treating "1*2" as a signal name in submodule connection
 -      "{1*2{...".  Broke in last revision.
 -      (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting
 -      submodule connections with replications "{#{a},#{b}}".
 +      * mail/rmail.el (rmail-mail-return): New function.
 +      (rmail-start-mail): Pass it to compose-mail.
  
 -2010-10-23  Glenn Morris  <rgm@gnu.org>
 +2011-01-12  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * comint.el (comint-password-prompt-regexp):
 -      Match "enter the password".  (Bug#7224)
 +      * menu-bar.el (menu-bar-custom-menu): Tweak Mule and Customize
 +      menus.  Add menu item for customize-themes.
  
 -2010-10-22  Juanma Barranquero  <lekktu@gmail.com>
 +      * cus-theme.el (customize-themes):
 +      * emacs-lisp/package.el (package--list-packages):
 +      Use switch-to-buffer.
  
 -      * progmodes/dcl-mode.el (dcl-electric-reindent-regexps):
 -      Fix typo in docstring.
 +2011-01-11  Johan Bockgård  <bojohan@gnu.org>
  
 -2010-10-21  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/unsafep.el (unsafep): Handle backquoted forms.
  
 -      * net/tramp.el (tramp-get-inline-coding): Return `nil' in case of
 -      errors.
 +2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/trampver.el: Update release number.
 +      * progmodes/prolog.el: Fix up coding convention and such.
 +      (prolog-indent-width): Use the same default as in
 +      previous prolog.el rather than tab-width which depends on which buffer
 +      is current when the file is loaded.
 +      (prolog-electric-newline-flag): Only enable if electric-indent-mode
 +      is not available.
 +      (prolog-emacs): Remove.  Use (featurep 'xemacs) instead.
 +      (prolog-known-systems): Remove.
 +      (prolog-mode-syntax-table, prolog-inferior-mode-map):
 +      Move initialization into declaration.
 +      (prolog-mode-map): Move initialization into declaration.
 +      Remove system-specific mode-map vars, since they referred to the same
 +      keymap anyway.
 +      (prolog-mode-variables): Obey the user's preference w.r.t
 +      adaptive-fill-mode.  Prefer symbol-value to `eval'.
 +      (prolog-mode-keybindings-edit): Add compatibility bindings.
 +      (prolog-mode): Use define-derived-mode.  Don't handle mercury here.
 +      (mercury-mode-map): New var.
 +      (mercury-mode, prolog-inferior-mode): Use define-derived-mode.
 +      (prolog-ensure-process, prolog-process-insert-string)
 +      (prolog-consult-compile): Use with-current-buffer.
 +      (prolog-guess-fill-prefix): Simplify data flow.
 +      (prolog-replace-in-string): New function to use instead of
 +      replace-in-string.
 +      (prolog-enable-sicstus-sd): Don't abuse `eval'.
 +      (prolog-uncomment-region): Use `uncomment-region' when available.
 +      (prolog-electric-colon, prolog-electric-dash): Use `eolp'.
 +      (prolog-int-to-char, prolog-char-to-int): New functions to use instead
 +      of int-to-char and char-to-int.
 +      (prolog-mode-hook, prolog-inferior-mode-hook): Don't force font-lock.
 +
 +2011-01-11  Stefan Bruda  <stefan@bruda.ca>
 +
 +      * progmodes/prolog.el: Replace by a whole new file.
  
 -2010-10-20  Kenichi Handa  <handa@m17n.org>
 +2011-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * face-remap.el (text-scale-adjust): Call read-event with a proper
 -      prompt.
 +      * subr.el (eval-after-load): Fix timing for features (bug#7769).
 +      (declare-function, undefined, insert-for-yank)
 +      (replace-regexp-in-string): Follow checkdoc's recommendations.
  
 -2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
 +2011-01-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp.el (tramp-do-file-attributes-with-stat)
 -      (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in
 -      order to make stat results a float.  Patch by Andreas Schwab
 -      <schwab@linux-m68k.org>.
 +      * calendar/diary-lib.el (diary-mode): Refresh *Calendar* after
 +      refreshing the diary buffer.
  
 -2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-10  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -      * repeat.el (repeat): Use read-key (bug#6256).
 +      * allout.el: Add 2011 to the file copyright.
 +      (allout-encrypt-string): Prevent encryption from adding an extra
 +      newline at the end of the topic body.
 +      (allout-version): Increment to 2.3.
  
 -2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +2011-01-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * emacs-lisp/unsafep.el: Don't mark functions that display
 -      messages as safe.  Suggested by Johan Bockgård.
 +      * net/dbus.el (dbus-unregister-service): Complete doc.
 +      Fix call of dbus-error signal.
 +      (dbus-register-property): Use `dont-register' keyword.
  
 -2010-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-10  Jan Moringen  <jan.moringen@uni-bielefeld.de>
  
 -      * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset):
 -      Turn comments into docstrings.
 +      * net/dbus.el (dbus-unregister-service): Translate returned
 +      integer into a symbol.
 +      (dbus-register-property): Use `dbus-register-service' to do the
 +      name registration.
  
 -      * minibuffer.el (completion--replace): Move point where it belongs
 -      when there's a common suffix (bug#7215).
 +2011-01-09  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-15  Michael Albinus  <michael.albinus@gmx.de>
 +      * progmodes/idlw-help.el (idlwave-help-link): Inherit from link face.
 +      Suggested by Joakim Verona.
  
 -      * net/tramp.el (tramp-open-connection-setup-interactive-shell):
 -      Suppress expansion of tabs to spaces.  Reported by Dale Sedivec
 -      <dale@codefu.org>.
 +      * comint.el (comint-highlight-prompt): Inherit minibuffer-prompt.
  
 -2010-10-15  Kenichi Handa  <handa@m17n.org>
 +      * wid-edit.el (visibility): Replace :on-image and :off-image
 +      widget properties with :on-glyph and :off-glyph, for consistency
 +      with the `visibility' widget.
 +      (widget-toggle-value-create, widget-visibility-value-create):
 +      Merge into a single function `widget-toggle-value-create'.
  
 -      * international/characters.el: Add category '|' (word breakable)
 -      to fullwidth characters.
 +      * cus-edit.el (custom-variable-value-create, custom-visibility)
 +      (custom-face-edit-value-create, custom-face-value-create):
 +      Replace :on-image and :off-image widget properties with :on-glyph and
 +      :off-glyph, for consistency with the `visibility' widget.
  
 -2010-10-14  Kenichi Handa  <handa@m17n.org>
 +2011-01-09  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      * mail/rmail.el (rmail-show-message-1): Catch an error of
 -      base64-decode-region and just show an error message (bug#7165).
 +      * net/ldap.el (ldap-search-internal): Don't use eval.
  
 -      * ps-mule.el (ps-mule-font-spec-list): Delete it.  Not used anymore.
 -      (ps-mule-begin-job): Fix for the case that only ENCODING is set in
 -      a font-spec (bug#7197).
 +2011-01-09  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-13  Glenn Morris  <rgm@gnu.org>
 +      * subr.el (read-char-choice): Use read-key.
  
 -      * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
 +      * custom.el (custom-safe-themes): Rename from
 +      custom-safe-theme-files.  Add :risky tag.
 +      (load-theme, custom-theme-load-confirm): Save sha1 hashes to
 +      custom-safe-themes, not filenames.  Suggested by Stefan Monnier.
  
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +2011-01-09  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * international/mule.el (define-coding-system):
 -      * international/titdic-cnv.el (quail-cxterm-package-ext-info):
 -      * composite.el (compose-region): Fix typo in docstring.
 +      * tool-bar.el (tool-bar-setup): Remove Help button.  Remove label
 +      from Search and add a label to Undo.
  
 -2010-10-10  Jan Djärv  <jan.h.d@swipnet.se>
 +      * vc/vc-dir.el (vc-dir-tool-bar-map): Rearrange, removing
 +      inappropriate buttons and adding :vert-only tags.
  
 -      * term/ns-win.el (ns-right-alternate-modifier): New defvar.
 -      (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
 -      (mac-right-option-modifier): New alias for ns-right-option-modifier.
 +      * progmodes/compile.el (compilation-mode-tool-bar-map): Adjust to
 +      removal of Help tool-bar button.  Remove Undo button for space.
  
 -      * cus-start.el (all): ns-right-alternate-modifier is new.
 +      * info.el (info-tool-bar-map): Add :vert-only tags.
  
 -2010-10-10  Andreas Schwab  <schwab@linux-m68k.org>
 +2011-01-08  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * Makefile.in (ELCFILES): Update.
 +      * doc-view.el (doc-view-mode-p): Check for png or imagemagick
 +      image backend support.  Either of them is fine.
  
 -2010-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2011-01-08  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * emacs-lisp/lisp.el (lisp-completion-at-point):
 -      Use emacs-lisp-mode-syntax-table for the whole function.
 +      * subr.el (y-or-n-p): Doc fix.
  
 -2010-10-09  Richard Sharman  <richard_sharman@mitel.com>  (tiny change)
 +      * custom.el (custom-safe-theme-files): New defcustom.
 +      (custom-theme-load-confirm): New function.
 +      (load-theme): Load theme using `load', confirming with
 +      custom-theme-load-confirm if necessary.
  
 -      * progmodes/gdb-ui.el (gdb-mouse-toggle-breakpoint-margin)
 -      (gdb-mouse-toggle-breakpoint-fringe): Correct regexp to
 -      work when breakpoint number exceeds nine.
 +      * subr.el (read-char-choice): New function, factored out from
 +      dired-query and hack-local-variables-confirm.
  
 -2010-10-05  David Koppelman  <koppel@ece.lsu.edu>
 +      * dired-aux.el (dired-query):
 +      * files.el (hack-local-variables-confirm): Use it.
  
 -      * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
 -      instead of font-lock-mode before adding keywords.
 -      Remove hi-lock-mode off code.  Remove inhibit hack.
 -      (hi-lock-set-pattern): Only add keywords if font-lock-fontified
 -      non-nil; removed hook inhibit hack.
 +      * dired-aux.el (dired-compress-file):
 +      * files.el (abort-if-file-too-large, find-alternate-file)
 +      (set-visited-file-name, write-file, backup-buffer)
 +      (basic-save-buffer, basic-save-buffer-2, save-some-buffers)
 +      (delete-directory, revert-buffer, recover-file, kill-buffer-ask):
 +      Use new format string args for y-or-n-p and yes-or-no-p.
  
 -2010-10-09  Glenn Morris  <rgm@gnu.org>
 +2011-01-08  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
 -      (load-path-shadows-find): ... to this.
 -      (list-load-path-shadows): Update for above change.
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist)
 +      [gcc-include]: Tighten file name match, add match for column
 +      number.  (Bug#7806)
 +      [gnu]: Remove unused group.
  
 -      * mail/mail-utils.el (mail-mbox-from): Also try return-path.
 +2011-01-08  Glenn Morris  <rgm@gnu.org>
  
 -2010-10-08  Glenn Morris  <rgm@gnu.org>
 +      * makefile.w32-in (EMACSOPT): Add --no-site-lisp.
  
 -      * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
 +      * makefile.w32-in (EMACSOPT): -batch implies --no-init-file.
  
 -      * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
 -      (shadows-compare-text-p): Make it an obsolete alias for...
 -      (load-path-shadows-compare-text): ... new name.
 -      (find-emacs-lisp-shadows): Update for above name change.
 -      (load-path-shadows-same-file-or-nonexistent): New name for the old
 -      shadow-same-file-or-nonexistent.
 +2011-01-07  Sam Steingold  <sds@gnu.org>
  
 -2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +      * w32-fns.el (w32-shell-name): Use `shell-file-name' instead of
 +      the `explicit-shell-file-name' because that is the
 +      non-interactive shell.
  
 -      * minibuffer.el (completion--some, completion--do-completion)
 -      (minibuffer-complete-and-exit, minibuffer-completion-help)
 -      (completion-basic-try-completion)
 -      (completion-basic-all-completions)
 -      (completion-pcm--find-all-completions): Use lexical-let to
 -      avoid some false matches in variable completion (Bug#7056)
 +2011-01-07  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-10-03  Olof Ohlsson Sax  <olof.ohlsson.sax@gmail.com>  (tiny change)
 +      * subr.el (y-or-n-p): Accept format string args.
  
 -      * vc-svn.el (vc-svn-merge-news): Use --non-interactive.  (Bug#7152)
 +2011-01-07  Glenn Morris  <rgm@gnu.org>
  
 -2010-10-03  Leo  <sdl.web@gmail.com>
 +      * Makefile.in (EMACSOPT): Add --no-site-lisp.
  
 -      * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
 -      return non-nil if the file exists (Bug#7090).
 +2011-01-06  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -2010-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * allout.el (allout-back-to-current-heading): Ensure return to
 +      the visible containing topic, rather than a collapsed one.
 +      (allout-view-change-hook): Remove hook that was deprecated long ago.
 +      (allout-exposure-change-hook): Remove documentation remarks
 +      concerning removed allout-view-change-hook.
 +      (allout-flag-region): Remove invocation of and documentation
 +      remarks concerning allout-view-change-hook.
  
 -      * minibuffer.el (completion--replace):
 -      Better preserve markers (bug#7138).
 +2011-01-06  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-29  Juanma Barranquero  <lekktu@gmail.com>
 +      * vc/vc-bzr.el (vc-bzr-annotate-command, vc-bzr-annotate-time)
 +      (vc-bzr-annotate-extract-revision-at-line):
 +      Handle authors with embedded spaces.  (Bug#7792)
  
 -      * server.el (server-process-filter): Doc fix.
 +2011-01-05  Tassilo Horn  <tassilo@member.fsf.org>
  
 -2010-09-27  Drew Adams  <drew.adams@oracle.com>
 +      * doc-view.el (doc-view-image-width): New variable.
 +      (doc-view-enlarge, doc-view-insert-image): Prefer imagemagick
 +      backend for PNG images, and do dynamic rescaling instead of
 +      reconverting the whole doc.
  
 -      * dired.el (dired-save-positions): Doc fix.  (Bug#7119)
 +2011-01-05  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-27  Andreas Schwab  <schwab@linux-m68k.org>
 +      * emacs-lisp/rx.el (rx-repeat): Replace CL function.
  
 -      * Makefile.in (ELCFILES): Update.
 +2011-01-04  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -      * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
 -      Avoid infinite recursion on erroneous lambda form.  (Bug#7114)
 +      * allout.el: Reconcile with changes in line movement behavior for
 +      long text lines that cross more than a single physical window
 +      line, ie when truncate-lines is nil.
 +      (allout-next-visible-heading): Provide for change in line-move
 +      behavior on long lines when truncate-lines is nil.  In that case,
 +      line-move can wind up on the same textual line when it moves to
 +      the next window line, and moving to the bullet position after the
 +      move yields zero advancement.  Add logic to detect and compensate
 +      for the lack of progress.
 +      (allout-current-topic-collapsed-p): move-end-of-line respect for
 +      field boundaries is different when operating with body lines
 +      shorter than window width versus ones greater than window width,
 +      which can yield false negatives in this function.  Avoid
 +      difference by applying move-end-of-line while field-text-motion is
 +      inhibited.
  
 -2010-09-27  Kenichi Handa  <handa@m17n.org>
 +2011-01-04  Glenn Morris  <rgm@gnu.org>
  
 -      * tar-mode.el (tar-header-block-tokenize): Decode filenames in
 -      "ustar" format.
 +      * textmodes/rst.el (rst-compile-toolsets):
 +      Add pdf and s5 to option alist.
  
 -2010-09-27  Kenichi Handa  <handa@m17n.org>
 +2011-01-04  Jan Moringen  <jan.moringen@uni-bielefeld.de>
  
 -      * international/mule.el (define-coding-system): Docstring fixed.
 +      * net/dbus.el (dbus-register-property): Add optional parameter
 +      dont-register-service.  Updated docstring accordingly.
  
 -      * international/mule-diag.el (describe-character-set): Use princ
 -      with proper print-length and print-level instead of insert.
 +2011-01-04  Andreas Schwab  <schwab@linux-m68k.org>
  
 -2010-09-26  Juanma Barranquero  <lekktu@gmail.com>
 +      * textmodes/rst.el (rst-compile-pdf-preview)
 +      (rst-compile-slides-preview): Remove extra line.
  
 -      * window.el (walk-windows): Doc fix (bug#7105).
 +2011-01-04  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-23  Glenn Morris  <rgm@gnu.org>
 +      * textmodes/rst.el (rst-compile-toolsets): Make it a defcustom.
 +      Add `pdf' and `s5' entries.  Use `prog.py' if found, otherwise
 +      default to `prog' without a .py extension.
 +      (rst-compile-pdf-preview, rst-compile-slides-preview):
 +      Use program names from rst-compile-toolsets, rather than hard-coding.
 +      (rst-portable-mark-active-p): Fix presumed typo.
  
 -      * isearch.el (isearch-lazy-highlight-cleanup)
 -      (isearch-lazy-highlight-initial-delay)
 -      (isearch-lazy-highlight-interval)
 -      (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face):
 -      * net/net-utils.el (ipconfig-program-options):
 -      Move aliases to options before the associated definitions.
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * term/w32-win.el (dynamic-library-alist): Set up correctly for
 +      libpng versions both before and after 1.4.0.  (Bug#7716)
  
 -      * newcomment.el (comment-normalize-vars): Better test validity of
 -      comment-end-skip.
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * time.el (display-time-mode): Mention display-time-interval in
 +      the doc string.  (Bug#7713)
  
 -      * emacs-lisp/float-sup.el (float-pi): New name for `pi'.
 -      (float-e): New name for `e'.
 -      (degrees-to-radians, radians-to-degrees):
 -      * calendar/solar.el (solar-longitude):
 -      * calculator.el (calculator-registers, calculator-funcall):
 -      * textmodes/artist.el (artist-spray-random-points):
 -      * play/bubbles.el (bubbles--initialize-images): Use new names.
 +2011-01-02  Kenichi Handa  <handa@m17n.org>
  
 -2010-09-19  Eric M. Ludlam  <zappo@gnu.org>
 +      * mail/rmailmm.el (rmail-mime-parse): Perform parsing in
 +      condition-case and return an error message string if something
 +      goes wrong.
 +      (rmail-show-mime): Adjust for the above change.  Insert the
 +      header by rmail-mime-insert-header.
  
 -      Update to CEDET 1.0's version of EIEIO.
 +2011-01-02  Kenichi Handa  <handa@m17n.org>
  
 -      * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key):
 -      New function.
 -      (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it.
 -      (eieio-default-eval-maybe): Eval val instead of unquoting only.
 -      (class-precedence-list): If class is nil, return nil.
 -      (eieio-generic-call): If class of first input arg is nil, don't
 -      look up static methods, and do check for primary methods.
 -      (initialize-instance): See if the default needs to be evaluated
 -      during the constructor.
 -      (eieio-perform-slot-validation-for-default): Don't do the check
 -      for values that will eventually be evaluated.
 -      (eieio-eval-default-p): New function.
 -      (eieio-default-eval-maybe): Use it.
 +      * mail/rmailmm.el: New key bindings for rmail-mime-next-item,
 +      rmail-mime-previous-item, and rmail-mime-toggle-hidden.
 +      (rmail-mime-mbox-buffer)
 +      (rmail-mime-view-buffer, rmail-mime-coding-system): New variables.
 +      (rmail-mime-entity): Argument changed.  All codes handling an
 +      entity object are changed.
 +      (rmail-mime-entity-header, rmail-mime-entity-body): Adjust for
 +      the above change.
 +      (rmail-mime-entity-children, rmail-mime-entity-handler)
 +      (rmail-mime-entity-tagline): New functions.
 +      (rmail-mime-message-p): New function.
 +      (rmail-mime-save): Bind rmail-mime-mbox-buffer.
 +      (rmail-mime-entity-segment, rmail-mime-next-item)
 +      (rmail-mime-previous-item, rmail-mime-shown-mode)
 +      (rmail-mime-hidden-mode, rmail-mime-raw-mode)
 +      (rmail-mime-toggle-raw, rmail-mime-toggle-hidden)
 +      (rmail-mime-insert-tagline, rmail-mime-insert-header):
 +      New functions.
 +      (rmail-mime-text-handler): Call rmail-mime-insert-text.
 +      (rmail-mime-insert-decoded-text): New function.
 +      (rmail-mime-insert-text): Call rmail-mime-insert-decoded-text.
 +      (rmail-mime-insert-image): Argument changed.  Caller changed.
 +      (rmail-mime-image): Call rmail-mime-toggle-hidden.
 +      (rmail-mime-set-bulk-data): New function.
 +      (rmail-mime-insert-bulk): Argument changed.
 +      (rmail-mime-multipart-handler): Return t.
 +      (rmail-mime-process-multipart): Argument changed.
 +      Handle "multipart/alternative" here.
 +      (rmail-mime-process): Argument changed.
 +      (rmail-mime-parse): Bind rmail-mime-mbox-buffer.
 +      (rmail-mime-insert): Argument changed.  Handle raw display mode.
 +      (rmail-mime): Argument changed.  Handle toggling of raw display
 +      mode.
 +      (rmail-show-mime): Bind rmail-mime-mbox-buffer and
 +      rmail-mime-view-buffer.
 +      (rmail-insert-mime-forwarded-message): Likewise.
 +      (rmail-search-mime-message): Likewise.  Don't bind rmail-buffer.
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +      * mail/rmail.el (rmail-show-message-1): If rmail-enable-mime is
 +      non-nil, handle the header in rmail-show-mime-function.
  
 -      * emacs-lisp/eieio.el (eieio-defclass): Allow :c3
 -      method-invocation-order.
 -      (eieio-c3-candidate, eieio-c3-merge-lists): New functions.
 -      (eieio-class-precedence-dfs): Compute class precedence list using
 -      dfs algorithm.
 -      (eieio-class-precedence-bfs): Compute class precedence list using
 -      bfs algorithm.
 -      (eieio-class-precedence-c3): Compute class precedence list using
 -      c3 algorithm.
 -      (class-precedence-list): New function.
 -      (eieiomt-method-list, eieiomt-sym-optimize): Use it.
 -      (inconsistent-class-hierarchy): New error symbol.
 -      (call-next-method): Stow the replacement argument list for future
 -      call-next-method invocations.
 +2011-01-02  Leo  <sdl.web@gmail.com>
  
 -2010-09-15  Glenn Morris  <rgm@gnu.org>
 +      * help-fns.el (describe-variable): Fix previous change.
  
 -      * calendar/appt.el (appt-check): If not displaying the diary,
 -      use (diary 1) to only get the entries we need.
 -      (appt-make-list): Sort diary-list-entries, if we cannot guarantee
 -      that it is in day order.  (Bug#7019)
 +2011-01-02  Juri Linkov  <juri@jurta.org>
  
 -      * calendar/appt.el (appt-check): Rather than showing the diary,
 -      just turn off invisible display, and only if needed.
 +      * isearch.el (isearch-lazy-highlight-error): New variable.
 +      (isearch-lazy-highlight-new-loop): Compare `isearch-error' and
 +      `isearch-lazy-highlight-error'.  Set `isearch-lazy-highlight-error'
 +      to the current value of `isearch-error' (Bug#7468).
  
 -      * calendar/diary-lib.el (diary-list-entries): Doc fix.  (Bug#7019)
 +2011-01-02  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * help-fns.el (describe-variable): Don't emit trailing whitespace
 +      (Bug#7511).
  
 -      * emacs-lisp/byte-run.el (set-advertised-calling-convention):
 -      Add `when' argument.  Update callers.
 +2011-01-02  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * subr.el (unintern): Declare the obarray arg mandatory.
 +      * textmodes/rst.el (rst-compile-pdf-preview)
 +      (rst-compile-slides-preview): Use make-temp-file (Bug#7646).
  
 -2010-09-14  Glenn Morris  <rgm@gnu.org>
 +2011-01-02  Kevin Gallagher  <Kevin.Gallagher@boeing.com>
  
 -      * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
 -      Doc fixes.
 +      * emulation/edt-mapper.el: Override mapping of function keys so
 +      that the later call to read-key-sequence works.
  
 -      * calendar/diary-lib.el (diary-included-files): New variable.
 -      (diary-list-entries): Maybe initialize diary-included-files.
 -      (diary-include-other-diary-files): Append to diary-included-files.
 -      * calendar/appt.el (appt-update-list): Also check the members of
 -      diary-included-files.  (Bug#6999)
 -      (appt-check): Doc fix.
 +2011-01-02  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-09-12  David Reitter  <david.reitter@gmail.com>
 +      * mail/smtpmail.el (smtpmail-send-it): Write queued mail body with
 +      Unix EOLs.  (Bug#7589)
  
 -      * simple.el (line-move-visual): Do not truncate goal column to
 -      integer size.  (Bug#7020)
 +2011-01-02  Leo  <sdl.web@gmail.com>
  
 -2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * eshell/em-hist.el (eshell-previous-matching-input): Signal error
 +      if point is not behind eshell-last-output-end (Bug#7585).
  
 -      * repeat.el (repeat): Allow repeating when the last event is a click.
 -      Suggested by Drew Adams (bug#6256).
 +2011-01-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-09-11  Sascha Wilde  <wilde@sha-bang.de>
 +      * files.el (file-local-variables-alist):
 +      Make permanent-local (bug#7767).
  
 -      * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
 -      Replace setting HGRCPATH to "" by some less invasive --config options.
 +2011-01-02  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * version.el (emacs-copyright): Set short copyright year to 2011.
  
 -      * font-lock.el (font-lock-beginning-of-syntax-function):
 -      Mark as obsolete.
 +2011-01-02  Mark Lillibridge  <mark.lillibridge@hp.com>  (tiny change)
  
 -2010-09-10  Glenn Morris  <rgm@gnu.org>
 +      * mail/mail-utils.el (mail-strip-quoted-names): Avoid clobbering
 +      an existing temp buffer.  (Bug#7746)
  
 -      * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar
 -      and tool-bar modes.  (Bug#6211)
 -      (menu-bar-mode): Move setting of standard-value after the
 -      minor-mode definition, otherwise it seems to have no effect.
 +2011-01-02  Glenn Morris  <rgm@gnu.org>
  
 -2010-09-08  Masatake YAMATO  <yamato@redhat.com>
 +      * mail/mail-utils.el (mail-mbox-from): Handle From: headers with
 +      multiple addresses.  (Bug#7760)
  
 -      * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
 -      Fix typo.  (Bug#6976)
 +2011-01-01  Ken Manheimer  <ken.manheimer@gmail.com>
  
 -2010-09-06  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +      * allout.el (allout-auto-fill): Do not infinitely recurse - use
 +      do-auto-fill if everything points back to allout-auto-fill.
 +      (allout-mode-deactivate-hook): Declare obsolete, in favor of
 +      standard-formed minor-mode deactivate hook, allout-mode-off-hook.
  
 -      * whitespace.el: Allow cleaning up blanks without blank
 -      visualization (Bug#6651).  Adjust help window for
 -      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 -      instead of whitespace-line-column (from EmacsWiki).  New version 13.1.
 -      (whitespace-style): Add new value 'face.  Adjust docstring.
 -      (whitespace-space, whitespace-hspace, whitespace-tab):
 -      Adjust foreground property face.
 -      (whitespace-line-column): Adjust docstring and type declaration.
 -      (whitespace-style-value-list, whitespace-toggle-option-alist)
 -      (whitespace-help-text): Adjust const initialization.
 -      (whitespace-toggle-options, global-whitespace-toggle-options):
 -      Adjust docstring.
 -      (whitespace-display-window, whitespace-interactive-char)
 -      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 -      (whitespace-help-scroll): New fun.
 +2010-12-31  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-09-05  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +      * net/tramp-sh.el (tramp-methods): Add recursive options to "scpc"
 +      and "scpx".
  
 -      * files.el (directory-abbrev-alist): Use \` as default regexp.
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * emacs-lisp/rx.el (rx-any): Don't explode ranges that end in special
 -      chars like - or ] (bug#6984).
 -      (rx-any-condense-range): Explode 2-char ranges.
 +      * doc-view.el (doc-view-set-doc-type): New function refactored
 +      from doc-view-mode.
 +      (doc-view-fallback-mode): New function.
 +      (doc-view-mode): Use it.
 +      (doc-view-mode-maybe): New function that checks if doc-view-mode
 +      can be used and falls back to the next best mode otherwise.
  
 -2010-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * files.el (auto-mode-alist): Use doc-view-mode-maybe for PDF,
 +      DVI, OpenDocument, and MS Office files.
  
 -      * textmodes/bibtex.el:
 -      * proced.el: Update to new email for Roland Winkler <winkler@gnu.org>.
 +2010-12-30  Andreas Schwab  <schwab@linux-m68k.org>
  
 -2010-09-02  Glenn Morris  <rgm@gnu.org>
 +      * emacs-lisp/rx.el (rx-syntax): Fix typo.
  
 -      * desktop.el (desktop-path): Bump :version after 2009-09-15 change.
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
  
 -2010-08-31  Kenichi Handa  <handa@m17n.org>
 +      * doc-view.el (doc-view-toggle-display): Perform rassq-delete-all
 +      on a copy of auto-mode-alist, because that deletes with side
 +      effects.
  
 -      * international/mule-cmds.el (standard-display-european-internal):
 -      Setup standard-display-table for 8-bit characters by storing 8-bit
 -      characters in the element vector.
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * disp-table.el (standard-display-8bit):
 -      Setup standard-display-table for 8-bit characters by storing 8-bit
 -      characters in the element vector.
 -      (standard-display-european): Likewise.
 +      * doc-view.el (doc-view-mode, doc-view-toggle-display):
 +      Use normal-mode without doc-view-mode bindings in auto-mode-alist as
 +      fallback instead of hard coding fundamental mode.
  
 -2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      Sync with Tramp 2.1.19.
 +      * doc-view.el (doc-view-doc->txt): Handle OpenDocument (or MS
 +      Office) files also for searching.
  
 -      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 -      (tramp-reporter-dump-variable, tramp-load-report-modules)
 -      (tramp-append-tramp-buffers): Use `tramp-compat-funcall'.
 -      (tramp-bug): Recommend setting of `tramp-verbose' to 9.
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * net/tramp-compat.el (top): Do not autoload
 -      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 -      only when `start-file-process' is not bound.
 -      (byte-compile-not-obsolete-vars): Define if not bound.
 -      (tramp-compat-funcall): New defmacro.
 -      (tramp-compat-line-beginning-position)
 -      (tramp-compat-line-end-position)
 -      (tramp-compat-temporary-file-directory)
 -      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 -      (tramp-compat-copy-file, tramp-compat-copy-directory)
 -      (tramp-compat-delete-file, tramp-compat-delete-directory)
 -      (tramp-compat-number-sequence, tramp-compat-process-running-p):
 -      Use it.
 -      (tramp-advice-file-expand-wildcards): Do not use
 -      `tramp-handle-file-remote-p'.
 -      (tramp-compat-make-temp-file): Simplify fallback implementation.
 -      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-compat-copy-tree): Remove function.
 -      (tramp-compat-delete-file): New defun.
 -      (tramp-compat-delete-directory): Provide implementation for older
 -      Emacsen.
 -      (tramp-compat-file-attributes): Handle only
 -      `wrong-number-of-arguments' error.
 +      * doc-view.el: Implement viewing of OpenDocument (and Microsoft
 +      Office) files.  Not yet enabled via auto-mode-list.
 +      (doc-view-unoconv-program): New custom variable.
 +      (doc-view-mode-p): Handle new odf document type.
 +      (doc-view-odf->pdf): New conversion function.
 +      (doc-view-convert-current-doc): Call it for odf files.
 +      (doc-view-mode): Recognize newly supported file extensions.
  
 -      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 -      Add PRESERVE_SELINUX_CONTEXT.
 -      (tramp-fish-handle-delete-file): Add TRASH arg.
 -      (tramp-fish-handle-directory-files-and-attributes):
 -      Do not use `tramp-fish-handle-file-attributes.
 -      (tramp-fish-handle-file-local-copy)
 -      (tramp-fish-handle-insert-file-contents)
 -      (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
 +2010-12-30  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * net/tramp-gvfs.el (top): Require url-util.
 -      (tramp-gvfs-mount-point): Remove.
 -      (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
 -      and `set-file-selinux-context'.
 -      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
 -      (tramp-gvfs-handle-file-selinux-context)
 -      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 -      (with-tramp-dbus-call-method): Format trace message.
 -      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
 -      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 -      Implement backup call, when operation on local files fails.
 -      Use progress reporter.  Flush properties of changed files.
 -      (tramp-gvfs-handle-delete-file): Add TRASH arg.
 -      Use `tramp-compat-delete-file'.
 -      (tramp-gvfs-handle-expand-file-name): Expand "~/".
 -      (tramp-gvfs-handle-make-directory): Make more traces.
 -      (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
 -      (tramp-gvfs-url-file-name): Hexify file name in url.
 -      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 -      into account for the resulting file name.
 -      (tramp-gvfs-handler-askquestion): Preserve current message, in
 -      order to let progress reporter continue afterwards.  (Bug#6257)
 -      Return dummy mountpoint, when the answer is "no".
 -      See `tramp-gvfs-maybe-open-connection'.
 -      (tramp-gvfs-handler-mounted-unmounted)
 -      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 -      attribute "default_location".  Set "prefix" property.
 -      Handle default-location.
 -      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 -      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 -      exists.  Raise an error, if not (due to a corresponding answer
 -      "no" in interactive questions, for example).
 -      Use `tramp-compat-funcall'.
 +      * net/tramp.el (tramp-default-method-alist)
 +      (tramp-default-user-alist)
 +      (tramp-local-host-regexp, tramp-prefix-domain-format)
 +      (tramp-prefix-domain-regexp): Set tramp-autoload cookie.
 +
 +      * net/tramp-ftp.el:
 +      * net/tramp-gvfs.el:
 +      * net/tramp-gw.el:
 +      * net/tramp-imap.el:
 +      * net/tramp-sh.el:
 +      * net/tramp-smb.el: Add tramp-autoload cookie for initialisation
 +      code of `tramp-default-method-alist' and `tramp-default-user-alist'.
 +
 +2010-12-29  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * saveplace.el (save-place-alist-to-file): Save list sorted and
 +      pretty-printed, so that it is mergeable by line-based text merging,
 +      as suggested by Iain Dalton <iain.dalton {_AT_} gmail.com>.
 +
 +2010-12-28  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      * allout.el (allout-v18/19-file-var-hack): Obsolete, remove.
 +      (allout-mode): Argument "toggle" => "force".
 +      Refine the docstring.
 +      Remove special provisions for reactivation, besides the 'force'
 +      argument.
 +      Consolidate layout provisions coce directly into the activation
 +      condition branch, now that we've removed those provisions.
 +      (allout-unload-function): Explicitly activate the mode before
 +      deactivating, if it's initially deactivated.
 +      (allout-set-buffer-multibyte): Properly prevent byte-compiler
 +      warnings for version of function used only where
 +      set-buffer-multibyte is unavailable.
  
 -      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 -      (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-imap-do-copy-or-rename-file)
 -      (tramp-imap-handle-insert-file-contents)
 -      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 -      (tramp-imap-handle-delete-file): Add TRASH arg.
 +2010-12-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 -      Add PRESERVE-SELINUX-CONTEXT.
 -      (tramp-smb-handle-copy-file)
 -      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 -      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 -      Use `with-progress-reporter'.
 -      (tramp-smb-handle-delete-file): Add TRASH arg.
 +      * tool-bar.el (tool-bar-setup): Remove :enable conditions, which
 +      are handled by the menu-bar entries.  As before, don't use
 +      :visibile to avoid changing the tool-bar.
  
 -      * net/tramp.el (tramp-methods): Move hostname to the end in all
 -      ssh `tramp-login-args'.  Add `tramp-async-args' attribute where
 -      appropriate.
 -      (tramp-verbose): Describe verbose level 9.
 -      (tramp-completion-function-alist)
 -      (tramp-file-name-regexp, tramp-chunksize)
 -      (tramp-local-coding-commands, tramp-remote-coding-commands)
 -      (with-connection-property, tramp-completion-mode-p)
 -      (tramp-action-process-alive, tramp-action-out-of-band)
 -      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 -      (tramp-exists-file-name-handler): Fix docstring.
 -      (tramp-remote-process-environment): Use `format' instead of
 -      `concat'.  Protect version string by apostroph.
 -      (tramp-shell-prompt-pattern): Do not use a shy group in case of
 -      XEmacs.
 -      (tramp-file-name-regexp-unified)
 -      (tramp-completion-file-name-regexp-unified): On W32 systems, do
 +2010-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/secrets.el (secrets-delete-alias): New defun.
 +
 +2010-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-default-user-alist): Do not add "ssh" based
 +      methods, otherwise ~/.ssh/config would be ignored.
 +
 +2010-12-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/rx.el: Make it a superset of sregex.
 +      (rx-constituents): Add `any => "."', mark `repeat' as taking any number
 +      of args, add `regex' alias.
 +      (rx-info): Add arg to distinguish head and standalone forms.
 +      (rx-check, rx-form): Pass the corresponding arg.
 +      (rx-**): Simplify.
 +      (rx-repeat): Make it work for any number of args.
 +      (rx-syntax): Make it accept syntax chars as is.
 +      * obsolete/sregex.el: Move from emacs-lisp/.
 +      * emacs-lisp/re-builder.el: Remove sregex support.
 +      * emacs-lisp/edebug.el (sregexq, rx): Remove redundant defs.
 +
 +2010-12-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mouse.el (mouse-yank-primary): On MS-Windows, try the (emulated)
 +      PRIMARY first, then the clipboard.  (Bug#7699)
 +
 +2010-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-output-docform): Fix up use of
 +      print-number-table.
 +
 +2010-12-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * help-fns.el (find-lisp-object-file-name): Locate .emacs from
 +      .emacs.elc (Bug#7530).
 +
 +      * wid-edit.el (widget-image-find): Remove bogus :ascent spec from
 +      image spec (Bug#7480).
 +
 +2010-12-21  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * obsolete/pgg-parse.el, obsolete/pgg-pgp5.el, obsolete/pgg-pgp.el,
 +      * obsolete/pgg-gpg.el, obsolete/pgg-def.el, obsolete/pgg.el:
 +      Move from lisp/.
 +
 +2010-12-20  Leo  <sdl.web@gmail.com>
 +
 +      * dnd.el (dnd-get-local-file-name): Unhex of file name shall
 +      always be performed (Bug#7680).
 +
 +2010-12-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * menu-bar.el (menu-bar-kill-ring-save): Make obsolete.
 +      (menu-bar-edit-menu): Bind "Copy" to kill-ring-save.  Don't use
 +      mouse-region-match.
 +
 +      * color.el: Move from gnus/.
 +
 +      * vc/diff.el (diff-better-file-name): Function deleted.
 +      abbreviating file names causes problems with shell-quote-argument.
 +      (diff-no-select): Just use expand-file-name.
 +
 +      * tool-bar.el (tool-bar--image-expression): New function.
 +      (tool-bar-local-item, tool-bar--image-exp): Use it.
 +      (tool-bar-setup): Initialize tool-bar-separator-image-expression.
 +      Use :enable instead of :visible to avoid changing the tool-bar
 +      configuration unnecessarily.
 +
 +      * info.el (info-tool-bar-map): Add separators.
 +
 +2010-12-17  Ken Brown  <kbrown@cornell.edu>
 +
 +      * loadup.el: Use version numbers in Cygwin build.
 +
 +2010-12-17  Ryan Twitchell  <metatheorem@gmail.com>  (tiny change)
 +
 +      * ido.el (ido-file-internal): Ask for confirmation before
 +      overwriting an existing file (Bug#1238).
 +
 +2010-12-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * tool-bar.el (tool-bar-setup): Add separators.
 +
 +      * menu-bar.el (featurep): Use menu-bar-separator.
 +
 +2010-12-16  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      Migrate allout encryption provisions from pgg to epg.
 +
 +      * allout.el (allout-toggle-current-subtree-encryption)
 +      (allout-toggle-subtree-encryption): Adjust docstrings to reflect
 +      defaulting policy and other changes.  Change fetch-pass to keymode-cue,
 +      for simpler universal argument interpretation.
 +      (allout-toggle-subtree-encryption): Adjust docstring to describe
 +      changed encryption provisions.  Change fetch-pass to keymode-cue, for
 +      simpler universal argument interpretation.  Remove provisions for
 +      handling key type and identity - they'll all be within
 +      allout-encrypt-string or epg/epg or even contained all the way in gpg.
 +      (allout-encrypt-string): Include keymode-cue, for optionally prompting
 +      for keypair recipients (universal argument > 1) and, in addition,
 +      associating the specified recipients with the outline (universal
 +      argument > 4) using a file local variable setting for
 +      'epa-file-encrypt-to'.
 +      Require epa, for recipients handling.
 +      Change how regexp filtering elements are named.
 +      Describe the problem with caching of incorrect symmetric-decryption
 +      keys.
 +      Use the epa-passphrase-callback-function, in case the user is using
 +      GnuPG v1.
 +      Support saving of the selected keypair recipients when invoked with a
 +      keymode-cue > 4.
 +      Remove obsolete arguments 'fetch-pass', 'target-cache-id', 'retried'.
 +      Require 'epa.
 +      Establish epg-context with armoring and default epg-protocol.
 +      Remove all passphrase cache, verification, and hinting code.
 +      (allout-passphrase-verifier-handling, allout-passphrase-hint-handling):
 +      No longer used, delete.
 +      (allout-mode): Adjust docstring to describe changed encryption
 +      provisions.  Describe the problem with caching of incorrect
 +      symmetric-decryption keys.
 +      (allout-obtain-passphrase, allout-epg-passphrase-callback-function)
 +      (allout-make-passphrase-state, allout-passphrase-state-passphrase)
 +      (allout-encrypted-key-info, allout-update-passphrase-mnemonic-aids)
 +      (allout-get-encryption-passphrase-verifier, allout-verify-passphrase):
 +      Obsolete, remove.
 +
 +2010-12-16  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-select-keys): Accept 'silent to inhibit
 +      key selection prompt; make 'silent as default (Bug#7487).
 +
 +2010-12-16  Leo  <sdl.web@gmail.com>
 +
 +      * eshell/eshell.el (eshell-directory-name):
 +      Use locate-user-emacs-file (Bug#7578).
 +
 +2010-12-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * loadup.el (symbol-file-load-history-loaded): Remove; unused.
 +
 +2010-12-15  Jari Aalto  <jari.aalto@cante.net>
 +            Scott Evans <gse@antisleep.com>
 +
 +      * rect.el (rectange--default-line-number-format)
 +      (rectangle-number-line-callback): New functions.
 +      (rectangle-number-lines): New command, bound to C-x r N (Bug#4382).
 +
 +2010-12-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * rect.el (operate-on-rectangle-lines, string-rectangle-string):
 +      Delete unused variables.
 +      (move-to-column-force): Remove function obsolete since 21.2.
 +
 +2010-12-14  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-temp-buffer-file-name): Make it permanent-local.
 +      (tramp-handle-insert-file-contents): Do not set permanent-local
 +      property.
 +
 +      * net/tramp-cache.el (tramp-persistency-file-name):
 +      Use `locate-user-emacs-file' if fboundp.
 +
 +      * net/tramp-sh.el (tramp-methods): Add "ksu".
 +      (tramp-default-user-alist): Add "ksu".  Use `regexp-opt' for
 +      method list.
 +
 +2010-12-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/js.el: Doc't require font-lock, etags, or easymenu.
 +      (find-tag-marker-ring): Declare.
 +      (js-find-symbol): Require etags.
 +
 +      * mail/sendmail.el: Don't require rmail or mailalias when compiling.
 +      Require mail-utils.
 +      (mail-alias-file): Don't autoload.  Doc fix.
 +      (mail-bury-selects-summary, mail-send-nonascii): Don't autoload.
 +      (mail-mailer-swallows-blank-line): Default to nil.  Doc fix.
 +      Mark as obsolete, and risky.
 +      (mail-setup): Simplify.
 +
 +      * mail/mailalias.el (build-mail-aliases): Make it interactive.
 +      * mail/sendmail.el (build-mail-aliases): Update autoload.
 +
 +      * dired.el (dired-trivial-filenames, dired-chown-program)
 +      (dired-auto-revert-buffer): Remove autoload cookies.
 +      * mail/sendmail.el (mail-recover-1): Require 'dired.
 +
 +      * dired.el (dired-subdir-switches, dired-chown-program)
 +      (dired-use-ls-dired, dired-chmod-program, dired-touch-program):
 +      Make into defcustoms.
 +      (dired-chown-program): Simplify initialization.
 +
 +      * mail/mail-utils.el: No need to require lisp-mode, it's in loadup.
 +
 +2010-12-13  Romain Francoise  <romain@orebokech.com>
 +
 +      * net/gnutls.el (gnutls-negotiate): Fix setting of default trustfiles.
 +
 +2010-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/netrc.el (netrc-point-at-eol): Remove the unused
 +      netrc-point-at-old and netrc-bound-and-true-p bindings.
 +      (netrc-parse): Cache the netrc contents.
 +
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * subr.el (posn-col-row): Evaluate header-line-format in the
 +      context of the POSITION window's buffer.
 +
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (member-ignore-case, run-mode-hooks, insert-for-yank-1)
 +      (with-silent-modifications): Doc fixes.
 +
 +2010-12-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-action-password, tramp-process-actions):
 +      Revert previous from.  Use `save-restriction'.
 +
 +2010-12-13  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * calendar/diary-lib.el (diary-list-sexp-entries):
 +      Handle case of no newline at end of file.  (Bug#7536)
 +
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/smtpmail.el (smtpmail-send-it): Revert previous change.
 +
 +2010-12-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-action-password): Delete region, do not narrow.
 +      (tramp-process-actions): Do not widen.
 +
 +      * net/tramp-sh.el (tramp-sh-handle-start-file-process):
 +      Protect buffer-modified value.  (Bug#7557)
 +
 +2010-12-13   Jan Moringen  <jmoringe@techfak.uni-bielefeld.de>
 +
 +      * log-edit.el (log-edit-changelog-entries):
 +      Regexp quote filename.  (Bug#7505)
 +
 +2010-12-13  Tom Breton  <tehom@panix.com>
 +
 +      * cus-edit.el (custom-save-all):
 +      Bind print-length and print-level to nil.  (Bug#7581)
 +
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * mouse.el (mouse-menu-major-mode-map, mouse-menu-bar-map):
 +      Run hooks to update menu contents.  (Bug#7586)
 +
 +      * mail/smtpmail.el (smtpmail-send-it): Avoid colons in the queued
 +      file names, for the sake of MS Windows.  (Bug#7588)
 +
 +2010-12-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * diff-mode.el (diff-refine-hunk): Make it work when the hunk contains
 +      empty lines without a leading space.
 +
 +2010-12-13  Leo  <sdl.web@gmail.com>
 +
 +      * dired-aux.el (dired-do-redisplay): Postpone dired-after-readin-hook
 +      while mapping over marks (Bug#6810).
 +
 +2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image-dired.el (image-dired-db-file)
 +      (image-dired-temp-image-file, image-dired-gallery-dir)
 +      (image-dired-temp-rotate-image-file): Set default values relative
 +      to image-dired-dir (Bug#7518).
 +
 +2010-12-13  Lawrence Mitchell  <wence@gmx.li>
 +
 +      * format.el (format-decode-run-method): Pass args FROM and TO, not
 +      point-min and point-max, to shell-command-on-region (Bug#7488).
 +
 +2010-12-13  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * frame.el (blink-cursor-mode): Make default t for ns.
 +
 +2010-12-13  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +
 +      * vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501).
 +
 +2010-12-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * comint.el (comint-dynamic-list-input-ring)
 +      (comint-dynamic-complete-filename)
 +      (comint-replace-by-expanded-filename)
 +      (comint-dynamic-simple-complete)
 +      (comint-dynamic-list-filename-completions)
 +      (comint-dynamic-list-completions): Doc fix (Bug#7499).
 +
 +      * subr.el (posn-x-y, posn-object-x-y, posn-object-width-height):
 +      Doc fix (Bug#7471).
 +
 +2010-12-13  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil
 +      (Bug#7533).
 +
 +2010-12-13  W. Martin Borgert <debacle@debian.org>  (tiny change)
 +
 +      * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode.
 +      (Bug#7491).
 +
 +2010-12-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (file-relative-name): Handle UNC file names on
 +      DOS/Windows.  (Bug#4674)
 +
 +2010-12-13  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with
 +      "RIPEMD160" (Bug#7490).  Reported by Daniel Kahn Gillmor.
 +      (epg-context-set-passphrase-callback): Mention that the callback
 +      is not called when used with GnuPG 2.x.
 +
 +2010-12-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * ps-print.el (ps-line-lengths-internal, ps-nb-pages):
 +      Ensure ps-footer-font-size-internal is initialized.
 +      Call ps-get-page-dimensions before trying to use ps-font-for-text.
 +
 +2010-12-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * mail/rmailmm.el (rmail-mime-parse): Call rmail-mime-process
 +      within condition-case.
 +      (rmail-show-mime): Don't use condition-case.
 +      (rmail-search-mime-message): New function.
 +      (rmail-search-mime-message-function): Set to
 +      rmail-search-mime-message.
 +
 +2010-12-13  Leo  <sdl.web@gmail.com>
 +
 +      * ido.el (ido-common-initialization): New function.  (bug#3274)
 +      (ido-mode): Use it.
 +      (ido-completing-read): Call it.
 +
 +2010-12-12  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el (bookmark-name-from-full-record): Rename back to
 +      this original name from `bookmark-name-from-record' reverting part
 +      of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm.
 +      As Drew Adams pointed out, there was no reason to cause churn for
 +      third-party callers.
 +
 +2010-12-12  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-forward-type): Before scanning a
 +      template arglist, check that the current language supports this.
 +
 +2010-12-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/vc-bzr.el (vc-bzr-state-heuristic): Also check that the executable
 +      state of the file matches.  (Bug#7544)
 +      (vc-bzr-register, vc-bzr-checkin)
 +      (vc-bzr-annotate-extract-revision-at-line): Doc fixes.
 +      (vc-directory-exclusion-list): Remove unnecessary eval-after-load.
 +
 +      * textmodes/sgml-mode.el (sgml-xml-guess): Add .xhtml extension.
 +
 +2010-12-11  Karel Klíč  <kklic@redhat.com>
 +
 +      * files.el (auto-mode-alist): Use html-mode for *.xhtml.  (Bug#7606)
 +
 +2010-12-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Derive from prog-mode, use derived-mode-p, and fix up various
 +      minor style issues in lisp/progmodes.
 +
 +      * progmodes/vhdl-mode.el (vhdl-mode):
 +      * progmodes/verilog-mode.el (verilog-mode):
 +      * progmodes/vera-mode.el (vera-mode):
 +      * progmodes/sql.el (sql-mode):
 +      * progmodes/scheme.el (scheme-mode):
 +      * progmodes/perl-mode.el (perl-mode):
 +      * progmodes/octave-inf.el (inferior-octave-mode):
 +      * progmodes/autoconf.el (autoconf-mode):
 +      * progmodes/m4-mode.el (m4-mode):
 +      * progmodes/inf-lisp.el (inferior-lisp-mode):
 +      * progmodes/idlwave.el (idlwave-mode):
 +      * progmodes/icon.el (icon-mode):
 +      * progmodes/idlw-help.el (idlwave-help-mode):
 +      * progmodes/dcl-mode.el (dcl-mode):
 +      * progmodes/idlw-shell.el (idlwave-shell-mode):
 +      * progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-electric-list-mode)
 +      (ebrowse-member-mode, ebrowse-electric-position-mode):
 +      Use define-derived-mode.
 +
 +      * progmodes/xscheme.el (exit-scheme-interaction-mode)
 +      (xscheme-enter-interaction-mode, xscheme-enter-debugger-mode)
 +      (xscheme-debugger-mode-p, xscheme-send-string-1):
 +      * progmodes/tcl.el (inferior-tcl-proc, tcl-current-word)
 +      (tcl-load-file, tcl-restart-with-file):
 +      * progmodes/ps-mode.el (ps-run-running):
 +      * progmodes/gdb-mi.el (gud-watch, gdb-mouse-set-clear-breakpoint):
 +      * progmodes/js.el (js--get-all-known-symbols):
 +      * progmodes/inf-lisp.el (inferior-lisp-proc):
 +      * progmodes/idlwave.el (idlwave-beginning-of-statement)
 +      (idlwave-template, idlwave-update-buffer-routine-info)
 +      (idlwave-update-current-buffer-info)
 +      (idlwave-get-routine-info-from-buffers, idlwave-choose)
 +      (idlwave-scan-class-info, idlwave-fix-keywords)
 +      (idlwave-list-buffer-load-path-shadows):
 +      * progmodes/idlw-toolbar.el (idlwave-toolbar, idlwave-toolbar-add)
 +      (idlwave-toolbar-remove):
 +      * progmodes/idlw-shell.el (idlwave-shell-save-and-action)
 +      (idlwave-shell-file-name, idlwave-shell-electric-debug-all-off)
 +      (idlwave-shell-menu-def):
 +      * progmodes/idlw-complete-structtag.el
 +      (idlwave-prepare-structure-tag-completion):
 +      * progmodes/gud.el (gud-set-buffer):
 +      * progmodes/f90.el (f90-backslash-not-special):
 +      * progmodes/delphi.el (delphi-find-unit): Use derived-mode-p.
 +
 +      * progmodes/xscheme.el (xscheme-start)
 +      (local-set-scheme-interaction-buffer, scheme-interaction-mode):
 +      * progmodes/which-func.el (which-function):
 +      * progmodes/vhdl-mode.el (vhdl-set-style):
 +      * progmodes/verilog-mode.el (verilog-set-compile-command)
 +      (verilog-modify-compile-command, verilog-error-regexp-add-xemacs)
 +      (verilog-set-define, verilog-auto-reeval-locals):
 +      * progmodes/sql.el (sql-product-font-lock, sql-interactive-mode):
 +      * progmodes/simula.el (simula-mode):
 +      * progmodes/scheme.el (scheme-mode-variables, dsssl-mode):
 +      * progmodes/python.el (python-check, python-mode):
 +      * progmodes/prolog.el (prolog-mode-variables):
 +      * progmodes/gud.el (gud-tooltip-activate-mouse-motions):
 +      * progmodes/ebrowse.el (ebrowse-view-file-other-frame):
 +      * progmodes/delphi.el (delphi-mode):
 +      * progmodes/cc-styles.el (c-setup-paragraph-variables):
 +      * progmodes/cc-mode.el (c-basic-common-init, c-common-init)
 +      (c-font-lock-init): Move make-local-variable to their setq.
 +
 +      * progmodes/vhdl-mode.el (vhdl-write-file-hooks-init)
 +      (vhdl-hs-minor-mode, vhdl-ps-print-init): Fix make-local-variable ->
 +      make-local-hook.
 +      * progmodes/sh-script.el (sh-require-final-newline): Remove.
 +      (sh-set-shell): Don't set require-final-newline since it's already done
 +      by prog-mode.
 +      * progmodes/modula2.el (m2-mode): Don't make m2-end-comment-column
 +      since we never set it.
 +      * progmodes/ebrowse.el (ebrowse-set-tree-indentation):
 +      Use read-string and standard prompt.
 +      * progmodes/dcl-mode.el (dcl-mode-map): Move init into declaration.
 +      * progmodes/meta-mode.el (meta-mode-abbrev-table): Merge init and decl.
 +      (meta-common-mode-syntax-table): Rename from meta-mode-syntax-table.
 +      (meta-common-mode-map): Rename from meta-mode-map.
 +      Remove C-m binding, which is a user preference, not mode specific.
 +      (meta-common-mode): New major mode; replace meta-common-initialization.
 +      * progmodes/js.el (js-mode): Call syntax-propertize rather than messing
 +      around with font-lock.
 +      * progmodes/etags.el (select-tags-table-mode):
 +      Derive from special-mode.
 +      * progmodes/octave-mod.el (octave-mode):
 +      * progmodes/gdb-mi.el (gdb-inferior-io-mode, gdb-threads-mode)
 +      (gdb-memory-mode, gdb-disassembly-mode, gdb-breakpoints-mode)
 +      (gdb-frames-mode, gdb-locals-mode, gdb-registers-mode):
 +      Let define-derived-mode do its job.
 +      * progmodes/cpp.el (cpp-edit-mode-map):
 +      Move initialization into declaration.
 +      (cpp-edit-mode): Use define-derived-mode.
 +      (cpp-edit-load): Use derived-mode-p.
 +      * progmodes/mixal-mode.el (mixal-mode):
 +      * progmodes/f90.el (f90-mode):
 +      * progmodes/cfengine.el (cfengine-mode): Don't bother setting
 +      require-final-newline since prog-mode does it already.
 +      * progmodes/cc-cmds.el (c-update-modeline): Use match-string.
 +      * progmodes/asm-mode.el (asm-mode-map): Fix menu setup.
 +      * progmodes/antlr-mode.el: Require cc-mode upfront.
 +      (antlr-mode-syntax-table, antlr-action-syntax-table): Initialize in
 +      the declaration.
 +      (antlr-directory-dependencies, antlr-show-makefile-rules):
 +      Use derived-mode-p.
 +      (antlr-language-option): Don't assume point-min==1.
 +      (antlr-mode): Use define-derived-mode.
 +      * progmodes/ada-mode.el: Use derived-mode-p.
 +      (ada-mode): Use define-derived-mode.
 +      Use hack-local-variables-hook.
 +
 +2010-12-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/texinfo.el (texinfo-mode-map): Bind texinfo-insert-@end.
 +      (texinfo-mode): Don't disable adaptive-fill-mode.
 +      (texinfo-insert-block): Adjust cursor placement for blocks with arg.
 +      (texinfo-insert-@end, texinfo-insert-braces, texinfo-insert-@code)
 +      (texinfo-insert-@dfn, texinfo-insert-@email, texinfo-insert-@emph)
 +      (texinfo-insert-@example, texinfo-insert-@file, texinfo-insert-@item)
 +      (texinfo-insert-@kbd, texinfo-insert-@node, texinfo-insert-@noindent)
 +      (texinfo-insert-@quotation, texinfo-insert-@samp)
 +      (texinfo-insert-@strong, texinfo-insert-@table, texinfo-insert-@var)
 +      (texinfo-insert-@uref): Use define-skeleton.
 +      (texinfo-insert-@-with-arg): Delete.
 +
 +2010-12-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * arc-mode.el (archive-zip-extract): If w32-quote-process-args is
 +      nil, do quote archive member names.  (Bug#6144)
 +
 +2010-12-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (diff-no-select): Declare.
 +
 +      * mail/emacsbug.el (report-emacs-bug): Use mail-user-agent properties.
 +      (report-emacs-bug-create-existing-bugs-buffer): Avoid free variables.
 +
 +      * comint.el (comint-input-ring-file-name): Doc fix.
 +
 +2010-12-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p):
 +      New functions.
 +      (menu-bar-showhide-menu) <menu-bar-mode, showhide-tool-bar>:
 +      Use them instead of `nil' and `>', respectively.
 +      (menu-bar-showhide-tool-bar-menu): Use menu-bar-frame-for-menubar
 +      instead of `nil'.
 +      (toggle-menu-bar-mode-from-frame): Use menu-bar-frame-for-menubar
 +      and menu-bar-positive-p instead of `nil' and `>', respectively.
 +      (Bug#1077)
 +
 +2010-12-09  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el (whitespace-newline-mode): Code fix.
 +
 +2010-12-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * play/landmark.el (lm-print-y,s,noise-int, lm-print-y,s,noise):
 +      Rename functions without commas, update callers.
 +
 +2010-12-08  Jeff Dairiki  <dairiki@dairiki.org>  (tiny change)
 +
 +      * whitespace.el (whitespace-cleanup-region):
 +      Clean up spaces before tabs.  (Bug#7582)
 +
 +2010-12-08  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el: Adjust parameter names and doc strings to resolve
 +      confusion over whether "bookmark" meant a bookmark name or a
 +      bookmark record.  Along the way, shorten one function's name for
 +      similar reasons.  (Issue #7548)
 +      (bookmark-name-from-record): New name for
 +      `bookmark-name-from-full-record'.  All callers changed.
 +      (bookmark-get-bookmark, bookmark-get-bookmark-record)
 +      (bookmark-default-annotation-text, bookmark-prop-get, bookmark-prop-set)
 +      (bookmark-get-annotation, bookmark-set-annotation)
 +      (bookmark-get-filename, bookmark-set-filename)
 +      (bookmark-get-position, bookmark-set-position)
 +      (bookmark-get-front-context-string, bookmark-set-front-context-string)
 +      (bookmark-get-rear-context-string, bookmark-set-rear-context-string)
 +      (bookmark-get-handler, bookmark-edit-annotation, bookmark--jump-via)
 +      (bookmark-handle-bookmark, bookmark-location, bookmark-show-annotation):
 +      Rename `bookmark' parameter to `bookmark-name-or-record', to
 +      clearly show its role, and shorten or adjust doc strings accordingly.
 +      (bookmark-set-name): Same, and pass the parameter directly to
 +      `bookmark-get-bookmark' instead of redundantly doing the callee's work.
 +      (bookmark-default-annotation-text, bookmark-send-edited-annotation)
 +      (bookmark-relocate, bookmark-insert-location, bookmark-insert)
 +      (bookmark-delete): Rename `bookmark' parameter to `bookmark-name',
 +      and in some cases shorten doc string accordingly.
 +      (bookmark-rename): Change `old' and `new' parameters to `old-name'
 +      and `new-name', and adjust an internal variable to avoid confusion.
 +      (bookmark-jump, bookmark-jump-noselect): Clarify `bookmark'
 +      parameter in doc string.
 +
 +2010-12-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/gdb-mi.el (gdb): Try to initialize comint input history
 +      from gdb's history file.  (Bug#7575)
 +
 +      * mail/emacsbug.el (report-emacs-bug):
 +      Try to handle some other mail clients.
 +
 +2010-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (dir-locals-collect-variables): Don't let errors stop us.
 +      Use string-prefix-p.
 +      (file-name-version-regexp): New var.
 +      (file-name-sans-versions):
 +      * jka-cmpr-hook.el (jka-compr-build-file-regexp): Use it,
 +      (jka-compr-get-compression-info): Use dolist.
 +      (jka-compr-compression-info-list): Don't bother specifying
 +      version/backup regexps.
 +
 +2010-12-07  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * simple.el (just-one-space): Make argument n default to 1 if
 +      omitted.
 +
 +2010-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * electric.el (electric-indent-post-self-insert-function):
 +      Delete trailing newlines even if we don't reindent.
 +
 +2010-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-at-point): Remove the `arg'.
 +      * bindings.el (complete-symbol): Move back from minibuffer.el.
 +
 +2010-12-06  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * simple.el (just-one-space): Delete newlines for negative arg.
 +
 +2010-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * ansi-color.el (ansi-color-unfontify-region): Replace by trivial def.
 +      (ansi-color-filter-apply): Simplify.
 +      (ansi-color-apply): Use `font-lock-face' rather than `face'.
 +
 +2010-12-05  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +
 +      * vc/vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501).
 +
 +2010-12-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-use-ls-dired): Set default to a special
 +      "unspecified" value.
 +      (dired-insert-directory): When called the first time, check
 +      whether "ls --dired" succeeds and set dired-use-ls-dired (Bug#7546).
 +
 +2010-12-04  Tak Ota  <Takaaki.Ota@am.sony.com>
 +
 +      * replace.el: Add "collect" feature to occur.
 +      (occur-collect-regexp-history): New var.
 +      (occur-read-primary-args): Return a replace string for nlines,
 +      if needed.
 +      (occur): Extend the meaning of nlines.
 +
 +2010-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/which-func.el (which-func-ff-hook): Log the error message.
 +      (which-func-update-1): Distinguish symbols from strings.
 +      (which-function): Stay within 80 columns.
 +
 +2010-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (with-demoted-errors): Distinguish symbols from strings.
 +
 +      * newcomment.el (comment-styles): Add docs to each style (bug#7509).
 +      Improve docstring.
 +      (comment-style): Use comment-styles's docs to describe values.
 +
 +2010-12-03  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/common-win.el (x-setup-function-keys): Restore ns-new-frame
 +      and ns-show-prefs (Bug#7535).
 +
 +      * term/ns-win.el (global-map): Restore ns-new-frame and ns-show-prefs
 +      bindings (Bug#7535).
 +
 +2010-12-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * nxml/nxml-mode.el: Require rng-nxml.
 +      (rng-nxml-mode-init, nxml-enable-unicode-char-name-sets):
 +      Remove declarations.
 +
 +      * nxml/nxml-mode.el, nxml/nxml-outln.el, nxml/rng-loc.el:
 +      * nxml/rng-nxml.el, nxml/rng-valid.el:
 +      Remove leading `*' from defcustom docs.
 +
 +      * startup.el (normal-top-level-add-subdirs-to-load-path): Simplify.
 +      (normal-top-level-add-to-load-path, tty-handle-args):
 +      Convert comments to basic doc-strings.
 +
 +      * net/browse-url.el (browse-url-url-at-point)
 +      (browse-url-default-browser): Remove autoload cookies.
 +
 +      * mail/emacsbug.el (report-emacs-bug-create-existing-bugs-buffer):
 +      Remove more undefined cl functions.
 +
 +      * vc/diff.el (diff-sentinel): Make new arguments optional.
 +      * ibuf-ext.el (diff-sentinel): Update declaration.
 +
 +2010-12-03  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with
 +      "RIPEMD160" (Bug#7490).  Reported by Daniel Kahn Gillmor.
 +      (epg-context-set-passphrase-callback): Mention that the callback
 +      is not called when used with GnuPG 2.x.
 +
 +2010-12-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-local-host-regexp): Add "localhost6".
 +      (tramp-file-name-port): Check also for `tramp-default-port'.
 +      (tramp-get-connection-name): New defun.
 +      (tramp-get-connection-process): Use it.
 +      (tramp-debug-message): Extend function exclude list.
 +      (tramp-drop-volume-letter): Fix doc string.
 +
 +      * net/tramp-cmds.el: Remove solved todo item.
 +
 +      * net/tramp-efs.el:
 +      * net/tramp-ftp.el:
 +      * net/tramp-gvfs.el:
 +      * net/tramp-gw.el:
 +      * net/tramp-imap.el:
 +      * net/tramp-smb.el: Fix regexps added to `tramp-default-method-alist'
 +      and `tramp-default-user-alist', respectively.
 +
 +      * net/tramp-gw.el (tramp-gw-open-connection):
 +      Use `tramp-get-connection-name' and `tramp-get-connection-buffer'.
 +
 +      * net/tramp-imap.el (tramp-imap-make-iht): Use just
 +      `tramp-file-name-port'.
 +
 +      * net/tramp-sh.el (tramp-methods): Add recursive options to "pscp"
 +      and "psftp".  Exchange "%k" marker with options.
 +      (tramp-do-copy-or-rename-file, tramp-sh-handle-file-local-copy):
 +      Compute size of link target.
 +      (tramp-do-copy-or-rename-file-out-of-band): Move setting of
 +      `tramp-current-*' up due to gateway methods.  Optimize computing of
 +      copy arguments.  Use `tramp-get-connection-name' and
 +      `tramp-get-connection-buffer'.  Improve debug messages.
 +      (tramp-compute-multi-hops): Remove port determination.
 +      (tramp-maybe-open-connection): Use `tramp-get-connection-name'.
 +
 +      * net/trampver.el: Update release number.
 +
 +2010-12-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/cl-macs.el (cl-parse-loop-clause):
 +      Avoid infinite loop over windows.  (Bug#7492)
 +
 +      * progmodes/flymake.el (flymake-check-file-limit):
 +      Allow nil to mean "no limit".
 +      (flymake-check-patch-master-file-buffer): Update for above change.
 +      Allow a .tex file-name extension to be optional.
 +      (flymake-master-tex-init): Also match \include statements.
 +
 +2010-11-30  Sam Steingold  <sds@gnu.org>
 +
 +      * nxml/nxml-mode.el (nxml-parent-document): Add a variable.
 +      (nxml-parent-document-set): A function to set `nxml-parent-document'.
 +      (nxml-mode): Define using `define-derived-mode' instead of `defun'.
 +      (nxml-mode-hook): Remove `defcustom' (auto-defined by
 +      define-derived-mode').
 +      * nxml/rng-valid.el (rng-dtd-trivial-p): Add a helper function for
 +      users who want to call `nxml-parent-document-set'.
 +
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * log-edit.el (log-edit-font-lock-keywords): Don't try matching
 +      stand-alone lines, since that is handled by log-edit-match-to-eoh
 +      (Bug#6465).
 +
 +2010-11-27  Eduard Wiebe  <usenet@pusto.de>
 +
 +      * dired.el (dired-get-filename): Replace backslashes with slashes
 +      in file names on MS-Windows, needed by `locate'.  (Bug#7308)
 +      * locate.el (locate-default-make-command-line): Don't consider
 +      drive letter and root directory part of
 +      `directory-listing-before-filename-regexp'.  (Bug#7308)
 +      (locate-post-command-hook, locate-post-command-hook): New defcustoms.
 +
 +2010-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-prec2->grammar): Simplify handling
 +      of :smie-open/close-alist.
 +      (smie-next-sexp): Make it accept a "start token" as argument.
 +      (smie-indent-keyword): Be careful not to misidentify tokens that span
 +      more than one line, as empty lines.  Add argument `token'.
 +
 +2010-11-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * mail/rmailmm.el (rmail-mime-insert-multipart): For unsupported
 +      multipart subtypes, insert all as usual.
 +
 +      * mail/rmail.el: Require rfc2047.
 +
 +2010-11-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * mail/rmailmm.el (rmail-mime-entity, rmail-mime-entity-type)
 +      (rmail-mime-entity-disposition)
 +      (rmail-mime-entity-transfer-encoding, rmail-mime-entity-header)
 +      (rmail-mime-entity-body, rmail-mime-entity-children): New functions.
 +      (rmail-mime-save): Handle the case that the button's `data' is a
 +      MIME entity.
 +      (rmail-mime-insert-text): New function.
 +      (rmail-mime-insert-image): Handle the case that DATA is a MIME entity.
 +      (rmail-mime-bulk-handler): Just call rmail-mime-insert-bulk.
 +      (rmail-mime-insert-bulk): New function mostly copied from the old
 +      rmail-mime-bulk-handler.
 +      (rmail-mime-multipart-handler): Just call rmail-mime-process-multipart.
 +      (rmail-mime-process-multipart): New function mostly copied from
 +      the old rmail-mime-multipart-handler.
 +      (rmail-mime-show): Just call rmail-mime-process.
 +      (rmail-mime-process): New function mostly copied from the old
 +      rmail-mime-show.
 +      (rmail-mime-insert-multipart, rmail-mime-parse)
 +      (rmail-mime-insert, rmail-show-mime)
 +      (rmail-insert-mime-forwarded-message)
 +      (rmail-insert-mime-resent-message): New functions.
 +      (rmail-insert-mime-forwarded-message-function): Set to
 +      rmail-insert-mime-forwarded-message.
 +      (rmail-insert-mime-resent-message-function): Set to
 +      rmail-insert-mime-resent-message.
 +
 +      * mail/rmailsum.el: Require rfc2047.
 +      (rmail-header-summary): Handle multiline Subject: field.
 +      (rmail-summary-line-decoder): Change the default to
 +      rfc2047-decode-string.
 +
 +      * mail/rmail.el (rmail-enable-mime): Change the default to t.
 +      (rmail-mime-feature): Change the default to `rmailmm'.
 +      (rmail-quit): Delete the specifal code for rmail-enable-mime.
 +      (rmail-display-labels): Likewise.
 +      (rmail-show-message-1): Check rmail-enable-mime, and use
 +      rmail-show-mime-function for a MIME message.  Decode the headers
 +      according to RFC2047.
 +
 +2010-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/which-func.el (which-func-imenu-joiner-function):
 +      Return a string, as expected.
 +      (which-function-mode): Make sure we stop any previous timer before
 +      starting a new one.
 +
 +2010-11-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-default-method-alist)
 +      (tramp-default-user-alist, tramp-default-proxies-alist):
 +      Adapt custom options type.  (Bug#7445)
 +
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/python.el: Add Ipython support (Bug#5390).
 +      (python-shell-prompt-alist)
 +      (python-shell-continuation-prompt-alist): New options.
 +      (python--set-prompt-regexp): New function.
 +      (inferior-python-mode, run-python, python-shell):
 +      Require ansi-color.  Use python--set-prompt-regexp to set the comint
 +      prompt based on the Python interpreter.
 +      (python--prompt-regexp): New var.
 +      (python-check-comint-prompt)
 +      (python-comint-output-filter-function): Use it.
 +      (run-python): Use a pipe (Bug#5694).
 +
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/python.el (run-python): Doc fix.
 +      (python-keep-current-directory-in-path): New var (Bug#7454).
 +
 +2010-11-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * lpr.el (lpr-buffer, print-buffer, lpr-region, print-region):
 +      Prompt user before actually printing.
 +
 +2010-11-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * startup.el (package-enable-at-startup, package-initialize):
 +      Remove unnecessary declarations.
 +
 +2010-11-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/characters.el (glyphless-char-display-control):
 +      Exclude newline and TAB from the c0-control group.
 +
 +2010-11-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/sendmail.el (build-mail-aliases): Doc fix for autoload.
 +      (expand-mail-aliases): Remove unnecessary autoload.
 +
 +      * allout.el (allout-command-prefix, allout-mode-map): Declare.
 +
 +      * shell.el (shell-dir-cookie-re): Move definition before use.
 +
 +      * mail/emacsbug.el (report-emacs-bug-create-existing-bugs-buffer):
 +      Replace undefined CL functions.
 +
 +2010-11-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (prog-mode): Set bidi-paragraph-direction to
 +      left-to-right.
 +
 +      * term/pc-win.el (x-get-selection-internal): Emulation for MS-DOS.
 +
 +2010-11-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-outlook-format-1): New function, so that
 +      diary-outlook-formats can be sensitive to calendar-date-style.
 +      (diary-outlook-formats): Simplify the default setting.
 +      (diary-from-outlook-internal): Pass subject and body as arguments.
 +      Use dolist rather than dotimes.  Don't save the diary buffer.
 +      (diary-from-outlook-gnus, diary-from-outlook-rmail):
 +      Pass subject and body as explicit arguments to the -internal function.
 +
 +2010-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mail/rfc2368.el (rfc2368-parse-mailto-url): Unfold URLs before
 +      parsing them.  This makes mailto:...?subject=foo\nbar work.
 +
 +2010-11-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/diff.el (diff): Fix last change.
 +
 +2010-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el: Improve pcase-let.  Use "pcase--" prefix.
 +      (pcase--dontcare-upats): New var.
 +      (pcase-let, pcase-let*): Generate better code.
 +      Accept the same bodies as `let'.
 +      (pcase-dolist): New macro.
 +      (pcase--trivial-upat-p): New helper function.
 +      (pcase--expand): Strip leading "(let nil" if any.
 +
 +2010-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mail/mailclient.el (browse-url): Require.
 +      (mailclient-send-it): Bind `browse-url-mailto-function' to nil to
 +      use the external browser function to send the mail (bug#7469).
 +
 +      * net/browse-url.el (browse-url-browser-function): Revert the
 +      default back to the previous value, since the new value broke
 +      mailclient.el.
 +      (browse-url-mailto-function): New variable for mailto: URLs.
 +      (browse-url): Use the new variable for mailto: URLs.
 +
 +2010-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eshell/esh-cmd.el (eshell-parse-command):
 +      * eshell/esh-arg.el (eshell-parse-arguments):
 +      * eshell/em-script.el (eshell-source-file):
 +      Use with-silent-modifications.
 +
 +2010-11-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc.el (vc-merge): Remove optional arg PROMPT.  Always prompt
 +      for a merge location.
 +
 +      * vc/vc-bzr.el (vc-bzr-pull): Remove unused var.
 +      (vc-bzr-merge-branch): Always prompt.
 +      (vc-bzr-async-command): Use the full branch filename.
 +
 +2010-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * shell.el (shell): Use current-buffer by default if it's already
 +      a shell mode buffer and its process is dead.
 +      Suggested by Jose E. Marchesi <jemarch@gnu.org>.
 +
 +2010-11-23  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * mail/emacsbug.el (report-emacs-bug-query-existing-bugs):
 +      Mention that the keywords should be comma separated.
 +
 +2010-11-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc.el (vc-merge): Use vc-BACKEND-merge-branch if available.
 +      Accept optional prefix arg meaning to prompt for a command.
 +      (vc-update): Use vc-BACKEND-pull if available.  Accept optional
 +      prefix arg meaning to prompt for a command.
 +      (vc-pull): Alias for vc-update.
 +
 +      * vc/vc-bzr.el (vc-bzr-admin-branchconf, vc-bzr-history): New vars.
 +      (vc-bzr--branch-conf, vc-bzr-async-command, vc-bzr-pull)
 +      (vc-bzr-merge-branch): New functions, implementing merge-branch
 +      and pull operations.
 +
 +2010-11-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * Makefile.in: Fix up last merge.
 +
 +      * vc/diff.el (diff-old-temp-file, diff-new-temp-file): Remove.
 +      (diff-sentinel): Get them as arguments instead.
 +      (diff-old-file, diff-new-file, diff-extra-args): Remove.
 +      (diff-file-local-copy, diff-better-file-name): New funs.
 +      (diff-no-select): Rename from diff-into-buffer.
 +      Support buffers additionally to files.  Move `buf' arg.  Don't display buf.
 +      Prefer closures to buffer-local variables.
 +      (diff): Adjust accordingly.
 +      (diff-buffer-with-file): Move from files.el.
 +      * files.el (diff-buffer-with-file): Move to vc/diff.el.
 +      (diff-buffer-internal): Remove.
 +      (diff-buffer-buffer): Remove.
 +      (save-some-buffers-action-alist): Use diff-no-select so as not to guess
 +      the buffer name used, and so as not to mess up windows and frames.
 +
 +2010-11-22  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +
 +      * files.el: Make revert work with diff-buffer-with-file (bug#7277).
 +      (diff-buffer-internal): New function extracted from diff-buffer-with-file
 +      (diff-buffer-with-file): Use it.
 +      * vc/diff.el (diff-into-buffer): New fun, extracted from diff.
 +      (diff): Use it.
 +
 +2010-11-22  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * textmodes/reftex-ref.el (reftex-goto-label): Use the current
 +      \ref's or \pageref's value as default instead of initial input.
 +
 +2010-11-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (backup-by-copying-when-mismatch): The default value is
 +      now t.
 +
 +      * startup.el (normal-top-level):
 +      * net/tramp.el (tramp-handle-insert-file-contents): Do not set
 +      `backup-by-copying-when-mismatch'.
 +
 +2010-11-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * tool-bar.el (tool-bar-setup): Remove save as, print and customize.
 +
 +2010-11-21  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * progmodes/python.el (python-font-lock-keywords):
 +      Highlight top-level augmented assignments (Bug#6445).
 +
 +2010-11-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/ns-win.el (ns-right-control-modifier)
 +      (ns-right-command-modifier): Defvar them.
 +
 +      * cus-start.el (all): Add ns-right-control-modifier and
 +      ns-right-command-modifier (Bug#7458).
 +
 +2010-11-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/authors.el (authors-ignored-files)
 +      (authors-valid-file-names, authors-renamed-files-alist): Add entries.
 +
 +2010-11-20  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * mail/emacsbug.el (report-emacs-bug-query-existing-bugs)
 +      (report-emacs-bug-parse-query-results)
 +      (report-emacs-bug-create-existing-bugs-buffer): Pass through
 +      keywords used for querying the bug database to show them in the
 +      existing bugs buffer.
 +
 +2010-11-20  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * tool-bar.el (tool-bar-setup): Add some :vert-only keywords.
 +
 +      * info.el (info-tool-bar-map): Add some :vert-only keywords.
 +
 +2010-11-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/characters.el (glyphless-char-display-control):
 +      Make it a defcustom, with update-glyphless-char-display as its
 +      :set attribute.
 +      (top level): Don't call update-glyphless-char-display.
 +
 +2010-11-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.2.0.
 +
 +      * net/tramp.el (tramp-handle-insert-file-contents): Don't use
 +      `file-remote-p' (due to compatibility).
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-directly)
 +      (tramp-do-copy-or-rename-file-out-of-band): Use `ignore-errors'.
 +
 +      * net/trampver.el: Update release number.
 +
 +2010-11-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * faces.el (glyphless-char): Define value for `pc'.
 +
 +2010-11-20  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      Implemented a bug querying mechanism.
 +      * mail/emacsbug.el (report-emacs-bug-tracker-url): New variable.
 +      (report-emacs-bug-create-existing-bugs-buffer)
 +      (report-emacs-bug-parse-query-results)
 +      (report-emacs-bug-query-existing-bugs): New functions.
 +
 +2010-11-19  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * textmodes/reftex-ref.el (reftex-goto-label): If point is inside
 +      a \ref{} or \pageref{} macro, then use its value as initial input.
 +
 +2010-11-19  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-units.el (math-build-units-table-buffer):
 +      calc/README: Mention that the TeX specific units won't use the
 +      `tex' prefix in TeX mode.
 +      calc/calc-lang.el (math-variable-table): Don't use the `tex'
 +      prefix for units in TeX mode.
 +
 +2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (kill-new, kill-append, kill-region):
 +      * comint.el (comint-kill-region): Make the yank-handler argument
 +      obsolete.
 +
 +2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-bnf-classify): Signal errors for tokens
 +      that are both openers (resp. closers) and something else.
 +      (smie-grammar): Loosen definition of valid values.
 +      (smie-next-sexp, smie-down-list, smie-blink-matching-open)
 +      (smie-indent--parent, smie-rule-parent, smie-indent-keyword)
 +      (smie-indent-after-keyword): Adjust users.
 +      (smie-indent-keyword): Don't indent empty lines.
 +
 +      * vc-hg.el (vc-hg-program): New var.
 +      Suggested by Norman Gray <norman@astro.gla.ac.uk>.
 +      (vc-hg-state, vc-hg-working-revision, vc-hg-command): Use it.
 +
 +2010-11-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/autoload.el (autoload-find-destination): The function
 +      coding-system-eol-type may return non-numeric values.  (Bug#7414)
 +
 +2010-11-18  Ulrich Mueller  <ulm@gentoo.org>
 +
 +      * server.el (server-force-stop): Ensure the server is stopped (Bug#7409).
 +
 +2010-11-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * subr.el (posn-col-row): Pay attention to header line.  (Bug#7390)
 +
 +2010-11-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * textmodes/picture.el (picture-mouse-set-point): Don't use
 +      posn-col-row; explicitly compute the motion based on the posn at
 +      the window-start (Bug#7390).
 +
 +2010-11-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * novice.el (disabled-command-function):
 +      Fix 2009-11-15 change.  (Bug#7384)
 +
 +2010-11-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/calendar.el (diary-iso-date-forms): Make elements
 +      mutually exclusive.  (Bug#7377)
 +
 +2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-prec2->grammar): Obey equality constraints
 +      when filling the remaining "unconstrained" values.
 +
 +2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
 +      safety predicate.
 +
 +      * files.el (safe-local-variable-p): Gracefully handle errors.
 +
 +      * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule):
 +      Use smie-indent-virtual when indenting relative to an opener.
 +      (smie-rule-separator): Use smie-rule-parent.
 +      (smie-indent-keyword): Consult rules, even for openers at bol.
 +      (smie-indent-comment-close): Try to align closer's content.
 +
 +2010-11-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * ls-lisp.el (ls-lisp-dired-ignore-case): Make it an obsolete alias.
 +
 +2010-11-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * printing.el (pr-menu-bind): Doc fix.
 +
 +      * speedbar.el (speedbar-toggle-images): Doc fix.
 +
 +      * progmodes/python.el (python-shell): Doc fix.
 +
 +      * wid-edit.el (widget-field-use-before-change)
 +      (widget-use-overlay-change): Doc fixes.
 +
 +2010-11-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Minor cleanup to improve style.
 +      * textmodes/rst.el (rst-update-section): Use point-marker.
 +      (rst-get-decoration): Eliminate unneeded assignment.
 +      (rst-promote-region, rst-straighten-decorations)
 +      (rst-section-tree, rst-adjust): Use point-marker.
 +      (rst-toc-mode-mouse-goto): Avoid setq.
 +      (rst-shift-region-guts, rst-shift-region-left)
 +      (rst-iterate-leftmost-paragraphs, rst-iterate-leftmost-paragraphs-2)
 +      (rst-convert-bullets-to-enumeration): Use copy-marker.
 +
 +      * minibuffer.el (completion-fail-discreetly): New var.
 +      (completion--do-completion): Use it.
 +
 +      * electric.el (electric-pair-pairs): New var.
 +      (electric-pair-post-self-insert-function): Use it.
 +      (electric-layout-post-self-insert-function): Don't insert a before
 +      newline unless it's actually needed.
 +
 +2010-11-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/python.el (run-python): Explain why we remove the current
 +      directory from sys.path.  Suggested by Eric Hanchrow <erich@cozi.com>.
 +
 +      * progmodes/grep.el (grep-regexp-alist): Tighten the regexp (bug#7378).
 +
 +2010-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el: Rely on elecric-*-modes.
 +      (octave-mode-map): Don't bind ;, SPC, and LF.
 +      (octave-auto-indent, octave-auto-newline): Remove.
 +      (electric-layout-rules): Declare.
 +      (octave-mode): Set electric-layout-rules.
 +      (octave-indent-new-comment-line): Use reindent-then-newline-and-indent.
 +      (octave-reindent-then-newline-and-indent, octave-electric-semi)
 +      (octave-electric-space): Remove.
 +
 +      * electric.el (electric-layout-mode): New minor mode.
 +      (electric--after-char-pos): New function.
 +      (electric-indent-post-self-insert-function): Use it.
 +      (electric-layout-rules): New var.
 +      (electric-layout-post-self-insert-function): New function.
 +      (electric-indent-mode): Make them interact better.
 +
 +2010-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-syntax-table): Fix last change.
 +      (checkdoc-sentencespace-region-engine, checkdoc-this-string-valid)
 +      (checkdoc-proper-noun-region-engine): Use with-syntax-table.
 +
 +2010-11-15  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/flyspell.el (flyspell-generic-progmode-verify):
 +      Make sure to check inside the word (Bug#6761).
 +
 +2010-11-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): If the cursorColor resource is set,
 +      change the cursor face-spec (Bug#7392).
 +
 +2010-11-13  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      The main features of the following allout.el changes are:
 +      - implement user customization for the allout key bindings
 +      - add a customization control by which the user can inhibit use of
 +        a trailing Ctrl-H, so by default it's reserved for use with
 +        describe-prefix-bindings
 +      - adapt to new version of called-interactively-p, while
 +        maintaining backwards compatibility with old version
 +      - fix hotspot navigation so i works properly with meta-modified keys
 +
 +      * allout.el (allout-keybindings, allout-bind-keys)
 +      (allout-keybindings-binding, allout-prefixed-keybindings)
 +      (allout-unprefixed-keybindings, allout-preempt-trailing-ctrl-h)
 +      (allout-keybindings-list, allout-mode-map-adjustments)
 +      (allout-setup-mode-map): Establish allout-mode keymaps as user
 +      customizable settings, and also establish a customizable setting which
 +      regulates whether or not a trailing control-h is reserved for use with
 +      describe-prefix-bindings - and inhibit it by default, so that control-h
 +      *is* reserved for describe-prefix-bindings unless the user changes it.
 +
 +      * allout.el (allout-hotspot-key-handler): Distinguish more explicitly
 +      and accurately between modified and unmodified events, and handle
 +      modified events more comprehensively.
 +
 +      * allout.el (allout-substring-no-properties):
 +      Alias to use or provide version of `substring-no-properties'.
 +      (allout-solicit-alternate-bullet): Use `allout-substring-no-properties'.
 +
 +      * allout.el (allout-next-single-char-property-change):
 +      Alias to use or provide version of `next-single-char-property-change'.
 +      (allout-annotate-hidden, allout-hide-by-annotation):
 +      Use `allout-next-single-char-property-change'.
 +
 +      * allout.el (allout-select-safe-coding-system):
 +      Alias to use or provide version of `select-safe-coding-system'.
 +      (allout-toggle-subtree-encryption):
 +      Use `allout-select-safe-coding-system'.
 +
 +      * allout.el (allout-set-buffer-multibyte):
 +      Alias to use or provide version of `set-buffer-multibyte'.
 +      (allout-encrypt-string): Use `allout-set-buffer-multibyte'.
 +
 +      * allout.el (allout-called-interactively-p): Macro for using the
 +      different versions of called-interactively-p identically, depending on
 +      the subroutine's argument signature.
 +      (allout-back-to-current-heading, allout-beginning-of-current-entry):
 +      Use `(interactive "p")' instead of `(called-interactively-p)'.
 +
 +      * allout.el (allout-init, allout-ascend, allout-end-of-level)
 +      (allout-previous-visible-heading, allout-forward-current-level)
 +      (allout-backward-current-level, allout-show-children):
 +      Use `allout-called-interactively-p' instead of `called-interactively-p'.
 +
 +      * allout.el (allout-before-change-handler):
 +      Exempt edits to the (overlaid) character after the allout outline
 +      bullet from edit confirmation prompt.
 +
 +      * allout.el (allout-add-resumptions):
 +      Ensure that it respects correct buffer for keybindings.
 +
 +      * allout.el (allout-beginning-of-line):
 +      Use `allout-previous-single-char-property-change' alias for the sake of
 +      diverse compatibility.
 +
 +      * allout.el (allout-end-of-line):
 +      Use `allout-mark-active-p' to encapsulate respect for mark activity.
 +
 +2010-11-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.el (frame-notice-user-settings): Don't clobber other
 +      user-set parameters when calling face-set-after-frame-default in
 +      response to background-color parameter (Bug#7373).
 +
 +2010-11-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/characters.el (glyphless-char-display-control):
 +      Rename from glyphless-char-control; all users changed.  Doc fix.
 +      Signal an error if display method is not one of the recognized
 +      symbols.
 +
 +2010-11-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-line-beginning-position)
 +      (tramp-compat-line-end-position): Remove them.
 +
 +      * net/tramp.el (tramp-parse-rhosts-group)
 +      (tramp-parse-shosts-group, tramp-parse-sconfig-group)
 +      (tramp-parse-hosts-group, tramp-parse-passwd-group)
 +      (tramp-parse-netrc-group, tramp-parse-putty-group)
 +      * net/tramp-cmds.el (tramp-append-tramp-buffers)
 +      * net/tramp-sh.el (tramp-do-file-attributes-with-ls)
 +      (tramp-sh-handle-file-selinux-context)
 +      (tramp-sh-handle-file-name-all-completions)
 +      (tramp-sh-handle-insert-directory)
 +      (tramp-sh-handle-expand-file-name, tramp-find-executable)
 +      (tramp-wait-for-output, tramp-send-command-and-read)
 +      * net/tramp-smb.el (tramp-smb-read-file-entry)
 +      (tramp-smb-get-cifs-capabilities): Use `point-at-eol'.
 +
 +      * net/tramp-sh.el (tramp-sh-handle-insert-directory) Use
 +      `point-at-bol'.
 +      (tramp-remote-coding-commands): Add an alternative using "base64
 +      -d -i".  This is needed for older base64 versions from GNU
 +      coreutils.  Reported by Klaus Reichl
 +      <Klaus.Reichl@thalesgroup.com>.
 +
 +2010-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
 +
 +      * simple.el (count-words-region): New function.
 +
 +2010-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * shell.el (shell-dir-cookie-re): New custom variable.
 +      (shell-dir-cookie-watcher): New function.
 +
 +      * vc/vc.el (vc-deduce-backend): Use default-directory in shell-mode
 +      and compilation-mode (bug#7350).
 +
 +      * vc/smerge-mode.el (smerge-refine): Choose better default part to
 +      highlight when one of them is empty.
 +
 +      * skeleton.el (skeleton-read): Don't use `newline' since it may strip
 +      trailing space.
 +      (skeleton-newline): New function.
 +      (skeleton-internal-1): Use it.
 +
 +      * simple.el (open-line): `newline' may strip trailing space.
 +
 +2010-11-12  Kevin Ryde  <user42@zip.com.au>
 +
 +      * international/mule-cmds.el (princ-list): Use mapc.
 +
 +2010-11-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-log-buffer): New constant.
 +      Use it to replace all instances of "*Compile-Log*"
 +
 +2010-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase-let*, pcase-let): Add debug and
 +      indentation specs.
 +
 +2010-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/modula2.el: Use SMIE and skeleton.
 +      (m2-mode-syntax-table): (*..*) can be nested.
 +      Add //...\n.  Fix paren syntax.
 +      (m2-mode-map): Remove LF and TAB bindings.
 +      (m2-indent): Add safety property.
 +      (m2-smie-grammar): New var.
 +      (m2-smie-refine-colon, m2-smie-refine-of, m2-smie-backward-token)
 +      (m2-smie-forward-token, m2-smie-refine-semi, m2-smie-rules): New funs.
 +      (m2-mode): Use define-derived-mode.
 +      (m2-newline, m2-tab): Remove.
 +      (m2-begin, m2-case, m2-definition, m2-else, m2-for, m2-header)
 +      (m2-if, m2-loop, m2-module, m2-or, m2-procedure, m2-with, m2-record)
 +      (m2-stdio, m2-type, m2-until, m2-var, m2-while, m2-export)
 +      (m2-import): Use define-skeleton.
 +
 +2010-11-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/lucid.el: Don't warn about any CL functions in this file.
 +
 +      * ls-lisp.el (ls-lisp-ignore-case, ls-lisp-dirs-first)
 +      (ls-lisp-verbosity): Add custom :set-after property.
 +      (ls-lisp-verbosity, ls-lisp-use-localized-time-format): Doc fixes.
 +      (ls-lisp-format, ls-lisp-format-time): Don't take `now' as an argument.
 +      (ls-lisp-insert-directory): Update caller.
 +      (ls-lisp-set-options): New function.
 +      (ls-lisp-emulation): Use ls-lisp-set-options for custom :set.
 +      Doc fix.
 +
 +      * play/landmark.el (lm-prompt-for-move):
 +      * play/gomoku.el (gomoku-prompt-for-move): Remove nonsensical code.
 +
 +      * progmodes/idlw-complete-structtag.el: Remove unused dec `name'.
 +
 +      * progmodes/idlwave.el (idlwave-routine-entry-compare-twins)
 +      (idlwave-study-twins): Prefix dynamic local variable `name'.
 +      (idlwave-routine-twin-compare): Update for above change.
 +
 +      * progmodes/idlw-help.el (idlwave-do-mouse-completion-help):
 +      Prefix dynamic local variables `name', `kwd', and `link'.
 +      * progmodes/idlw-shell.el (idlwave-shell-complete-execcomm-help):
 +      * progmodes/idlw-complete-structtag.el
 +      (idlwave-complete-structure-tag-help):
 +      * progmodes/idlwave.el (idlwave-complete-sysvar-help)
 +      (idlwave-complete-sysvar-tag-help)
 +      (idlwave-complete-class-structure-tag-help):
 +      Update for above name changes.
 +
 +2010-11-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/browse-url.el (browse-url-browser-function): Change the
 +      default to use `browse-url-mail' on mailto: URLs.
 +
 +2010-11-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-read-all-archive-contents):
 +      Reset package-archive-contents to nil before re-reading.
 +
 +2010-11-10  Brandon Craig Rhodes  <brandon@rhodesmill.org>  (tiny change)
 +
 +      * textmodes/flyspell.el (flyspell-word): Do not re-check words
 +      already found as misspellings by (flyspell-large-region), just
 +      do highlighting (bug#7322).
 +
 +2010-11-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/octave-mod.el (octave-mark-block): Update for smie change.
 +
 +      * emulation/edt.el (edt-with-position): New macro.
 +      (edt-find-forward, edt-find-backward, edt-find-next-forward)
 +      (edt-find-next-backward, edt-sentence-forward, edt-sentence-backward)
 +      (edt-paragraph-forward, edt-paragraph-backward): Use it.
 +
 +      * emulation/tpu-extras.el (tpu-with-position): New macro.
 +      (tpu-paragraph, tpu-page, tpu-search-internal): Use it.
 +
 +      * textmodes/texnfo-upd.el (texinfo-pointer-name): Fix typo.
 +
 +      * textmodes/texnfo-upd.el (texinfo-all-menus-update)
 +      (texinfo-menu-copy-old-description, texinfo-start-menu-description)
 +      (texinfo-master-menu, texinfo-insert-node-lines)
 +      (texinfo-multiple-files-update):
 +      * textmodes/texinfmt.el (texinfo-append-refill, texinfo-copying):
 +      Use line-beginning-position.
 +
 +      * progmodes/cperl-mode.el (cperl-find-pods-heres, cperl-write-tags):
 +      No recent Emacs supports system-type `emx'.
 +
 +      * progmodes/ada-xref.el (is-windows): Rename to ada-on-ms-windows.
 +      (ada-command-separator, ada-default-prj-properties)
 +      (ada-find-any-references): Update for above name change.
 +
 +      * dirtrack.el (dirtrack-directory-function)
 +      (dirtrack-canonicalize-function):
 +      * filecache.el (file-cache-completion-ignore-case)
 +      (file-cache-case-fold-search, file-cache-ignore-case):
 +      * term.el (serial-port-is-file-p): Cosmetic change.
 +
 +      * emulation/viper-init.el (viper-ms-style-os-p): Doc fix.
 +      Remove non-existent `windows-95' system-type.
 +      * dired.el (dired-chown-program): Remove non-existent `linux'
 +      system-type.
 +
 +      * net/net-utils.el (net-utils-remove-ctl-m): Use memq for system-types.
 +      (ping-program-options): Remove non-existent `linux' system-type.
 +
 +      * startup.el (package-initialize): Update declaration.
 +
 +      * ls-lisp.el (ls-lisp-time-lessp, ls-lisp-time-to-seconds): Remove.
 +      (ls-lisp-handle-switches): Use time-less-p.
 +      (ls-lisp-format-time): Use float-time.
 +
 +      * textmodes/remember.el (remember-time-to-seconds): Remove.
 +      (remember-store-in-mailbox): Use float-time.
 +
 +      * calendar/timeclock.el (timeclock-time-to-seconds): Make it an alias.
 +
 +      * calendar/time-date.el (time-to-seconds): Always an alias on Emacs,
 +      never a real function.
 +      (with-no-warnings): Remove compat stub, now unused.
 +      (time-less-p): Doc fix.
 +      (time-to-number-of-days): Simplify.
 +
 +      * eshell/esh-util.el (eshell-time-less-p, eshell-time-to-seconds):
 +      Remove.
 +      (eshell-read-passwd, eshell-read-hosts): Use time-less-p.
 +      * eshell/esh-test.el (eshell-test, eshell-show-usage-metrics):
 +      * eshell/em-unix.el (eshell-show-elapsed-time, eshell/time):
 +      * eshell/em-pred.el (eshell-pred-file-time): Use float-time.
 +      * eshell/em-ls.el (eshell-ls-sort-entries): Use time-less-p.
 +
 +      * eshell/em-unix.el (eshell-remove-entries, eshell/rm)
 +      (eshell-shuffle-files, eshell-shorthand-tar-command)
 +      (eshell-mvcpln-template, eshell/mv, eshell/cp, eshell/ln):
 +      Prefix dynamic locals `interactive', `preview', `recursive', `verbose'.
 +      * eshell/em-glob.el (eshell-extended-glob, eshell-glob-entries):
 +      Prefix dynamic local variable `matches'.
 +
 +      * skeleton.el (skeleton-internal-list, skeleton-internal-1):
 +      Prefix dynamic local variable `skeleton'.
 +
 +2010-11-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * net/browse-url.el (browse-url-mail): Insert body part of mailto url
 +      in mail buffer; make yank-action always a command that yanks original
 +      buffer.
 +
 +2010-11-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/tcl.el (tcl-hairy-scan-for-comment): Doc fix.
 +
 +2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (minibuffer-completion-help): Specify the end of the
 +      completion field (bug#7211).
 +
 +      * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322)
 +      Fix handling of backslash escapes.
 +      (python-quote-syntax): Adjust accordingly.
 +
 +2010-11-09  Richard Levitte  <richard@levitte.org>  (tiny change)
 +
 +      * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status)
 +      (vc-mtn-workfile-branch): Adjust to new output format.
 +
 +2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * international/mule-cmds.el (princ-list): Mark as obsolete.
 +
 +2010-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el: New package.
 +
 +2010-11-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (backup-by-copying-when-mismatch):
 +      Set `permanent-local' property.
 +
 +      * net/tramp.el (tramp-handle-insert-file-contents): Do not set
 +      `permanent-local' property for `backup-by-copying-when-mismatch'.
 +
 +2010-11-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * ls-lisp.el (insert-directory): Doc fix.  (bug#7285)
 +
 +2010-11-09  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      * progmodes/verilog-mode.el (verilog-insert-one-definition)
 +      (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and
 +      AUTOINOUT for SV style multidimensional arrays, bug294.
 +      Reported by Eric Mastromarchi.
 +      (verilog-preprocess): Use with-current-buffer and
 +      font-lock-fontify-buffer to cleanup style issues.
 +
 +2010-11-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * locate.el (locate, locate-mode): Doc fixes.
 +
 +2010-11-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * server.el (server-start): New arg INHIBIT-PROMPT prevents asking
 +      user for confirmation.
 +      (server-force-stop): Use it.
 +      (server-start): Use server-force-stop for kill-emacs-hook, to
 +      avoid user interaction while killing Emacs.
 +
 +2010-11-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/meta-mode.el: Remove leading `*' from defcustom docs.
 +      (meta-indent-line): Simplify.
 +
 +      * vc/emerge.el (emerge-line-number-in-buf):
 +      * textmodes/ispell.el (ispell-region):
 +      * textmodes/fill.el (current-fill-column):
 +      * progmodes/xscheme.el (xscheme-send-current-line):
 +      * progmodes/vhdl-mode.el (vhdl-current-line, vhdl-line-copy):
 +      * progmodes/tcl.el (tcl-hairy-scan-for-comment):
 +      * progmodes/sh-script.el (sh-handle-prev-do):
 +      * progmodes/meta-mode.el (meta-indent-line):
 +      * progmodes/idlwave.el (idlwave-goto-comment, idlwave-fill-paragraph)
 +      (idlwave-in-quote):
 +      * progmodes/idlw-shell.el (idlwave-shell-current-frame)
 +      (idlwave-shell-update-bp-overlays, idlwave-shell-sources-filter):
 +      * progmodes/fortran.el (fortran-looking-at-if-then):
 +      * progmodes/etags.el (find-tag-in-order, etags-snarf-tag):
 +      * progmodes/cperl-mode.el (cperl-sniff-for-indent)
 +      (cperl-find-pods-heres):
 +      * progmodes/ada-mode.el (ada-get-current-indent, ada-narrow-to-defun):
 +      * net/quickurl.el (quickurl-list-insert):
 +      * net/ldap.el (ldap-search-internal):
 +      * net/eudc.el (eudc-expand-inline):
 +      * mail/sendmail.el (sendmail-send-it):
 +      * mail/mspools.el (mspools-visit-spool, mspools-get-spool-name):
 +      * emulation/viper-cmd.el (viper-paren-match, viper-backward-indent)
 +      (viper-brac-function):
 +      * calc/calc-yank.el (calc-do-grab-region):
 +      * calc/calc-keypd.el (calc-keypad-press):
 +      * term.el (term-move-columns, term-insert-spaces):
 +      * speedbar.el (speedbar-highlight-one-tag-line):
 +      * simple.el (current-word):
 +      * mouse-drag.el (mouse-drag-should-do-col-scrolling):
 +      * info.el (Info-find-node-in-buffer-1, Info-follow-reference)
 +      (Info-scroll-down):
 +      * hippie-exp.el (he-line-beg):
 +      * epa.el (epa--marked-keys):
 +      * dired-aux.el (dired-kill-line, dired-do-kill-lines)
 +      (dired-update-file-line, dired-add-entry, dired-remove-entry)
 +      (dired-relist-entry):
 +      * buff-menu.el (Buffer-menu-buffer):
 +      * array.el (current-line):
 +      * allout.el (allout-resolve-xref)
 +      (allout-latex-verbatim-quote-curr-line):
 +      Replace yet more uses of end-of-line etc with line-end-position, etc.
 +
 +2010-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-display-status-buffer)
 +      (checkdoc-interactive-loop, checkdoc-recursive-edit): Avoid princ-list.
 +      (checkdoc-syntax-table): Initialize in the declaration.
 +      (emacs-lisp-mode-hook): Use just checkdoc-minor-mode now that it turns
 +      the mode on unconditionally.
 +
 +      * emacs-lisp/cl-macs.el (extent-data, extent-face, extent-priority)
 +      (extent-end-position, extent-start-position): Remove setf method for
 +      non-existing functions (bug#7319).
 +
 +2010-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el: Simplify the smie-rules-function return values.
 +      (smie-precs->prec2): Rename from smie-precs-precedence-table.
 +      (smie-bnf->prec2): Rename from smie-bnf-precedence-table.
 +      (smie-prec2->grammar): Rename from smie-prec2-levels.
 +      (smie-grammar): Rename from smie-op-levels.
 +      (smie-indent--hanging-p): Rename from smie-hanging-p.
 +      (smie-rule-hanging-p): New alias.
 +      (smie-indent--bolp): Rename from smie-bolp.
 +      (smie-indent--hanging-p): New alias.
 +      (smie--token): New dynamically bound variable.
 +      (smie-indent--parent): New function.
 +      (smie-rule-parent-p): Use it; rename from smie-parent-p.
 +      (smie-rule-next-p): Rename from smie-next-p.
 +      (smie-rule-prev-p): Rename from smie-prev-p.
 +      (smie-rule-sibling-p, smie-rule-parent)
 +      (smie-indent--separator-outdent, smie-rule-separator): New functions.
 +      (smie-rule-separator-outdent): New var.
 +      (smie-indent--rule): Merge with smie-indent--column.
 +      (smie-indent-forward-token, smie-indent-backward-token):
 +      Also recognize close parens.
 +      (smie-indent-keyword): Don't use smie-indent--column any more.
 +      (smie-indent-after-keyword): Ignore closers by default.
 +      (smie-indent-line): Use with-demoted-errors.
 +      * progmodes/octave-mod.el (octave-smie-grammar):
 +      Rename from octave-smie-op-levels.
 +      (octave-smie-rules): Adjust to new behavior.
 +      * progmodes/prolog.el (prolog-smie-grammar):
 +      Rename from prolog-smie-op-levels.
 +
 +2010-11-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * eshell/esh-util.el (subst-char-in-string)
 +      (directory-files-and-attributes): These compatibility definitions are
 +      not needed on any version of Emacs since at least 21.4.
 +
 +      * progmodes/verilog-mode.el (verilog-get-beg-of-line)
 +      (verilog-get-end-of-line): Remove.
 +      (verilog-within-string, verilog-re-search-forward-substr)
 +      (verilog-re-search-backward-substr, verilog-set-auto-endcomments)
 +      (verilog-surelint-off, verilog-getopt-file, verilog-highlight-region):
 +      Use point-at-bol, point-at-eol.
 +      * progmodes/pascal.el (pascal-get-beg-of-line, pascal-get-end-of-line):
 +      Remove.
 +      (pascal-declaration-end, pascal-declaration-beg, pascal-within-string)
 +      (electric-pascal-terminate-line, pascal-set-auto-comments)
 +      (pascal-indent-paramlist, pascal-indent-declaration)
 +      (pascal-get-lineup-indent, pascal-func-completion)
 +      (pascal-get-completion-decl, pascal-var-completion, pascal-completion):
 +      Use point-at-bol, point-at-eol.
 +      * progmodes/flymake.el (flymake-line-beginning-position)
 +      (flymake-line-end-position): Remove.
 +      (flymake-highlight-line): Use point-at-bol, point-at-eol.
 +      * eshell/esh-util.el (line-end-position, line-beginning-position):
 +      Remove compat definitions.
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
 +      Use end-of-line N.
 +      (checkdoc-this-string-valid-engine, checkdoc-file-comments-engine):
 +      Use line-end-position.
 +
 +      * emacs-lisp/chart.el (chart-zap-chars):
 +      * play/decipher.el (decipher-set-map):
 +      * progmodes/ada-mode.el (ada-get-current-indent)
 +      (ada-search-ignore-string-comment, ada-tab-hard, ada-untab-hard):
 +      * progmodes/ada-prj.el (ada-prj-load-from-file, ada-prj-display-help):
 +      * progmodes/ada-xref.el (ada-initialize-runtime-library)
 +      (ada-get-all-references):
 +      * progmodes/cperl-mode.el (cperl-electric-paren)
 +      (cperl-electric-rparen, cperl-electric-keyword, cperl-electric-else)
 +      (cperl-linefeed, cperl-sniff-for-indent, cperl-to-comment-or-eol)
 +      (cperl-find-pods-heres, cperl-indent-exp, cperl-fix-line-spacing)
 +      (cperl-word-at-point-hard):
 +      * progmodes/idlw-shell.el (idlwave-shell-move-or-history)
 +      (idlwave-shell-filename-string, idlwave-shell-batch-command)
 +      (idlwave-shell-display-line):
 +      * progmodes/idlwave.el (idlwave-show-begin, idlwave-fill-paragraph)
 +      (idlwave-calc-hanging-indent, idlwave-auto-fill, idlwave-template):
 +      * progmodes/js.el (js--re-search-forward-inner)
 +      (js--re-search-backward-inner):
 +      * progmodes/vhdl-mode.el (vhdl-align-region-1, vhdl-align-region-2)
 +      (vhdl-fix-clause, vhdl-compose-configuration-architecture):
 +      * progmodes/ruby-mode.el (ruby-parse-partial, eval-when-compile):
 +      * textmodes/flyspell.el (flyspell-process-localwords):
 +      * textmodes/ispell.el (ispell-buffer-local-parsing)
 +      (ispell-buffer-local-dict, ispell-buffer-local-words):
 +      Use point-at-bol and point-at-eol.
 +
 +      * speedbar.el (speedbar-generic-item-info)
 +      (speedbar-item-info-tag-helper, speedbar-change-expand-button-char)
 +      (speedbar-add-indicator, speedbar-check-vc-this-line)
 +      (speedbar-check-obj-this-line, speedbar-extract-one-symbol)
 +      (speedbar-buffers-line-directory, speedbar-buffer-revert-buffer):
 +      Replace more uses of end-of-line etc with line-end-position.
 +
 +2010-11-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/texnfo-upd.el (texinfo-start-menu-description)
 +      (texinfo-update-menu-region-beginning, texinfo-menu-first-node)
 +      (texinfo-delete-existing-pointers, texinfo-find-pointer)
 +      (texinfo-clean-up-node-line, texinfo-insert-node-lines)
 +      (texinfo-multiple-files-update):
 +      * textmodes/table.el (table--probe-cell-left-up)
 +      (table--probe-cell-right-bottom):
 +      * textmodes/picture.el (picture-tab-search):
 +      * textmodes/page-ext.el (pages-copy-header-and-position)
 +      (pages-directory-for-addresses):
 +      * progmodes/vera-mode.el (vera-get-offset):
 +      * progmodes/simula.el (simula-calculate-indent):
 +      * progmodes/python.el (python-pdbtrack-overlay-arrow):
 +      * progmodes/prolog.el (end-of-prolog-clause):
 +      * progmodes/perl-mode.el (perl-calculate-indent, perl-indent-exp):
 +      * progmodes/icon.el (indent-icon-exp):
 +      * progmodes/etags.el (tag-re-match-p):
 +      * progmodes/ebrowse.el (ebrowse-show-file-name-at-point):
 +      * progmodes/ebnf2ps.el (ebnf-begin-file):
 +      * progmodes/dcl-mode.el (dcl-back-to-indentation-1)
 +      (dcl-save-local-variable):
 +      * play/life.el (life-setup):
 +      * play/gametree.el (gametree-looking-at-ply):
 +      * nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set):
 +      * mail/sendmail.el (mail-mode-auto-fill):
 +      * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
 +      * emacs-lisp/edebug.el (edebug-overlay-arrow):
 +      * emacs-lisp/checkdoc.el (checkdoc-this-string-valid):
 +      * woman.el (woman-parse-numeric-value, woman2-TH, woman2-SH)
 +      (woman-tab-to-tab-stop, WoMan-warn-ignored):
 +      * type-break.el (type-break-file-keystroke-count):
 +      * term.el (term-replace-by-expanded-history-before-point)
 +      (term-skip-prompt, term-extract-string):
 +      * speedbar.el (speedbar-edit-line, speedbar-expand-line)
 +      (speedbar-contract-line, speedbar-toggle-line-expansion)
 +      (speedbar-parse-c-or-c++tag, speedbar-parse-tex-string)
 +      (speedbar-buffer-revert-buffer, speedbar-highlight-one-tag-line):
 +      * sort.el (sort-skip-fields):
 +      * skeleton.el (skeleton-internal-list):
 +      * simple.el (line-move-finish, line-move-to-column):
 +      * shell.el (shell-forward-command):
 +      * misc.el (copy-from-above-command):
 +      * makesum.el (double-column):
 +      * ebuff-menu.el (electric-buffer-update-highlight):
 +      * dired.el (dired-move-to-end-of-filename):
 +      * dframe.el (dframe-popup-kludge):
 +      * bookmark.el (bookmark-kill-line, bookmark-bmenu-show-filenames):
 +      * arc-mode.el (archive-get-lineno):
 +      Use line-end-position and line-beginning-position.
 +
 +      * progmodes/idlwave.el (idlwave-routine-entry-compare-twins):
 +      (idlwave-study-twins): Prefix dynamic local `class'.
 +      (idlwave-routine-twin-compare): Update for above name change.
 +
 +      * emacs-lisp/eieio-comp.el (byte-compile-file-form-defmethod):
 +      Use boundp tests to silence compiler.  Update for changed name of
 +      bytecomp-filename variable.
 +
 +      * emulation/viper-cmd.el (viper-read-string-with-history):
 +      Prefix dynamic local `initial'.
 +      (viper-minibuffer-standard-hook): Update for above name change.
 +
 +      * emacs-lisp/elint.el (elint-init-env): Prefix dynamic local `env'.
 +      (elint-init-form): Update for above name change.
 +
 +      * mail/mail-extr.el (mail-extract-address-components): Give dynamic
 +      local variables `cbeg' and `cend' a prefix.
 +      (mail-extr-voodoo): Update for above name change.
 +
 +      * textmodes/reftex-toc.el (reftex-toc-do-promote)
 +      (reftex-toc-promote-prepare): Pass `delta' as an explicit argument.
 +      (reftex-toc-promote-action): Doc fix.
 +
 +      * textmodes/reftex-sel.el (reftex-select-item): Give local variables
 +      `prompt', `data' a prefix.
 +      (reftex-select-post-command-hook, reftex-select-callback)
 +      (reftex-select-mouse-accept, reftex-select-read-cite):
 +      Update for above name changes.
 +
 +      * textmodes/reftex-ref.el (reftex-reference): Rename local variable
 +      `refstyle' to reftex-refstyle.
 +      (reftex-offer-label-menu): Update for above name change.
 +      * textmodes/reftex-sel.el (reftex-select-toggle-varioref): Update for
 +      `refstyle' name change.
 +
 +      * vc/emerge.el (emerge-eval-in-buffer): Remove, and replace all uses
 +      with with-current-buffer.
 +      (diff, template): Give dynamic local variables a prefix.
 +      (emerge-line-numbers): Rename local `diff' to emerge-line-diff.
 +      (emerge-line-number-in-buf): Update for above name change.
 +      (emerge-combine-versions-internal): Rename local `template' to
 +      emerge-combine-template.
 +      (emerge-combine-versions-edit): Update for above name change.
 +
 +2010-11-06  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * textmodes/reftex-cite.el
 +      (reftex-extract-bib-entries-from-thebibliography): Match bibitem
 +      entries with whitespace after \bibitem.
 +      (reftex-create-bibtex-file): Match entries containing numbers and
 +      symbol constituents.  Make sure that entries with whitespace at
 +      various places are found.
 +
 +2010-11-05  Christian Millour  <cm@abtela.com>  (tiny change)
 +
 +      * shell.el (shell-process-popd): Made aware of comint-file-name-prefix.
 +
 +2010-11-05  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * mouse.el (mouse-yank-primary): Update comment (Bug#6802).
 +
 +2010-11-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * woman.el (woman0-roff-buffer, woman1-roff-buffer)
 +      (woman2-roff-buffer): Give local variable `request' a prefix.
 +      (woman0-macro): Rename argument `request' in the same way.
 +      (woman-request): New name for `request' dynamic variable.
 +      (woman-unquote, woman-forward-arg): Update for above name change.
 +      (woman1-roff-buffer): Give local variable `unquote' a prefix.
 +      (woman1-unquote): New name for `unquote' dynamic variable.
 +      (woman1-B-or-I, woman1-alt-fonts): Update for above name change.
 +      (woman-translations): Rename from `translations'.  No longer global.
 +      (woman2-tr, woman-translate): Update for above name change.
 +      (woman-translate): Check for bound variable.
 +      (woman2-roff-buffer): Give local variable `translations' a prefix.
 +
 +      * play/doctor.el: Give all local variables a prefix.  Update callers.
 +      (doc$, doctor-put-meaning): Use backquote.
 +
 +      * emacs-lisp/cl-macs.el (loop): Give local variable args a prefix.
 +      (cl-parse-loop-clause, cl-loop-handle-accum): Update for above change.
 +
 +      * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Give local
 +      variables bytes, ptr, op a prefix.
 +      (disassemble-offset): Update for above change.
 +
 +2010-11-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-unpack): Remove no-op.
 +      (package--builtins, package--dir): Doc fix.
 +      (package-activate-1, package-activate, package-install)
 +      (package-compute-transaction): Fix error message.
 +      (package-delete): Use delete-directory.  Omit system packages.
 +      (package-initialize): Set package-alist to nil first.
 +      (package-menu-mark-delete, package-menu-mark-install): Don't add
 +      symbols that are inconsistent with the package state.
 +      (package-menu-execute): Perform deletions and installations as
 +      single batch operations.
 +
 +2010-11-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/idlwave.el (idlwave-pset): Only used on XEmacs.
 +      (props): Remove unnecessary declaration.
 +
 +      * textmodes/ispell.el (ispell-init-process): On Emacs, always use
 +      set-process-query-on-exit-flag.
 +
 +      * textmodes/reftex-toc.el (name1, dummy, dummy2): Remove unused decs.
 +      (reftex-toc-do-promote): Remove unused local `mpos'.
 +      (reftex-toc-restore-region): Make `mpos' local to this function.
 +
 +      * net/dbus.el (dbus-name-owner-changed-handler): Doc fix.
 +
 +      * play/landmark.el (lm-losing-threshold): Correct spelling.
 +      (lm-human-plays): Use new name.
 +
 +      * play/gomoku.el (gomoku-loosing-threshold): Correct spelling.
 +      (gomoku-human-plays): Use new name.
 +
 +      * play/gomoku.el (nil-score, Xscore, XXscore, XXXscore, XXXXscore)
 +      (Oscore, OOscore, OOOscore, OOOOscore): Rename with gomoku- prefix.
 +      (gomoku-score-trans-table, gomoku-winning-threshold)
 +      (gomoku-loosing-threshold, gomoku-init-score-table): Use new names.
 +
 +2010-11-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el: Don't put built-in packages in
 +      package-alist, to avoid loading inefficiencies.
 +      (package-built-in-p): Make VERSION optional, and treat it as a
 +      minimum acceptable version.
 +      (package-activate): Search separately for built-in packages.
 +      Emit a warning if a dependency fails.
 +      (define-package): Handle most common case, where there is no
 +      obsolete package, first.
 +      (package-compute-transaction): Print required version in error.
 +      (package--initialized): New variable.
 +      (list-packages): Use it.
 +      (package-initialize): Optional arg NO-ACTIVATE.  Don't put
 +      built-in packages in packages-alist; keep it separate.
 +      Set package--initialized.
 +      (describe-package): Avoid activating packages as a side-effect.
 +      Search separately for built-in packages.
 +      (describe-package-1): Handle the case where an elpa package is
 +      simultaneously built-in and available/installed.
 +      (package-installed-p, package--generate-package-list):
 +      Search separately for built-in packages.
 +      (package-load-descriptor): Doc fix.
 +
 +2010-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function):
 +      Handle __DATA__ and __END__.
 +
 +2010-11-02  Noah Friedman  <friedman@splode.com>
 +
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): If bytecomp-arg is
 +      nil, do not ask to recompile files that are not already compiled,
 +      and do not recompile them.
 +
 +2010-11-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-initialize): Ensure that
 +      obsoleted built-in packages are not in package-activated-list
 +      during activation.
 +      (describe-package-1): Make the "installed" status override
 +      "built-in".
 +
 +2010-11-01  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * subr.el (version-separator, version-regexp-alist): Remove '*'
 +      from docstring.
 +      (version-list-<=, version<=, version=): Doc fix.
 +
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * faces.el (glyphless-char): Inherit underline for tty.
 +
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
 +
 +      Implement various display methods for glyphless characters.
 +
 +      * international/characters.el (char-acronym-table): New variable.
 +      (glyphless-char-control): New variable.
 +      (update-glyphless-char-display): New function.
 +
 +      * faces.el (glyphless-char): New face.
 +
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/holidays.el (general-holidays, oriental-holidays)
 +      (local-holidays, other-holidays, hebrew-holidays, christian-holidays)
 +      (islamic-holidays, bahai-holidays, solar-holidays): Move aliases before
 +      the definitions of their targets.
 +
 +      * emacs-lisp/smie.el (smie): New custom group.
 +      (smie-blink-matching-inners, smie-indent-basic): Add :group.
 +
 +      * faces.el (xw-defined-colors, x-setup-function-keys):
 +      * mouse-sel.el (x-select-text):
 +      * term/w32console.el (x-setup-function-keys): Update declarations.
 +
 +      * progmodes/ruby-mode.el (ruby-syntax-propertize-heredoc): Declare.
 +
 +      * textmodes/ispell.el (comment-add): Declare.
 +
 +      * net/gnutls.el (gnutls-boot, gnutls-errorp, gnutls-error-string):
 +      Declare.
 +
 +      * info.el (finder-keywords-hash, package-alist): Declare.
 +
 +2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * finder.el (finder-compile-keywords): Don't use intern-soft,
 +      since package names may not yet exist in the obarray.
 +
 +2010-11-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc-arch.el (vc-arch-checkin):
 +      * vc/vc-cvs.el (vc-cvs-checkin):
 +      * vc/vc-mtn.el (vc-mtn-checkin):
 +      * vc/vc-rcs.el (vc-rcs-checkin):
 +      * vc/vc-sccs.el (vc-sccs-checkin):
 +      * vc/vc-svn.el (vc-svn-checkin): Remove optional extra arg, unused
 +      since 2010-04-21 commit by Stefan Monnier.
 +
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): Fix previous change.
 +
 +      * startup.el (package-enable-at-startup, package-initialize):
 +      Silence compiler.
 +
 +      * progmodes/ada-mode.el (ada-font-lock-syntactic-keywords):
 +      Silence compiler.
 +
 +2010-10-31  Julien Danjou  <julien@danjou.info>
 +
 +      * emacs-lisp/bytecomp.el (byte-recompile-file): New fun (bug#7297).
 +      (byte-recompile-directory):
 +      * emacs-lisp/lisp-mode.el (emacs-lisp-byte-compile-and-load):
 +      Use `byte-recompile-file'.
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-start.el: Handle standard values via a keyword.
 +      Only set version property if specified.
 +      (cursor-in-non-selected-windows, menu-bar-mode)
 +      (tool-bar-mode, show-trailing-whitespace):
 +      Do not specify standard values.
 +      (transient-mark-mode, temporary-file-directory): Use :standard.
 +
 +2010-10-31  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/x-win.el (x-get-selection-value): New function that gets
 +      PRIMARY with type as specified in x-select-request-type.  (Bug#6802)
 +
 +2010-10-31  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-insert-file-contents): For root,
 +      preserve owner and group when editing files.  (Bug#7289)
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * speedbar.el (speedbar-mode):
 +      * play/fortune.el (fortune-in-buffer, fortune):
 +      * play/gomoku.el (gomoku-mode):
 +      * play/landmark.el (lm-mode):
 +      * textmodes/bibtex.el (bibtex-validate, bibtex-validate-globally):
 +      Replace inappropriate uses of toggle-read-only.  (Bug#7292)
 +
 +      * select.el (x-selection): Mark it as an obsolete alias.
 +
 +2010-10-31  Aaron S. Hawley  <aaron.s.hawley@gmail.com>
 +
 +      * vc/add-log.el (find-change-log): Use derived-mode-p rather than
 +      major-mode (bug#7284).
 +
 +2010-10-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * menu-bar.el (menu-bar-files-menu): Make it into an actual alias,
 +      rather than just an unused variable that inherits from the real one.
 +
 +2010-10-31  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph): Fix an off-by-1 error.
 +      This fixes bug #7185.
 +
 +2010-10-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Search for package directories, and
 +      don't load package.el if none are found.
 +
 +      * emacs-lisp/package.el (describe-package, list-packages):
 +      Call package-initialize if it has not been called yet.
 +
 +2010-10-30  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-fonts.el (c-font-lock-enum-tail): New function
 +      which fontifies the tail of an enum.
 +      (c-basic-matchers-after): Insert a call to the above new function.
 +      This fixes bug #7264.
 +
 +2010-10-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-start.el: Add :set properties for minor modes menu-bar-mode,
 +      tool-bar-mode, transient-mark-mode.  (Bug#7306)
 +      Include the :set property in the dumped Emacs.
 +
 +2010-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      SMIE: change indent rules format, improve smie-setup.
 +      * emacs-lisp/smie.el (smie-precs-precedence-table)
 +      (smie-merge-prec2s, smie-bnf-precedence-table, smie-prec2-levels):
 +      Mark them pure so the tables gets built at compile time.
 +      (smie-bnf-precedence-table): Store the closer-alist in the table.
 +      (smie-prec2-levels): Preserve the closer-alist.
 +      (smie-blink-matching-open): Be more forgiving in case of indentation.
 +      (smie-hanging-p): Rename from smie-indent--hanging-p.
 +      (smie-bolp): Rename from smie-indent--bolp.
 +      (smie--parent, smie--after): New dynamic vars.
 +      (smie-parent-p, smie-next-p, smie-prev-p): New funs.
 +      (smie-indent-rules): Remove.
 +      (smie-indent--offset-rule): Remove fun.
 +      (smie-rules-function): New var.
 +      (smie-indent--rule): New fun.
 +      (smie-indent--offset, smie-indent-keyword, smie-indent-after-keyword)
 +      (smie-indent-exps): Use it.
 +      (smie-setup): Setup paren blinking; add keyword args for token
 +      functions; extract closer-alist from op-levels.
 +      (smie-indent-debug-log): Remove var.
 +      (smie-indent-debug): Remove fun.
 +      * progmodes/prolog.el (prolog-smie-indent-rules): Remove.
 +      (prolog-smie-rules): New fun to replace it.
 +      (prolog-mode-variables): Simplify.
 +      * progmodes/octave-mod.el (octave-smie-closer-alist): Remove, now that
 +      it's setup automatically.
 +      (octave-smie-indent-rules): Remove.
 +      (octave-smie-rules): New fun to replace it.
 +      (octave-mode): Simplify.
 +
 +2010-10-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (temporary-file-directory): Remove (already defined in C).
 +      * cus-start.el: Add temporary-file-directory.
 +
 +      * abbrev.el (abbrev-mode):
 +      * composite.el (auto-composition-mode):
 +      * menu-bar.el (menu-bar-mode):
 +      * simple.el (transient-mark-mode):
 +      * tool-bar.el (tool-bar-mode): Adjust the define-minor-mode calls so
 +      that they do not define the associated variables twice.
 +      * simple.el (transient-mark-mode): Remove defvar.
 +      * composite.el (auto-composition-mode): Make variable auto-buffer-local.
 +      * cus-start.el: Add transient-mark-mode, menu-bar-mode, tool-bar-mode.
 +      Handle multiple groups, and also custom-delayed-init-variables.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix.
 +
 +2010-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase): New `string' and `guard' patterns.
 +      (pcase-if): Add one minor optimization.
 +      (pcase-split-equal): Rename from pcase-split-eq.
 +      (pcase-split-member): Rename from pcase-split-memq.
 +      (pcase-u1): Add strings to the member optimization.
 +      Add `guard' variant of predicates.
 +      (pcase-q1): Add string patterns.
 +
 +2010-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/log-edit.el (log-edit-rewrite-fixes): State its safety pred.
 +
 +2010-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (global-map, menu-bar-final-items, menu-bar-help-menu):
 +      Move menu-bar related settings to ../menu-bar.el.
 +      * menu-bar.el (global-map, menu-bar-final-items, menu-bar-help-menu):
 +      Move ns-specific settings here from term/ns-win.el.
 +
 +      * simple.el (x-selection-owner-p): Remove unused declaration.
 +
 +2010-10-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-cycling): New var (bug#7266).
 +      (minibuffer-complete, completion--do-completion):
 +      Use completion--flush-all-sorted-completions.
 +      (minibuffer-complete): Only cycle if completion-cycling is set.
 +      (completion--flush-all-sorted-completions): Unset completion-cycling.
 +      (minibuffer-force-complete): Set completion-cycling.
 +      (completion-all-sorted-completions): Move declaration before first use.
 +
 +2010-10-28  Leo  <sdl.web@gmail.com>
 +
 +      * iswitchb.el (iswitchb-kill-buffer): Avoid `iswitchb-make-buflist'
 +      which changes the order of matches seen by users (bug#7231).
 +
 +2010-10-28  Jes Bodi Klinke  <jes@bodi-klinke.dk>  (tiny change)
 +
 +      * progmodes/compile.el (compilation-mode-font-lock-keywords):
 +      Don't confuse -omega as "-o mega".
 +
 +2010-10-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/log-edit.el (log-edit-rewrite-fixes): New var.
 +      (log-edit-author): New dynamic var.
 +      (log-edit-changelog-ours-p, log-edit-insert-changelog-entries): Use it
 +      to return the author if different from committer.
 +      (log-edit-insert-changelog): Use them to add Author: and Fixes headers.
 +
 +      * play/landmark.el: Adjust commenting convention.
 +      (lm-nil-score): Rename from nil-score.
 +      (Xscore, XXscore, XXXscore, XXXXscore, Oscore, OOscore, OOOscore)
 +      (OOOOscore): Move into a let in lm-score-trans-table.
 +      (lm-winning-threshold, lm-loosing-threshold): Use lm-score-trans-table.
 +
 +      * electric.el (electric-indent-chars): Autoload.
 +      * progmodes/octave-mod.el (octave-mode):
 +      * progmodes/ruby-mode.el (ruby-mode): Take advantage of it.
 +      (ruby-mode-abbrev-table): Merge initialization and declaration.
 +
 +2010-10-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * abbrev.el (abbrev-mode): Remove one of the three definitions of this
 +      variable.
 +
 +      * server.el (server-host, server-port, server-auth-dir): Autoload risky.
 +
 +      * term/ns-win.el: Restore require of cl when compiling.
 +      (menu-bar-final-items): Remove non-existent `windows' menu.
 +      (ns-handle-nxopen): Optionally handle the temp-case.
 +      (ns-handle-nxopentemp): Just call ns-handle-nxopen.
 +      (ns-insert-file, ns-find-file): Use `pop'.
 +
 +2010-10-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/common-win.el (xw-defined-colors): Simplify the 'ns case.
 +
 +2010-10-26  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * term/ns-win.el (ns-new-frame, ns-show-prefs): Don't add to
 +      global map.
 +      * term/common-win.el (x-setup-function-keys): Remove most of the
 +      keymappings.  Comment on the remaining ones.
 +
 +2010-10-26  Peter Oliver  <p.d.oliver@mavit.org.uk>  (tiny change)
 +
 +      * server.el (server-port): New option.  (Bug#854)
 +      (server-start): Use server-port.
 +
 +2010-10-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (ns-version-string): Remove unused declaration.
 +      (ns-invocation-args): Change to x-invocation-args.
 +      (ns-handle-switch, ns-handle-numeric-switch, ns-handle-iconic)
 +      (ns-handle-name-switch, ns-ignore-2-arg): Remove.
 +      (ns-handle-nxopen, ns-handle-nxopentemp, ns-ignore-1-arg):
 +      Use x-invocation-args instead of ns-invocation-args.
 +      (ns-initialize-window-system, handle-args-function-alist):
 +      Use x-handle-args instead of ns-handle-args.
 +      * term/common-win.el (x-handle-args): Also handle nextstep arguments.
 +      * startup.el (command-line-ns-option-alist): Replace
 +      ns-handle-name-switch, ns-handle-switch, ns-handle-numeric-switch,
 +      ns-handle-iconic with the x- equivalents.
 +
 +      * term/common-win.el (x-select-enable-clipboard):
 +      * term/pc-win.el (x-select-enable-clipboard): Doc fix.
 +
 +      * term/ns-win.el: No need to require cl when compiling.
 +      (x-display-name, x-setup-function-keys, x-select-text, x-colors)
 +      (xw-defined-colors): Use the common-win definitions.
 +      (ns-alternatives-map): Make it an obsolete alias for x-alternatives-map.
 +      (ns-handle-iconic): Make it an alias for x-handle-iconic.
 +      * term/common-win.el (x-select-text, x-alternatives-map)
 +      (x-setup-function-keys, x-colors, xw-defined-colors): Handle 'ns case.
 +      * loadup.el [ns]: Load common-win.
 +
 +2010-10-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-mail.el (epa-mail-encrypt): Handle local-part only
 +      recipients; expand mail aliases (Bug#7280).
 +
 +2010-10-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/common-win.el (x-handle-switch): Simplify with pop.
 +      Optionally handle numeric switches.
 +      (x-handle-numeric-switch): Just call x-handle-switch.
 +      (x-handle-initial-switch, x-handle-xrm-switch, x-handle-geometry)
 +      (x-handle-name-switch, x-handle-display, x-handle-args):
 +      Simplify with pop.
 +
 +      * term/ns-win.el: Do not require easymenu.
 +      (menu-bar-edit-menu) <copy, paste, paste-from-menu, separator-undo>:
 +      <spell>: Move adjustments to menu-bar.el.
 +      * menu-bar.el (menu-bar-edit-menu) <copy, paste, paste-from-menu>:
 +      <separator-undo, spell>: Move ns-win's adjustments here.
 +      * loadup.el [ns]: Do not load easymenu.
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.el (image-checkbox-checked, image-checkbox-unchecked):
 +      Delete (Bug#7222).
 +
 +      * startup.el (fancy-startup-tail): Instead of using inline images,
 +      refer to image files from etc/.
 +
 +      * wid-edit.el (checkbox): Likewise.
 +      (widget-image-find): Center image specs.
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * term/ns-win.el (x-select-text): Doc fix.
 +      * w32-fns.el (x-alternatives-map, x-setup-function-keys)
 +      (x-select-text): Move to term/common-win.
 +      * term/w32-win.el (xw-defined-colors): Move to common-win.
 +      * term/x-win.el (xw-defined-colors, x-alternatives-map)
 +      (x-setup-function-keys, x-select-text): Move to common-win.
 +      * term/common-win.el (x-select-text, x-alternatives-map)
 +      (x-setup-function-keys, xw-defined-colors): Merge x- and w32-
 +      definitions here.
 +
 +2010-10-24  T.V. Raman  <tv.raman.tv@gmail.com>  (tiny change)
 +
 +      * net/mairix.el (mairix-searches-mode-map):
 +      * mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change.
 +
 +2010-10-24  Michael McNamara  <mac@mail.brushroad.com>
 +
 +      * verilog-mode.el (verilog-directive-re): Make this variable
 +      auto-built for efficiency of execution and updating.
 +      (verilog-extended-complete-re): Support 'pure' fucntion & task
 +      declarations (these have no bodies).
 +      (verilog-beg-of-statement): General cleanup to enable support of
 +      'pure' fucntion & task declarations (these have no bodies).
 +      These efforts together fix Verilog bug210 from veripool; which was also
 +      noticed by Steve Pearlmutter.
 +      (verilog-directive-re, verilog-directive-begin, verilog-indent-re)
 +      (verilog-directive-nest-re, verilog-set-auto-endcomments):
 +      Support `elsif.  Reported by Shankar Giri.
 +      (verilog-forward-ws&directives, verilog-in-attribute-p): Fixes for
 +      attribute handling for lining up declarations and assignments.
 +      (verilog-beg-of-statement-1): Fix issue where continued declaration
 +      is indented differently if it is after a begin..end clock.
 +      (verilog-in-attribute-p, verilog-skip-backward-comments)
 +      (verilog-skip-forward-comment-p): Support proper treatment of
 +      attributes by indent code.  Reported by Jeff Steele.
 +      (verilog-in-directive-p): Fix comment to correctly describe function.
 +      (verilog-backward-up-list, verilog-in-struct-region-p)
 +      (verilog-backward-token, verilog-in-struct-p)
 +      (verilog-in-coverage-p, verilog-do-indent)
 +      (verilog-pretty-declarations): Use verilog-backward-up-list as
 +      wrapper around backward-up-list inorder to properly skip comments.
 +      Reported by David Rogoff.
 +      (verilog-property-re, verilog-endcomment-reason-re)
 +      (verilog-beg-of-statement, verilog-set-auto-endcomments)
 +      (verilog-calc-1 ): Fix for assert a; else b; indentation (new form
 +      of if).  Reported by Max Bjurling and
 +      (verilog-calc-1): Fix for clocking block in modport
 +      declaration.  Reported by Brian Hunter.
 +
 +2010-10-24  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      * verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
 +      (verilog-gate-keywords, verilog-read-sub-decls)
 +      (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios)
 +      (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support
 +      AUTOINST for gate primitives, bug284.  Reported by Mark Johnson.
 +      (verilog-read-decls): Fix spaces in V2K module parameters causing
 +      mis-identification as interfaces, bug287.
 +      (verilog-read-decls): Fix not treating "parameter string" as a
 +      parameter in AUTOINSTPARAM.
 +      (verilog-read-always-signals-recurse, verilog-read-decls): Fix not
 +      treating `elsif similar to `endif inside AUTOSENSE.
 +      (verilog-do-indent): Implement correct automatic or static task or
 +      function end comment highlight.  Reported by Steve Pearlmutter.
 +      (verilog-font-lock-keywords-2): Fix highlighting of single
 +      character pins, bug264.  Reported by Michael Laajanen.
 +      (verilog-auto-inst, verilog-read-decls, verilog-read-sub-decls)
 +      (verilog-read-sub-decls-in-interfaced, verilog-read-sub-decls-sig)
 +      (verilog-subdecls-get-interfaced, verilog-subdecls-new):
 +      Support interfaces with AUTOINST, bug270.  Reported by Luis Gutierrez.
 +      (verilog-pretty-expr): Fix interactive arguments, bug272.
 +      Reported by Mark Johnson.
 +      (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp):
 +      Add 'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF,
 +      bug269.  Suggested by Gary Delp.
 +      (verilog-mode-map, verilog-preprocess, verilog-preprocess-history)
 +      (verilog-preprocessor, verilog-set-compile-command):
 +      Create verilog-preprocess and verilog-preprocessor to show
 +      preprocessed output.
 +      (verilog-get-beg-of-line, verilog-get-end-of-line)
 +      (verilog-modi-file-or-buffer, verilog-modi-name)
 +      (verilog-modi-point, verilog-within-string): Move defmacro's
 +      before first use to avoid warning.  Reported by Steve Pearlmutter.
 +      (verilog-colorize-buffer, verilog-colorize-include-files-buffer)
 +      (verilog-colorize-region, verilog-highlight-buffer)
 +      (verilog-highlight-includes, verilog-highlight-modules)
 +      (verilog-highlight-region, verilog-mode): Rename colorize to
 +      highlight to match other packages.  Disable module highlighting,
 +      as received speed complaints, reenable for experimentation only
 +      using new verilog-highlight-modules.
 +      (verilog-read-decls): Fix regexp stack overflow in very large
 +      AUTO_TEMPLATEs, bug250.
 +      (verilog-auto, verilog-delete-auto, verilog-save-buffer-state)
 +      (verilog-scan): Create verilog-save-buffer-state to standardize
 +      making insignificant changes that shouldn't call hooks.
 +      (verilog-save-no-change-functions, verilog-save-scan-cache)
 +      (verilog-scan, verilog-scan-cache-ok-p, verilog-scan-region):
 +      Create verilog-save-no-change-functions to wrap verilog-scan
 +      preservation, and fix to work with nested preserved calls.
 +      (verilog-auto-inst, verilog-auto-inst-dot-name): Support .name
 +      port syntax for AUTOWIRE, and with new verilog-auto-inst-dot-name
 +      generate .name with AUTOINST, bug245.  Suggested by David Rogoff.
 +      (verilog-submit-bug-report): Update variable list to be complete.
 +      (verilog-auto, verilog-colorize-region): Fix AUTO expansion
 +      breaking on-the-fly font-locking.
 +      (verilog-colorize-buffer, verilog-colorize-include-files)
 +      (verilog-colorize-include-files-buffer, verilog-colorize-region)
 +      (verilog-load-file-at-mouse, verilog-load-file-at-point)
 +      (verilog-mode, verilog-read-inst-module-matcher): With point on a
 +      AUTOINST cell instance name, middle mouse button now finds-file on
 +      it.  Suggested by Brad Dobbie.
 +      (verilog-alw-get-temps, verilog-auto-reset)
 +      (verilog-auto-sense-sigs, verilog-read-always-signals)
 +      (verilog-read-always-signals-recurse): Fix loop indexes being
 +      AUTORESET.  AUTORESET now assumes any variables in the
 +      initialization section of a for() should be ignored.
 +      Reported by Dan Dever.
 +      (verilog-error-font-lock-keywords)
 +      (verilog-error-regexp-emacs-alist)
 +      (verilog-error-regexp-xemacs-alist): Fix error detection of
 +      Cadence HAL, reported by David Asher.  Repair drift between the
 +      three similar error variables.
 +      (verilog-modi-lookup, verilog-modi-lookup-cache)
 +      (verilog-modi-lookup-last-current, verilog-modi-lookup-last-mod)
 +      (verilog-modi-lookup-last-modi, verilog-modi-lookup-last-tick):
 +      Fix slow verilog-auto expansion on very large files.
 +      (verilog-read-sub-decls-expr, verilog-read-sub-decls-line):
 +      Fix AUTOOUTPUT treating "1*2" as a signal name in submodule connection
 +      "{1*2{...".  Broke in last revision.
 +      (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting
 +      submodule connections with replications "{#{a},#{b}}".
 +
 +2010-10-24  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/dcl-mode.el (dcl-electric-reindent-regexps):
 +      Fix typo in docstring.
 +
 +2010-10-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * face-remap.el (text-scale-adjust): Call read-event with a proper
 +      prompt.
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/unsafep.el: Don't mark functions that display
 +      messages as safe.  Suggested by Johan Bockgård.
 +
 +2010-10-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset):
 +      Turn comments into docstrings.
 +
 +      * minibuffer.el (completion--replace): Move point where it belongs
 +      when there's a common suffix (bug#7215).
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      Merge read-color and facemenu-read-color (Bug#7242).
 +
 +      * faces.el (read-color): Use the completion code from
 +      facemenu-read-color.  Require match in completion.  Doc fix.
 +
 +      * facemenu.el (facemenu-read-color): Alias for read-color.
 +      (facemenu-set-foreground, facemenu-set-background):
 +      Use read-color.
 +
 +      * frame.el (set-background-color, set-foreground-color)
 +      (set-cursor-color, set-mouse-color, set-border-color):
 +      Use read-color.
 +
 +2010-10-24  Leo  <sdl.web@gmail.com>
 +
 +      * eshell/em-unix.el (eshell-remove-entries): Use the TRASH
 +      argument of delete-file and delete-directory (Bug#7011).
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map): Inherit from
 +      button-buffer-map.
 +
 +2010-10-24  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * emacs-lisp/package.el (package--generate-package-list): Make the
 +      *Packages* buffer read-only.
 +
 +2010-10-24  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-fonts.el (c-font-lock-declarations): Cache the
 +      result of `c-beginning-of-decl-1' between invocations of a lambda
 +      function (Bug #7265).
 +
 +2010-10-24  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epg-config.el (epg-gpg-program): Try to use "gpg2" if "gpg"
 +      executable is not available on the system (Bug#7268).
 +
 +2010-10-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * select.el (selection-coding-system, next-selection-coding-system):
 +      Sync doc with C versions.
 +
 +      * w32-vars.el (x-select-enable-clipboard):
 +      * term/x-win.el (x-select-enable-clipboard): Move to common-win.
 +      * term/common-win.el (x-select-enable-clipboard): Move here.
 +
 +      * term/tty-colors.el (tty-defined-color-alist): Remove duplicate
 +      definition of C variable.
 +
 +      * frame.el (show-trailing-whitespace, auto-hscroll-mode)
 +      (display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
 +      Don't redefine things that are defined in C.
 +      * cus-start.el: Also handle :risky, :safe, :set, and :tag.
 +      (show-trailing-whitespace, auto-hscroll-mode)
 +      (display-hourglass, hourglass-delay, cursor-in-non-selected-windows):
 +      Set up the appropriate custom properties.
 +
 +2010-10-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      Bind "C-c ]" to ...
 +      * progmodes/f90.el (f90-mode-map): ... f90-insert-end.
 +      * nxml/nxml-mode.el (nxml-mode-map): ... nxml-finish-element.
 +      * textmodes/tex-mode.el (tex-mode-map): ... latex-close-block.
 +      * textmodes/sgml-mode.el (sgml-mode-map): ... sgml-close-tag.
 +
 +2010-10-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/flyspell.el (flyspell-mode): If there was an error,
 +      say what it was.
 +
 +      * frame.el (auto-hscroll-mode, cursor-in-non-selected-windows):
 +      Sync docs with C version.
 +
 +      * term/ns-win.el (xw-defined-colors):
 +      * term/x-win.el (xw-defined-colors): Make docs identical to w32-win.
 +
 +      * term/pc-win.el (x-select-enable-clipboard):
 +      * term/x-win.el (x-select-enable-clipboard):
 +      * w32-vars.el (x-select-enable-clipboard): Make doc-strings identical.
 +
 +      * comint.el (comint-password-prompt-regexp): Make it less vague.
 +      Bump version.
 +
 +      * help-fns.el (doc-file-to-man, doc-file-to-info): New commands.
 +
 +      * help.el (finder-by-keyword): Remove unnecessary autoload.
 +
 +2010-10-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * loadup.el: Unconditionally load float-sup.
 +      * paren.el (show-paren-delay):
 +      * emacs-lisp/float-sup.el:
 +      * emulation/cua-base.el (cua-prefix-override-inhibit-delay):
 +      * obsolete/lazy-lock.el (lazy-lock-defer-time, lazy-lock-stealth-nice)
 +      (lazy-lock-stealth-verbose): Assume float support.
 +      * ps-print.el: Assume float support on Emacs.
 +      * emacs-lisp/timer.el (timer-next-integral-multiple-of-time):
 +      Remove non-float branch.
 +
 +      * emacs-lisp/autoload.el (batch-update-autoloads): Update for
 +      src/Makefile no longer being pre-processed.
 +
 +2010-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/find-func.el (find-library): Use test-completion.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * newcomment.el (comment-dwim): Fix the intentation in the doc string.
 +
 +2010-10-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-file-attributes-with-stat): Do not use
 +      space in stat format string.
 +      (tramp-send-command): Unset $PS1 when using here documents, in
 +      order not to get several prompts.
 +      (tramp-get-inline-coding): Return `nil' in case of errors.
 +
 +2010-10-21  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * hexl.el (hexl-mode, hexl-mode-exit):
 +      Tweak revert-buffer-function to inhibit auto-mode-alist (Bug#7252).
 +      (hexl-revert-buffer-function): New function.
 +      (hexl-before-revert-hook, hexl-after-revert-hook): Abolish.
 +
 +2010-10-19  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-langs.el (c-type-decl-prefix-key): C++ bit:
 +      Move "\(const\|throw\|volatile\)\>" nearer the start of the regexp, so
 +      that these keywords aren't wrongly matched as identifiers.
 +
 +      * progmodes/cc-mode.el (c-before-change, c-after-change): Move the
 +      setting of c-new-BEG and c-new-END from c-before-change to
 +      c-after-change.  (Bug#7181)
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-face.el (custom-theme-set-faces): Revert 2010-10-18 change.
 +      Don't mark as safe.
 +
 +      * custom.el (custom-theme-set-variables): Likewise.
 +      (load-theme): Add custom-theme-set-faces and
 +      custom-theme-set-variables to safe-functions while loading.
 +      (custom-enabled-themes): Mark as risky.
 +
 +2010-10-18  Julien Danjou  <julien@danjou.info>
 +
 +      * bindings.el: Remove end dashes in default mode-line-format.
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * bindings.el (global-map): Bind C-d to delete-char and deletechar
 +      to delete-forward-char.
 +
 +      * simple.el (normal-erase-is-backspace-mode): Remap delete to
 +      deletechar, and hence delete-forward-char.
 +
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * repeat.el (repeat): Use read-key (bug#6256).
 +
 +2010-10-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/unsafep.el: Don't mark functions that display
 +      messages as safe.  Suggested by Johan Bockgård.
 +
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--replace): Move point where it belongs
 +      when there's a common suffix (bug#7215).
 +
 +2010-10-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/characters.el: Add category '|' (word breakable)
 +      to fullwidth characters.
 +
 +2010-10-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-file-attributes-with-stat)
 +      (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in
 +      order to make stat results a float.  Patch by Andreas Schwab
 +      <schwab@linux-m68k.org>.
 +
 +2010-10-18  Julien Danjou  <julien@danjou.info>
 +
 +      * avoid.el (mouse-avoidance-ignore-p): Ignore mouse when it is
 +      hidden by `make-pointer-invisible'.
 +
 +2010-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (locate-file-completion-table): Strip non-matching elements
 +      before checking length of list (bug#7238).
 +
 +2010-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.el (custom-theme-set-variables): Mark as a safe function.
 +      (load-theme): Check forms using unsafep.
 +
 +      * cus-face.el (custom-theme-set-faces): Mark as a safe function.
 +
 +2010-10-17  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-aspell-find-dictionary):
 +      Fix aspell data file searching (bug#7230).
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (custom-theme--migrate-settings): New var.
 +      (customize-create-theme): Allow editing the `user' theme.
 +      (custom-theme-add-variable, custom-theme-add-var-1)
 +      (custom-theme-add-face, custom-theme-add-face-1): Add a checkbox
 +      to the front of each variable or face widget.
 +      (custom-theme-write): Save theme settings in the correct order.
 +      Optionally, remove saved settings from user customizations.
 +      (custom-theme-write-variables, custom-theme-write-faces):
 +      Save only the checked widgets.
 +      (customize-themes): Add a link for migrating custom settings.
 +
 +      * custom.el (custom-declare-theme, provide-theme):
 +      Use custom-theme-name-valid-p.
 +      (custom-theme-name-valid-p): Remove checks that are now
 +      unnecessary since themes no longer obey load-path.
 +
 +      * cus-edit.el (custom-variable-value-create): For the simple
 +      style, hide documentation string when hidden.
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-variable, custom-face): Combine the
 +      :inhibit-magic and :display-style properties into a single
 +      :custom-style property.
 +      (custom-toggle-hide-variable, custom-toggle-hide-face):
 +      New functions.  If hiding an edited value, save it to :shown-value.
 +      (custom-variable-value-create, custom-face-value-create): Use them.
 +      (custom-magic-reset): Allow magic property to be unset.
 +
 +      * custom.el: Custom themes no longer use load-path.
 +      (custom-theme-load-path): New option.  Change built-in theme
 +      directory to etc/.
 +      (custom-enabled-themes): Add custom-theme-load-path dependency.
 +      (custom-theme--load-path): New function.
 +      (load-theme, custom-available-themes): Use it.
 +
 +      * cus-theme.el (describe-theme-1): Use custom-theme--load-path.
 +      (customize-themes): Link to custom-theme-load-path variable.
 +      (custom-theme-add-var-1, custom-theme-add-face-1): Use the
 +      :custom-style property.
 +
 +      * themes/*.el: Moved to etc/.
 +
 +2010-10-16  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * textmodes/reftex-cite.el
 +      (reftex-extract-bib-entries-from-thebibliography): Do not move
 +      point when searching for \bibitem entries.  Match entries with
 +      spaces or tabs in front of arguments.
 +
 +2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (customize-create-theme): Delete overlays after
 +      erasing.  If given a THEME arg, display only the faces of that arg
 +      instead of custom-theme--listed-faces.
 +      (custom-theme-variable-menu, custom-theme-variable-action)
 +      (custom-variable-reset-theme, custom-theme-delete-variable): Delete.
 +      (custom-theme-add-variable, custom-theme-add-face): Apply value
 +      from the theme settings, instead of the current value.
 +      (custom-theme-add-var-1, custom-theme-add-face-1): New functions.
 +      (custom-theme-visit-theme): Allow calling outside theme buffers.
 +      (custom-theme-merge-theme): Don't enable the theme when merging.
 +      (custom-theme-write-variables, custom-theme-write-faces): Use the
 +      :shown-value properties to save buffer values, not global ones.
 +      (customize-themes): Display a warning about user customizations.
 +
 +      * cus-edit.el (custom-variable-value-create)
 +      (custom-face-value-create): Obey new special properties
 +      :shown-value and :inhibit-magic.
 +
 +2010-10-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 +      Suppress expansion of tabs to spaces.  Reported by Dale Sedivec
 +      <dale@codefu.org>.
 +
 +2010-10-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * mail/rmail.el (rmail-show-message-1): Catch an error of
 +      base64-decode-region and just show an error message (bug#7165).
 +
 +      * ps-mule.el (ps-mule-font-spec-list): Delete it.  Not used anymore.
 +      (ps-mule-begin-job): Fix for the case that only ENCODING is set in
 +      a font-spec (bug#7197).
 +
 +2010-10-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
 +
 +2010-10-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * international/mule.el (define-coding-system):
 +      * international/titdic-cnv.el (quail-cxterm-package-ext-info):
 +      * composite.el (compose-region): Fix typo in docstring.
 +
 +2010-10-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-face.el (custom-theme-set-faces): Call custom-push-theme
 +      only after checking the theme-face property.
 +
 +      * faces.el (face-spec-reset-face): Reset all attributes in one
 +      single call to set-face-attribute.
 +      (face-spec-match-p): Make it a defsubst.
 +      (frame-set-background-mode): New arg KEEP-FACE-SPECS.
 +      (x-create-frame-with-faces, tty-create-frame-with-faces)
 +      (tty-set-up-initial-frame-faces): Don't recompute face specs in
 +      frame-set-background-mode, since they are recomputed immediately
 +      afterwards in face-set-after-frame-default.
 +      (face-set-after-frame-default): Minor optimization.
 +      (cursor): Provide non-trivial defface spec.
 +
 +      * custom.el (custom-theme-recalc-face): Simplify.
 +
 +2010-10-14  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-alg.el (math-var): Rename from `var'.
 +      (math-is-polynomial, math-is-poly-rec): Replace `var'
 +      with `math-var'.
 +
 +      * calc/calcalg2.el (math-var): Rename from `var'.
 +      (calcFunc-table, math-scan-for-limits): Replace `var'
 +      with `math-var'.
 +
 +2010-10-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (last): Deal with dotted lists (reported in bug#7174).
 +
 +2010-10-13  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * subr.el (last): Use `safe-length' instead of `length' (bug#7206).
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/tls.el (tls-program): Remove spurious %s from openssl.
 +      (tls-starttls-switches): Remove starttls hack.
 +      (open-tls-stream): Ditto.
 +      (tls-find-starttls-argument): Ditto.
 +
 +2010-10-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * image.el (image-library-alist): Declare as obsolete alias.
 +      (image-type-available-p): Use `dynamic-library-alist'.
 +
 +      * term/w32-win.el (dynamic-library-alist):
 +      Use instead of `image-library-alist'.
 +
 +2010-10-13  IRIE Shinsuke  <irieshinsuke@yahoo.co.jp>  (tiny change)
 +
 +      * subr.el (last): Make it faster.  (Bug#7174)
 +
 +2010-10-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>  (tiny change)
 +
 +      * Makefile.in (compile-clean): Use `` instead of $().  (Bug#7178)
 +
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (custom-theme--listed-faces): Add cursor face.
 +      (describe-theme-1): Extract doc from unloaded themes.
 +
 +      * custom.el (custom-theme-name-valid-p): Don't list color-themes.
 +
 +      * themes/tango-theme.el:
 +      * themes/tango-dark-theme.el:
 +      * themes/wheatgrass-theme.el: New files.
 +
 +2010-10-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-theme.el (describe-theme, customize-themes)
 +      (custom-theme-save): New commands.
 +      (custom-new-theme-mode-map): Bind C-x C-s.
 +      (custom-new-theme-mode): Use custom--initialize-widget-variables.
 +      (customize-create-theme): New optional arg THEME.
 +      (custom-theme-revert): Use it.
 +      (custom-theme-visit-theme): Remove dead code.
 +      (custom-theme-merge-theme): Use custom-available-themes.
 +      (custom-theme-write): Make interactive.
 +      (custom-theme-write): Use custom-theme-name-valid-p.
 +      (describe-theme-1, custom-theme-choose-revert)
 +      (custom-theme-checkbox-toggle, custom-theme-selections-toggle):
 +      New funs.
 +      (custom-theme-allow-multiple-selections): New option.
 +      (custom-theme-choose-mode): New major mode.
 +
 +      * custom.el (custom-theme-set-variables): Remove dead code.
 +      Obey custom--inhibit-theme-enable.
 +      (custom--inhibit-theme-enable): New var.
 +      (provide-theme): Obey it.
 +      (load-theme): Replace load with manual read/eval, in order to
 +      check for correctness.  Use custom-theme-name-valid-p.
 +      (custom-theme-name-valid-p): New function.
 +      (custom-available-themes): Use it.
 +
 +      * cus-edit.el (custom--initialize-widget-variables): New function.
 +      (Custom-mode): Use it.
 +
 +      * cus-face.el (custom-theme-set-faces): Remove dead code.
 +      Obey custom--inhibit-theme-enable.
 +
 +      * help-mode.el (help-theme-def, help-theme-edit): New buttons.
 +
 +2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/telnet.el (telnet-mode-map): Fix previous change (bug#7193).
 +
 +2010-10-12  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/ns-win.el (ns-right-alternate-modifier): New defvar.
 +      (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
 +      (mac-right-option-modifier): New alias for ns-right-option-modifier.
 +
 +      * cus-start.el (all): ns-right-alternate-modifier is new.
 +
 +2010-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp.el (lisp-completion-at-point):
 +      Use emacs-lisp-mode-syntax-table for the whole function.
 +
 +2010-10-12  David Koppelman  <koppel@ece.lsu.edu>
 +
 +      * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
 +      instead of font-lock-mode before adding keywords.
 +      Remove hi-lock-mode off code.  Remove inhibit hack.
 +      (hi-lock-set-pattern): Only add keywords if font-lock-fontified
 +      non-nil; removed hook inhibit hack.
 +
 +2010-10-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
 +      (load-path-shadows-find): ... to this.
 +      (list-load-path-shadows): Update for above change.
 +
 +      * mail/mail-utils.el (mail-mbox-from): Also try return-path.
 +
 +2010-10-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el:
 +      Fix comment for declare-function.
 +
 +2010-10-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.el (custom-fix-face-spec): New function; code moved from
 +      custom-face-edit-fix-value.
 +      (custom-push-theme): Use it when checking if a face has been
 +      changed outside customize.
 +      (custom-available-themes): New function.
 +      (load-theme): Use it.
 +
 +      * cus-edit.el (custom-face-edit-fix-value): Use custom-fix-face-spec.
 +
 +      * custom.el (custom-push-theme): Cleanup (use cond).
 +      (disable-theme): Recompute the saved-face property.
 +      (custom-theme-recalc-face): Follow face alias before setting prop.
 +
 +      * image.el (image-checkbox-checked, image-checkbox-unchecked):
 +      New variables, containing checkbox images.
 +
 +      * startup.el (fancy-startup-tail):
 +      * wid-edit.el (checkbox): Use them.
 +
 +2010-10-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * shell.el (shell-mode-map):
 +      * progmodes/modula2.el (m2-mode-map):
 +      * progmodes/inf-lisp.el (inferior-lisp-mode-map):
 +      * play/mpuz.el (mpuz-mode-map):
 +      * play/landmark.el (lm-mode-map):
 +      * play/decipher.el (decipher-mode-map):
 +      * play/5x5.el (5x5-mode-map):
 +      * net/telnet.el (telnet-mode-map):
 +      * net/quickurl.el (quickurl-list-mode-map):
 +      * net/mairix.el (mairix-searches-mode-map):
 +      * net/eudc-hotlist.el (eudc-hotlist-mode-map):
 +      * net/dig.el (dig-mode-map):
 +      * mail/mspools.el (mspools-mode-map):
 +      * hexl.el (hexl-mode-map):
 +      * emulation/ws-mode.el (wordstar-C-k-map, wordstar-mode-map)
 +      (wordstar-C-o-map, wordstar-C-q-map):
 +      * emacs-lisp/edebug.el (edebug-eval-mode-map):
 +      * emacs-lisp/chart.el (chart-map):
 +      * edmacro.el (edmacro-mode-map):
 +      * erc/erc-list.el (erc-list-menu-mode-map):
 +      * array.el (array-mode-map): Declare and define in one step.
 +
 +      * vc/log-view.el (log-view-mode-map): Bind revert-buffer.
 +
 +2010-10-10  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa.el (epa-passphrase-callback-function): Display filename
 +      passed as the 3rd arg.
 +      * epa-file.el (epa-file-passphrase-callback-function):
 +      Pass filename to epa-passphrase-callback-function.
 +
 +2010-10-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-face-widget-to-spec)
 +      (custom-face-get-current-spec, custom-face-state): New functions.
 +      (custom-face-set, custom-face-mark-to-save)
 +      (custom-face-value-create, custom-face-state-set): Use them.
 +
 +      * cus-theme.el (custom-theme--listed-faces): New var.
 +      (customize-create-theme): Use *Custom Theme* as the buffer name.
 +      Set revert-buffer-function.  Optional arg BUFFER.  Insert all
 +      faces listed in custom-theme--listed-faces.
 +      (custom-theme-revert): New function.
 +      (custom-theme-add-variable, custom-theme-add-face): Insert at the
 +      bottom of the list.
 +      (custom-theme-write): Prompt for theme name if empty.
 +      (custom-theme-write-variables): Use dolist.
 +      (custom-theme-write-faces): Handle hidden (collapsed) widgets.
 +
 +2010-10-09  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance fontification of declarators to take account of the
 +      presence/absence of "typedef".
 +
 +      * cc-engine.el (c-forward-type): New &optional param
 +      "brace-block-too".
 +      (c-forward-decl-or-cast-1): cdr of return value now indicates the
 +      presence of either or both of a "struct"-like keyword and "typedef".
 +
 +      * cc-fonts.el (c-complex-decl-matchers): Remove the heuristic
 +      fontification of declarators which follow a "}".
 +      (c-font-lock-declarations): Fontify declarators according to the
 +      presence/absence of "typedef".
 +
 +      * cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable
 +      for "typedef".
 +      (c-typedef-decl-key): New lang variable built from
 +      c-typedef-decl-kwds.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys,
 +      since that's too annoying.  Move the filter groups commands to
 +      TAB/backtab.
 +
 +      * epa.el (epa-passphrase-callback-function): Say what we're
 +      querying the password for.
 +
 +      * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers
 +      behaviour, don't bury the ibuffer buffer when visiting other buffers.
 +
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-commands, custom-buffer-create-internal)
 +      (custom-magic-value-create): Pad button tags with spaces.
 +      (custom-face-edit): New variable.
 +      (custom-face-value-create): Determine whether to use the usual
 +      face editor here, instead of using custom-face-selected.
 +      Pass face defaults to custom-face-edit widget.
 +      (custom-face-selected, custom-display-unselected): Delete widgets.
 +      (custom-display-unselected-match): Function removed.
 +      (custom-face-set, custom-face-mark-to-save):
 +      Accept custom-face-edit widgets as the direct widget child.
 +
 +      * wid-edit.el (widget--completing-widget): New var.
 +      (widget-default-complete): Bind it when doing completion.
 +      (widget-string-complete, widget-file-complete): Use it.
 +
 +2010-10-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/cal-hebrew.el (holiday-hebrew-rosh-hashanah)
 +      (holiday-hebrew-passover, holiday-hebrew-tisha-b-av)
 +      (holiday-hebrew-misc): Small simplifications.
 +
 +      * emacs-lisp/authors.el (authors-valid-file-names): Add b2m.c.
 +
 +      * net/browse-url.el: Don't require thingatpt, term, dired,
 +      executable, or w3-auto when compiling.
 +      (dired-get-filename, term-char-mode, term-send-down, term-send-string):
 +      Declare.
 +      (browse-url-text-emacs): Require term.
 +
 +2010-10-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * net/browse-url.el (browse-url-xdg-open): Remove use of /bin/sh.
 +
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
 +
 +      * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
 +      (shadows-compare-text-p): Make it an obsolete alias for...
 +      (load-path-shadows-compare-text): ... new name.
 +      (find-emacs-lisp-shadows): Update for above name change.
 +      (load-path-shadows-same-file-or-nonexistent): New name for the old
 +      shadow-same-file-or-nonexistent.
 +
 +2010-10-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * minibuffer.el (completion--some, completion--do-completion)
 +      (minibuffer-complete-and-exit, minibuffer-completion-help)
 +      (completion-basic-try-completion)
 +      (completion-basic-all-completions)
 +      (completion-pcm--find-all-completions): Use lexical-let to
 +      avoid some false matches in variable completion (Bug#7056)
 +
 +2010-10-08  Olof Ohlsson Sax  <olof.ohlsson.sax@gmail.com>  (tiny change)
 +
 +      * vc-svn.el (vc-svn-merge-news): Use --non-interactive.  (Bug#7152)
 +
 +2010-10-08  Leo  <sdl.web@gmail.com>
 +
 +      * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
 +      return non-nil if the file exists (Bug#7090).
 +
 +2010-10-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--replace):
 +      Better preserve markers (bug#7138).
 +
 +2010-10-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-process-filter): Doc fix.
 +
 +2010-10-08  Drew Adams  <drew.adams@oracle.com>
 +
 +      * dired.el (dired-save-positions): Doc fix.  (Bug#7119)
 +
 +2010-10-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/ediff-wind.el (ediff-setup-control-frame):
 +      * vc/ediff-ptch.el (ediff-default-backup-extension):
 +      * vc/ediff-diff.el (ediff-shell, ediff-diff-options)
 +      (ediff-exec-process): Remove system-types emx, windows-95.
 +
 +      * net/browse-url.el (browse-url-xdg-open): Shell-quote url.  (Bug#7166)
 +
 +2010-10-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-variable, custom-face): Doc fix.
 +      (custom-face-edit): Add value-create attribute.
 +      (custom-face-edit-value-create)
 +      (custom-face-edit-value-visibility-action): New functions.
 +      Hide unused face attributes by default, and add a visibility toggle.
 +      (custom-face-edit-deactivate): Show empty values with shadow face.
 +      (custom-face-selected): Only use this for face specs with default
 +      attributes.
 +      (custom-face-value-create): Cleanup.
 +
 +      * wid-edit.el (widget-checklist-value-create): Use dolist.
 +      (widget-checklist-match-find): Make second arg optional.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * hilit-chg.el (hilit-chg-get-diff-info, hilit-chg-get-diff-list-hk):
 +      Prefix things.
 +
 +      * emacs-lisp/shadow.el (shadow-font-lock-keywords)
 +      (load-path-shadows-mode, list-load-path-shadows): Rename shadow-mode to
 +      load-path-shadows-mode, update references.
 +      (load-path-shadows-font-lock-keywords, load-path-shadows-find-file):
 +      Rename variable and button.
 +      (list-load-path-shadows): Update button caller.
 +
 +2010-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-bnf-classify): New function.
 +      (smie-bnf-precedence-table): Use it to remember the closers/openers.
 +      (smie-merge-prec2s): Handle those new entries.
 +      (smie-prec2-levels): Only set precedence to nil for actual
 +      openers/closers.
 +      * progmodes/octave-mod.el (octave-smie-op-levels): Remove dummy entry
 +      that is now unnecessary.
 +
 +2010-10-07  Miles Bader  <miles@gnu.org>
 +
 +      * emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode.
 +
 +2010-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/rmail.el (mail-sendmail-delimit-header, mail-header-end)
 +      (mail-position-on-field): Remove declarations.
 +      (mail-position-on-field): Autoload it.
 +      (rmail-retry-failure): Replace use of mail-sendmail-delimit-header
 +      and mail-header-end.  Don't require sendmail.
 +
 +      * emacs-lisp/shadow.el (shadow-font-lock-keywords): New variable.
 +      (shadow-mode): New mode.
 +      (shadow-find-file): New button.
 +      (list-load-path-shadows): Use shadow-mode and buttons.
 +
 +      * iimage.el (iimage-version): Remove.
 +      (iimage-mode-image-search-path, iimage-mode-image-regex-alist):
 +      Turn into defcustoms.
 +      (iimage-mode-map): Give it a doc string.
 +
 +      * calendar/appt.el (appt-activate): Give a warning rather than an error
 +      if there is no diary-file.
 +
 +2010-10-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-sh-file-name-handler-alist):
 +      Use `tramp-handle-find-backup-file-name'.
 +
 +2010-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * font-core.el (font-lock-defaults-alist): Remove variable.
 +      (font-lock-mode): Doc fix.
 +      (font-lock-default-function): Do not consult font-lock-defaults-alist.
 +      * font-lock.el (font-lock-refresh-defaults): Doc fix.
 +      (font-lock-set-defaults): Doc fix.
 +      Do not consult font-lock-defaults-alist.
 +
 +      * hilit-chg.el (hilit-chg-get-diff-list-hk): Declare `e' for compiler.
 +
 +      * emacs-lisp/cl.el: No longer provide cl-19.
 +
 +2010-10-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-directory-files-and-attributes)
 +      (tramp-handle-file-exists-p, tramp-handle-file-newer-than-file-p):
 +      New defuns, taken from tramp-smb.el.
 +      (tramp-coding-system-change-eol-conversion)
 +      (tramp-set-process-query-on-exit-flag): Remove.
 +
 +      * net/tramp-compat.el (top): Do not check for byte-compiler objects.
 +      (tramp-compat-coding-system-change-eol-conversion)
 +      (tramp-compat-set-process-query-on-exit-flag): New defuns, taken
 +      from tramp.el.
 +
 +      * net/tramp-gvfs.el:
 +      * net/tramp-gw.el: Replace `tramp-set-process-query-on-exit-flag'
 +      by `tramp-compat-set-process-query-on-exit-flag'.
 +
 +      * net/tramp-imap.el (tramp-imap-file-name-handler-alist):
 +      Use `tramp-handle-directory-files-and-attributes',
 +      `tramp-handle-file-exists-p' and
 +      `tramp-handle-file-newer-than-file-p'.
 +      (tramp-imap-handle-file-exists-p)
 +      (tramp-imap-handle-file-executable-p)
 +      (tramp-imap-handle-file-readable-p)
 +      (tramp-imap-handle-directory-files-and-attributes)
 +      (tramp-imap-handle-file-newer-than-file-p): Remove.
 +
 +      * net/tramp-sh.el: Replace `tramp-set-process-query-on-exit-flag'
 +      by `tramp-compat-set-process-query-on-exit-flag' and
 +      `tramp-coding-system-change-eol-conversion' by
 +      `tramp-compat-coding-system-change-eol-conversion'.
 +
 +      * net/tramp-smb.el (tramp-smb-file-name-handler-alist):
 +      Use `tramp-handle-directory-files-and-attributes',
 +      `tramp-handle-file-exists-p' and
 +      `tramp-handle-file-newer-than-file-p'.
 +      (tramp-smb-handle-directory-files-and-attributes)
 +      (tramp-smb-handle-file-exists-p)
 +      (tramp-smb-handle-file-newer-than-file-p): Remove.
 +      (tramp-smb-maybe-open-connection):
 +      Replace `tramp-set-process-query-on-exit-flag' by
 +      `tramp-compat-set-process-query-on-exit-flag'.
 +
 +2010-10-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/rnews.el, obsolete/rnewspost.el: Remove files.
 +
 +2010-10-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Continue reorganization of load dependencies.  (Bug#7156)
 +
 +      * net/tramp.el (tramp-handle-file-local-copy-hook)
 +      (tramp-delete-temp-file-function): Move down.
 +      (tramp-exists-file-name-handler): Move up.
 +      (tramp-register-file-name-handlers): Simplify autoload.
 +      (tramp-handle-write-region-hook, tramp-handle-directory-file-name)
 +      (tramp-handle-directory-files, tramp-handle-dired-uncache)
 +      (tramp-handle-file-modes, tramp-handle-file-name-as-directory)
 +      (tramp-handle-file-name-completion)
 +      (tramp-handle-file-name-directory)
 +      (tramp-handle-file-name-nondirectory, tramp-handle-file-regular-p)
 +      (tramp-handle-file-remote-p, tramp-handle-file-symlink-p)
 +      (tramp-handle-find-backup-file-name)
 +      (tramp-handle-insert-file-contents, tramp-handle-load)
 +      (tramp-handle-substitute-in-file-name)
 +      (tramp-handle-unhandled-file-name-directory)
 +      (tramp-mode-string-to-int, tramp-local-host-p)
 +      (tramp-make-tramp-temp-file): Move from tramp-sh.el.
 +
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-smb.el (top): Do not require 'tramp-sh.
 +
 +      * net/tramp-sh.el (all): Move several objects to tramp.el, see
 +      there.  Rename `tramp-handle-*' to `tramp-sh-handle-*'.
 +
 +2010-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-add): Ensure reminders are enabled.
 +      (appt-activate): Give status messages.
 +
 +2010-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el: Improve docs.  Remove starttls and ssl emulation.
 +      Provide only `open-gnutls-stream' (formerly `open-ssl-stream') and
 +      `gnutls-negotiate' (formerly `starttls-negotiate').
 +      Remove trivial wrapper `starttls-open-stream'.
 +
 +2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
 +      log-outgoing commands.
 +      * vc/vc.el (vc-log-internal-common): Add a new argument and use it
 +      to create a buffer local revert-buffer-function variable.
 +      (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a
 +      revert-buffer-function lambda.
 +
 +2010-10-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (starttls-negotiate): Use the plist interface to
 +      `gnutls-boot'.  Make TYPE the only required parameter.
 +      Allow TRUSTFILES and KEYFILES to be lists.
 +      (open-ssl-stream): Use it.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (directory-sep-char): Remove obsolete variable.
 +      * net/tramp-compat.el: Don't mess about with the byte-compiler unless
 +      it is "necessary".
 +
 +      * vc/vc-hooks.el (vc-header-alist): Remove obsolete variable.
 +      * vc/vc.el (vc-static-header-alist): Doc fix.
 +      * vc/vc-cvs.el (vc-cvs-header):
 +      * vc/vc-rcs.el (vc-rcs-header):
 +      * vc/vc-sccs.el (vc-sccs-header):
 +      * vc/vc-svn.el (vc-svn-header): Do not consult vc-header-alist.
 +      * obsolete/vc-mcvs.el (vc-mcvs-header):
 +      * progmodes/cperl-mode.el (cperl-mode): Only set vc-header-alist
 +      on XEmacs.
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-from-buffer):
 +      Remove obsolete use of binary-overwrite-mode (Bug#7001).
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/x-menu.el: Remove file, obsolete since 21.1
 +
 +      * textmodes/rst.el (rst-font-lock-keywords-function):
 +      Drop Emacs 20 code.
 +
 +      * textmodes/artist.el (artist-replace-char): Drop Emacs 20 code.
 +
 +      * printing.el: Drop Emacs 20 code.
 +
 +      * calendar/appt.el (appt-delete): Don't autoload it (you can't use it
 +      without having used appt.el already).
 +
 +      * subr.el (make-local-hook): Remove function obsolete since 21.1.
 +      * progmodes/cc-mode.el (make-local-hook): Don't do cc-bytecomp stuff.
 +      (c-basic-common-init, c-font-lock-init): Only call make-local-hook on
 +      XEmacs.
 +      * progmodes/cc-styles.el (make-local-hook): Don't do cc-bytecomp stuff.
 +      (c-make-styles-buffer-local): Only call make-local-hook on XEmacs.
 +
 +      * ps-def.el (leading-code-private-22, charset-bytes, charset-id)
 +      (charset-width, find-charset-region, chars-in-region, forward-point)
 +      (encode-coding-string, coding-system-p, ccl-execute-on-string)
 +      (define-ccl-program, multibyte-string-p, string-make-multibyte):
 +      Remove compatibility cruft (none of these are used by ps*.el).
 +
 +2010-10-03  Kevin Rodgers  <kevin.d.rodgers@gmail.com>
 +
 +      * subr.el (booleanp): Return t instead of a list (Bug#7086).
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * server.el (server-process-filter, server-return-error):
 +      Give emacsclient time to shut down after receiving an error string.
 +
 +2010-10-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (remote-file-name-inhibit-cache): New defcustom.
 +
 +      * time.el (display-time-file-nonempty-p):
 +      Use `remote-file-name-inhibit-cache'.
 +
 +      * net/tramp.el (tramp-completion-reread-directory-timeout):
 +      Fix docstring.
 +
 +      * net/tramp-cache.el (tramp-cache-inhibit-cache): Remove.
 +      (tramp-get-file-property): Replace `tramp-cache-inhibit-cache' by
 +      `remote-file-name-inhibit-cache'.  Check also for an integer
 +      value.  Add/increase counter when `tramp-verbose' >= 10.
 +      (tramp-set-file-property): Add/increase counter when
 +      `tramp-verbose' >= 10.
 +
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-cleanup-all-buffers): Set tramp-autoload cookie.
 +      (tramp-bug): Set tramp-autoload cookie.  Report all interned
 +      tramp-* variables.  Report also `remote-file-name-inhibit-cache'.
 +      (tramp-reporter-dump-variable): Fix docstring.  Mask non-7bit
 +      characters only in strings.
 +
 +      * net/tramp-compat.el (remote-file-name-inhibit-cache): Define due
 +      to backward compatibility.
 +
 +      * net/tramp-sh.el (tramp-handle-verify-visited-file-modtime)
 +      (tramp-handle-file-name-all-completions)
 +      (tramp-handle-vc-registered): Use `remote-file-name-inhibit-cache'.
 +      (tramp-open-connection-setup-interactive-shell):
 +      Call `tramp-cleanup-connection' directly.
 +
 +2010-10-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/checkdoc.el (checkdoc-minor-keymap): Remove obsolete alias.
 +
 +      * subr.el (char-bytes): Remove obsolete function.
 +
 +      * isearch.el (isearch-return-char): Remove obsolete function.
 +
 +      * mouse.el: No longer provide mldrag.
 +      (mldrag-drag-mode-line, mldrag-drag-vertical-line):
 +      Remove obsolete aliases.
 +
 +      * comint.el (comint-kill-output): Remove obsolete alias.
 +
 +      * composite.el (decompose-composite-char): Remove obsolete function.
 +      * ps-def.el (decompose-composite-char): Remove unused function.
 +
 +      * iswitchb.el (iswitchb-default-keybindings): Remove obsolete function.
 +
 +      * outline.el (outline-visible): Remove obsolete function.
 +
 +      * term/pc-win.el (x-frob-font-slant, x-frob-font-weight):
 +      * faces.el (internal-find-face, internal-get-face)
 +      (frame-update-faces, frame-update-face-colors)
 +      (x-frob-font-weight, x-frob-font-slant)
 +      (internal-frob-font-weight, internal-frob-font-slant)
 +      (x-make-font-bold, x-make-font-demibold, x-make-font-unbold)
 +      (x-make-font-italic, x-make-font-oblique, x-make-font-unitalic)
 +      (x-make-font-bold-italic): Remove functions and aliases, obsolete
 +      since Emacs 21.1.
 +      * emulation/viper-util.el (viper-get-face):
 +      * obsolete/lucid.el (find-face, get-face): Use facep.
 +      * vc/ediff-init.el (ediff-valid-color-p, ediff-get-face):
 +      Remove unused functions.
 +      * vc/ediff-util.el (ediff-submit-report): Doc fix.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file): Use kill-emacs-hook to
 +      delete tempfile if interrupted during compilation.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/tls.el (tls-starttls-switches): Give up on using starttls with
 +      gnutls-cli.
 +      (tls-program): Add --insecure to be consistent with the defaults from
 +      openssl s_client.  Now all three commands are insecure.
 +
 +2010-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (DEST, TAGS, TAGS-LISP, TAGS-nmake)
 +      (TAGS-LISP-nmake, TAGS-gmake, TAGS-LISP-gmake, TAGS-SH)
 +      (TAGS-LISP-SH, TAGS-CMD, TAGS-LISP-CMD): New targets.
 +
 +2010-10-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * obsolete/sc.el: Remove file.
 +
 +      * files.el (temporary-file-directory): On darwin, also try
 +      DARWIN_USER_TEMP_DIR (see discussion in bug#7135).
 +
 +2010-10-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Revert part of 2010-09-30T02:53:26Z!lekktu@gmail.com.
 +      Let's not break compatibility gratuitously, shall we?
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/tls.el (tls-starttls-switches): New variable.
 +      (tls-find-starttls-argument): Use it.
 +      (open-tls-stream): Ditto.
 +
 +      * net/netrc.el (netrc-credentials): Return the value of the "default"
 +      entry.
 +      (netrc-machine): Ditto.
 +
 +2010-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix.
 +
 +2010-09-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Don't write pid to the authentication file.
 +      (server-create-tty-frame): Don't send pid.
 +      (server-process-filter): Send pid at the start of every connection.
 +
 +2010-09-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (view-diary-entries, list-diary-entries)
 +      (show-all-diary-entries): Remove obsolete function aliases.
 +
 +      * calendar/appt.el (appt-issue-message, appt-visible, appt-msg-window):
 +      Remove options, obsolete since 22.1.
 +      (appt-display-format, appt-display-message):
 +      Remove backwards-compatibility code.
 +      (appt-check): No longer check appt-issue-message.
 +      (appt-make-list): No longer autoload it.  Doc fix.  No longer
 +      activate the package.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Loop a lot longer.
 +      (starttls-negotiate): Just call boot, and let the handshake be
 +      triggered from the read loop.
 +
 +2010-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-list-entries): Use temp buffers when
 +      not displaying the diary.
 +      (diary-add-to-list): If no buffer-file-name, fall back to diary-file.
 +      * calendar/appt.el (appt-check): No longer need to kill diary.
 +
 +      * calendar/diary-lib.el (diary-list-entries): Move the
 +      "Preparing..." message entirely here.
 +      (diary-simple-display, diary-fancy-display): Move "Preparing..."
 +      messages to diary-list-entries.
 +      (diary-include-other-diary-files): Use LIST-ONLY rather than setting
 +      diary-display-function.
 +
 +      * calendar/diary-lib.el (diary-include-other-diary-files):
 +      Trap some recursive includes.
 +
 +      * calendar/appt.el (appt-activate): Check diary file.
 +
 +2010-09-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * pgg.el (pgg-run-at-time-1): Define it for XEmacs only; fix if/else
 +      construction.
 +
 +      * calendar/time-date.el: No need to require cl for Emacs 21.
 +
 +2010-09-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-check): Minor simplification.
 +
 +2010-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/sendmail.el (mail-citation-prefix-regexp): Remove "}" from
 +      citation prefix.
 +
 +2010-09-27  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
 +      Avoid infinite recursion on erroneous lambda form.  (Bug#7114)
 +
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * tar-mode.el (tar-header-block-tokenize): Decode filenames in
 +      "ustar" format.
 +
 +2010-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule.el (define-coding-system): Docstring fixed.
 +
 +      * international/mule-diag.el (describe-character-set): Use princ
 +      with proper print-length and print-level instead of insert.
 +
 +2010-09-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * window.el (walk-windows): Doc fix (bug#7105).
 +
 +2010-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/float-sup.el (e): Remove.
 +
 +2010-09-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (gnutls, gnutls-log-level): Add group and custom
 +      variable.
 +      (starttls-negotiate): Use it.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Stop looping when we get a t
 +      back.
 +
 +2010-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase-let*, pcase-let): plet -> pcase-let.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (starttls-negotiate): Avoid the cl.el decf function.
 +
 +      * net/netrc.el (netrc-store-data): New function.
 +
 +2010-09-26  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el: GnuTLS glue code to set up a connection.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * notifications.el: Call dbus-register-signal only if it is bound.
 +
 +2010-09-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * 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/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el:
 +      * eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el:
 +      * eshell/esh-util.el, eshell/esh-var.el:
 +      Remove leading `*' from docs of faces and defcustoms.
 +
 +2010-09-25  Ulrich Mueller  <ulm@gentoo.org>
 +
 +      * eshell/em-ls.el (eshell-ls-archive-regexp):
 +      * eshell/esh-util.el (eshell-tar-regexp):
 +      * ibuffer.el (ibuffer-compressed-file-name-regexp):
 +      * info.el (Info-suffix-list):
 +      * international/mule.el (auto-coding-alist):
 +      * woman.el (woman-file-regexp, woman-file-compression-regexp):
 +      * progmodes/etags.el (tags-compression-info-list):
 +      Support xz compression.
 +
 +2010-09-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.el (get-free-disk-space): Don't assume the "df" output
 +      columns line up (Bug#6995).
 +
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * finder.el (finder-unknown-keywords):
 +      * progmodes/gdb-mi.el (gdb-jsonify-buffer, gdb-running-threads-count):
 +      * progmodes/etags.el (tags-table-including): Fix typos in docstrings.
 +
 +2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * server.el (server-start): Revert part of 2010-08-08 change.  Using
 +      address 127.0.0.1 for local host is now done in Fmake_network_process.
 +
 +2010-09-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * image-mode.el, progmodes/compile.el, progmodes/gud.el:
 +      * progmodes/mixal-mode.el, textmodes/bibtex-style.el:
 +      * textmodes/css-mode.el, textmodes/dns-mode.el:
 +      Move autoloaded auto-mode-alist entries to files.el.
 +      * files.el (auto-mode-alist): Move entries here.
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * isearch.el (isearch-lazy-highlight-cleanup)
 +      (isearch-lazy-highlight-initial-delay)
 +      (isearch-lazy-highlight-interval)
 +      (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face):
 +      * net/net-utils.el (ipconfig-program-options):
 +      Move aliases to options before the associated definitions.
 +
 +2010-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * newcomment.el (comment-normalize-vars): Better test validity of
 +      comment-end-skip.
 +
 +2010-09-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/float-sup.el (float-pi): New name for `pi'.
 +      (float-e): New name for `e'.
 +      (degrees-to-radians, radians-to-degrees):
 +      * calendar/solar.el (solar-longitude):
 +      * calculator.el (calculator-registers, calculator-funcall):
 +      * textmodes/artist.el (artist-spray-random-points):
 +      * play/bubbles.el (bubbles--initialize-images): Use new names.
 +
 +2010-09-23  Eric M. Ludlam  <zappo@gnu.org>
 +
 +      Update to CEDET 1.0's version of EIEIO.
 +
 +      * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key):
 +      New function.
 +      (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it.
 +      (eieio-default-eval-maybe): Eval val instead of unquoting only.
 +      (class-precedence-list): If class is nil, return nil.
 +      (eieio-generic-call): If class of first input arg is nil, don't
 +      look up static methods, and do check for primary methods.
 +      (initialize-instance): See if the default needs to be evaluated
 +      during the constructor.
 +      (eieio-perform-slot-validation-for-default): Don't do the check
 +      for values that will eventually be evaluated.
 +      (eieio-eval-default-p): New function.
 +      (eieio-default-eval-maybe): Use it.
 +
 +2010-09-23  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * emacs-lisp/eieio.el (eieio-defclass): Allow :c3
 +      method-invocation-order.
 +      (eieio-c3-candidate, eieio-c3-merge-lists): New functions.
 +      (eieio-class-precedence-dfs): Compute class precedence list using
 +      dfs algorithm.
 +      (eieio-class-precedence-bfs): Compute class precedence list using
 +      bfs algorithm.
 +      (eieio-class-precedence-c3): Compute class precedence list using
 +      c3 algorithm.
 +      (class-precedence-list): New function.
 +      (eieiomt-method-list, eieiomt-sym-optimize): Use it.
 +      (inconsistent-class-hierarchy): New error symbol.
 +      (call-next-method): Stow the replacement argument list for future
 +      call-next-method invocations.
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-check): If not displaying the diary,
 +      use (diary 1) to only get the entries we need.
 +      (appt-make-list): Sort diary-list-entries, if we cannot guarantee
 +      that it is in day order.  (Bug#7019)
 +
 +      * calendar/appt.el (appt-check): Rather than showing the diary,
 +      just turn off invisible display, and only if needed.
 +
 +      * calendar/diary-lib.el (diary-list-entries): Doc fix.  (Bug#7019)
 +
 +2010-09-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar):
 +      (byte-compile-defvar, byte-compile-cl-warn):
 +      Start warnings with lower-case, like the majority.
 +
 +      * files.el (auto-mode-alist): Add .xa, .xw, .xsw for ld-script-mode.
 +
 +      * files.el (auto-mode-alist): Prefer C-mode for .xs.  (Bug#7071)
 +
 +      * progmodes/ld-script.el (auto-mode-alist): Move to files.el.
 +      * files.el (auto-mode-alist): Move ld-script entries here, further down
 +      the list.
 +
 +      * vc/add-log.el: Don't require timezone when compiling.
 +      (timezone-make-date-sortable): Autoload it.
 +      (change-log-sortable-date-at): Don't require timezone.
 +      Use `ignore-errors'.
 +
 +      * comint.el (comint-use-prompt-regexp-instead-of-fields):
 +      Move alias before definition, so it does not need autoloading.
 +
 +      * emulation/crisp.el, emulation/cua-base.el, emulation/edt.el:
 +      * emulation/pc-select.el, emulation/vip.el, international/iso-ascii.el:
 +      * international/kkc.el, international/ogonek.el, mail/feedmail.el:
 +      * net/browse-url.el, net/eudc-vars.el, net/net-utils.el:
 +      * net/rcompile.el, net/rlogin.el, textmodes/enriched.el:
 +      * textmodes/makeinfo.el, textmodes/page-ext.el, textmodes/picture.el:
 +      * textmodes/refer.el, textmodes/spell.el, textmodes/table.el:
 +      * textmodes/tex-mode.el, textmodes/two-column.el:
 +      Remove leading `*' from docs of defcustoms etc.
 +
 +2010-09-23  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/netrc.el (netrc-parse): Remove encrypt.el mentions.
 +
 +2010-09-22  Dan Christensen  <jdc@uwo.ca>
 +
 +      * calendar/time-date.el (date-to-time): Try using parse-time-string
 +      first before using the slower timezone-make-date-arpa-standard.
 +
 +2010-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * calendar/time-date.el (format-seconds): Comment fix.
 +
 +2010-09-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/package.el (package-menu-mode): `revert-buffer-function'
 +      is not automatically buffer-local.
 +
 +2010-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-debug--describe-cycle): Fix typo.
 +      (smie-indent-comment): Be more careful with comment-start-skip.
 +      (smie-indent-comment-close, smie-indent-comment-inside): New funs.
 +      (smie-indent-functions): Use them.
 +
 +2010-09-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/ange-ftp.el (ange-ftp-skip-msgs): Add "^504 ..." message.
 +
 +2010-09-21  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): customize-set-variable
 +      tool-bar-position.  Don't modify frame parameters here.
 +      (menu-bar-options-save): Add tool-bar-position.
 +
 +      * tool-bar.el (tool-bar-position): New defcustom (Bug#7049).
 +
 +2010-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/reftex-parse.el (reftex-what-macro)
 +      (reftex-context-substring): Let-bind forward-sexp-function to nil
 +      since we don't need/want to treat \begin...\end as a block (bug#7053).
 +
 +      * emacs-lisp/lisp.el (up-list): Don't do nothing silently.
 +
 +      * simple.el (blink-matching-open): Use syntax-class.
 +
 +      * progmodes/pascal.el (pascal-mode): Use define-derived-mode.
 +      Set invisibility spec for pascal's outline mode.
 +      (pascal-outline-change): Clean up calling convention.
 +      (pascal-show-all, pascal-hide-other-defuns): Update callers.
 +
 +      * progmodes/prolog.el (prolog-smie-forward-token)
 +      (prolog-smie-backward-token): New functions.
 +      (prolog-mode-variables): Use them to parse "!," correctly.
 +      Set up smie-blink-matching for ".".
 +
 +      * textmodes/ispell.el (ispell-start, ispell-end): Rename from `start'
 +      and `end'.
 +      (ispell-region, ispell-process-line): Update users.
 +
 +      * textmodes/reftex-parse.el (reftex-what-macro): Don't hardcode
 +      point-min==1.
 +
 +      * textmodes/ispell.el: Fix commenting convention.
 +      (ispell-parse-output): Simplify, use push.
 +      (ispell-region): Use match-string-no-properties.
 +      (ispell-begin-skip-region-regexp): Use mapconcat to simplify.
 +      (ispell-minor-mode): Use define-minor-mode.
 +      (ispell-message): Remove unused var `skip-regexp'.
 +      (ispell-add-per-file-word-list): Use dynamic let-binding.
 +      Try and use the proper comment marker.
 +
 +      * mail/sendmail.el: Fix commenting convention.
 +      (sendmail-send-it): Use line-beginning-position.
 +
 +      * help-fns.el (describe-variable): Add original value, if applicable.
 +
 +2010-09-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (y-or-n-p): Remove leftover code from 2010-09-17T13:30:30Z!monnier@iro.umontreal.ca.
 +
 +      * emacs-lisp/smie.el (smie-indent--hanging-p): Use `smie-indent--bolp'.
 +
 +2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-bnf-precedence-table): Improve error message.
 +      (smie-debug--prec2-cycle, smie-debug--describe-cycle): New functions.
 +      (smie-prec2-levels): Use them to better diagnose precedence cycles.
 +      (smie-blink-matching-check): Don't signal a mismatch if car is t.
 +      (smie-blink-matching-open): Rewrite to remove assumptions, so that
 +      something like "." can also be a closer.
 +      (smie--associative-p, smie-indent--hanging-p, smie-indent--bolp)
 +      (smie-indent--offset, smie-indent--offset-rule, smie-indent--column):
 +      Rename internal functions to use "--".  Update callers.
 +
 +      * frame.el (make-frame-names-alist): Don't list frames on other displays.
 +
 +      * fringe.el (fringe-styles): New var.
 +      (fringe-mode, fringe-query-style): Use it.
 +
 +2010-09-18  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.8
 +      (sql-login-params): Update widget structure; changes still needed.
 +      (sql-product-alist): Add :list-all and :list-table features for
 +      SQLite, Postgres and MySQL products.
 +      (sql-redirect): Handle default value.
 +      (sql-execute, sql-execute-feature): New functions.
 +      (sql-read-table-name): New function.
 +      (sql-list-all, sql-list-table): New functions.  User API.
 +      (sql-mode-map, sql-interactive-mode-map): Add key definitions
 +      for above functions.
 +      (sql-mode-menu, sql-interactive-mode-menu): Add menu definitions
 +      for above functions.
 +      (sql-postgres-login-params): Add user and database defaults.
 +      (sql-buffer-live-p): Bug fix.
 +      (sql-product-history): New variable.
 +      (sql-read-product): New function.  Use it.
 +      (sql-set-product, sql-product-interactive): Use it.
 +      (sql-connection-history): New variable.
 +      (sql-read-connection): New function.  Use it.
 +      (sql-connect): New function.
 +      (sql-for-each-login): Redesign function interface.
 +      (sql-make-alternate-buffer-name, sql-save-connection): Use it.
 +      (sql-get-login-ext, sql-get-login): Use it.  Handle default values.
 +      (sql-comint): Check for program.  Existing live buffer.
 +      (sql-comint-postgres): Add port parameter.
 +
 +2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/warnings.el: Fix commenting convention.
 +      (display-warning): Use special mode and make the buffer read-only.
 +
 +2010-09-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-prog.el (calc-read-parse-table-part): Don't "fix" the
 +      empty string when it follows a repeated or optional pattern.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent.el (indent-according-to-mode): Apply syntax-propertize.
 +      (indent-region): Use indent-according-to-mode.
 +
 +2010-09-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.el (fringe-mode): Doc fix.
 +
 +2010-09-14  Kan-Ru Chen  <kanru@kanru.info>  (tiny change)
 +
 +      * textmodes/nroff-mode.el (nroff-view): Kill old buffer before
 +      refreshing the preview buffer.
 +
 +2010-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/tex-mode.el (tex-syntax-propertize-rules)
 +      (latex-syntax-propertize-rules): New consts; replace
 +      tex-font-lock-syntactic-keywords.
 +      (tex-env-mark, latex-env-before-change): New functions.
 +      (latex-electric-env-pair-mode): New minor mode.
 +      (tex-font-lock-verb): Change arguments; do move point.
 +      (tex-font-lock-syntactic-face-function): Adjust to new verbatim
 +      representation as a form of comment.
 +      (tex-font-lock-keywords-1): Remove workaround, now unneeded.
 +      (doctex-syntax-propertize-rules): New const; replaces
 +      doctex-font-lock-syntactic-keywords.
 +      (tex-common-initialization, doctex-mode): Use syntax-propertize-rules.
 +
 +      * progmodes/fortran.el (fortran--font-lock-syntactic-keywords): Remove.
 +      (fortran-make-syntax-propertize-function): New function; replaces
 +      fortran-font-lock-syntactic-keywords.
 +      (fortran-mode): Use it.
 +      (fortran-line-length): Use it.  Improve interactive spec.
 +
 +      * emacs-lisp/syntax.el (syntax-propertize-precompile-rules): New macro.
 +      (syntax-propertize-rules): Add var-ref case.  Fix offset computation
 +      when adding surrounding \(..\).
 +
 +      * progmodes/js.el (js-mode): Fix last change (bug#7054).
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * obsolete/old-whitespace.el (whitespace-rescan-files-in-buffers):
 +      Use with-current-buffer.
 +
 +      * isearch.el (isearch-face): Rename from `isearch'.
 +      (isearch-highlight): Use new name.
 +
 +2010-09-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fringe.el (fringe-mode, fringe-query-style): Use 4 pixels, not
 +      5, for `half' width fringes.  (Bug#6933)
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar)
 +      (byte-compile-defvar): "foo/bar" does not lack a prefix.
 +
 +      * subr.el (y-or-n-p): Add the "(y or n)" that was lost somehow.
 +
 +2010-09-17  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * dframe.el (dframe-reposition-frame-emacs): Use tool-bar-pixel-width
 +      in calculating new frame position.  Add more space between new and
 +      parent on the left (Bug#7048).
 +
 +2010-09-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-with-temp-message): Make it a
 +      defmacro.
 +
 +2010-09-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mail/sendmail.el: Add "*unsent mail*" to same-window-buffer-names.
 +
 +      * term/x-win.el (x-cut-buffer-or-selection-value): Define as
 +      obsolete alias for x-selection-value.
 +
 +      * ido.el (ido-make-buffer-list): Fix error in 2010-08-22 merge.
 +
 +2010-09-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cmds.el (tramp-cleanup-connection): Set tramp-autoload
 +      cookie.
 +
 +2010-09-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-with-temp-message)
 +      (tramp-compat-font-lock-add-keywords, tramp-compat-process-get)
 +      (tramp-compat-process-put): New defuns.
 +
 +      * net/tramp.el (top):
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-cache.el (top): Use `tramp-compat-font-lock-add-keywords'.
 +
 +      * net/tramp.el (tramp-progress-reporter-update):
 +      Use `tramp-compat-funcall'.
 +
 +      * net/tramp.el (tramp-process-actions):
 +      * net/tramp-gvfs.el (tramp-handle-vc-registered):
 +      * net/tramp-sh.el (tramp-gvfs-handler-askquestion)
 +      (tramp-get-remote-stat, tramp-get-remote-readlink):
 +      Use `tramp-compat-with-temp-message'.
 +
 +      * net/tramp-sh.el (top): Require 'cl.
 +      (tramp-handle-start-file-process): Use `tramp-compat-process-get'.
 +      (tramp-open-connection-setup-interactive-shell):
 +      Use `tramp-compat-process-put'.
 +
 +2010-09-15  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Correct the
 +      indentation.
 +      (c-forward-<>-arglist-recur): Fix an infinite recursion.
 +
 +2010-09-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-warning-types): New type
 +      `lexical' for warnings related to lexical scoping.
 +      (byte-compile-file-form-defvar, byte-compile-defvar): Warn about
 +      global vars which don't have a prefix and could hence affect lexical
 +      scoping in unrelated files.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el: Revert back to version
 +      cb950ed8ff3e0f40dac437a51b269166f9ffb60d, since some of the changes
 +      seem problematic.
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * obsolete/old-whitespace.el (whitespace-unload-function):
 +      Explicitly pass `obarray' to `unintern' to avoid a warning.
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/byte-run.el (set-advertised-calling-convention):
 +      Add `when' argument.  Update callers.
 +
 +      * subr.el (unintern): Declare the obarray arg mandatory.
 +
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
 +      Doc fixes.
 +
 +      * calendar/diary-lib.el (diary-included-files): New variable.
 +      (diary-list-entries): Maybe initialize diary-included-files.
 +      (diary-include-other-diary-files): Append to diary-included-files.
 +      * calendar/appt.el (appt-update-list): Also check the members of
 +      diary-included-files.  (Bug#6999)
 +      (appt-check): Doc fix.
 +
 +2010-09-14  David Reitter  <david.reitter@gmail.com>
 +
 +      * simple.el (line-move-visual): Do not truncate goal column to
 +      integer size.  (Bug#7020)
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * repeat.el (repeat): Allow repeating when the last event is a click.
 +      Suggested by Drew Adams (bug#6256).
 +
 +2010-09-14  Sascha Wilde  <wilde@sha-bang.de>
 +
 +      * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
 +      Replace setting HGRCPATH to "" by some less invasive --config options.
 +
 +2010-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * font-lock.el (font-lock-beginning-of-syntax-function):
 +      Mark as obsolete.
 +
 +2010-09-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar
 +      and tool-bar modes.  (Bug#6211)
 +      (menu-bar-mode): Move setting of standard-value after the
 +      minor-mode definition, otherwise it seems to have no effect.
 +
 +2010-09-14  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
 +      Fix typo.  (Bug#6976)
 +
 +2010-09-14  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Allow cleaning up blanks without blank
 +      visualization (Bug#6651).  Adjust help window for
 +      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 +      instead of whitespace-line-column (from EmacsWiki).  New version 13.1.
 +      (whitespace-style): Add new value 'face.  Adjust docstring.
 +      (whitespace-space, whitespace-hspace, whitespace-tab):
 +      Adjust foreground property face.
 +      (whitespace-line-column): Adjust docstring and type declaration.
 +      (whitespace-style-value-list, whitespace-toggle-option-alist)
 +      (whitespace-help-text): Adjust const initialization.
 +      (whitespace-toggle-options, global-whitespace-toggle-options):
 +      Adjust docstring.
 +      (whitespace-display-window, whitespace-interactive-char)
 +      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 +      (whitespace-help-scroll): New fun.
 +
 +2010-09-14  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * calendar/time-date.el (format-seconds): Comment fix.
 +
 +2010-09-13  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.7.
 +      (sql-buffer-live-p): Improve detection.
 +      (sql-find-sqli-buffer, sql-set-sqli-buffer-generally)
 +      (sql-set-sqli-buffer): Use it.
 +      (sql-product-interactive): Run `sql-set-sqli-hook'.
 +      (sql-rename-buffer): Code cleanup.
 +      (sql-redirect, sql-redirect-value): New functions.  More to come.
 +
 +2010-09-13  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Port tramp-related Makefile changes of 2010-09-08T14:42:54Z!michael.albinus@gmx.de, 2010-09-13T15:17:01Z!michael.albinus@gmx.de to Windows.
 +      * makefile.w32-in (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el.
 +      (TRAMP_SRC): New macro.
 +      ($(lisp)/net/tramp-loaddefs.el): New target.
 +
 +2010-09-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Major code cleanup.  Split tramp.el into tramp.el and tramp-sh.el.
 +
 +      * Makefile.in (TRAMP_SRC): Remove tramp-fish.el.  Add tramp-sh.el.
 +
 +      * net/tramp.el (top): Don't show loading message.  Require just
 +      'tramp-compat, everything else is required there.
 +      Use `ignore-errors' where appropriate.
 +      (tramp-inline-compress-start-size, tramp-copy-size-limit)
 +      (tramp-terminal-type, tramp-end-of-output)
 +      (tramp-initial-end-of-output, tramp-completion-function-alist-rsh)
 +      (tramp-completion-function-alist-ssh)
 +      (tramp-completion-function-alist-telnet)
 +      (tramp-completion-function-alist-su)
 +      (tramp-completion-function-alist-putty, tramp-remote-path)
 +      (tramp-remote-process-environment, tramp-sh-extra-args)
 +      (tramp-actions-before-shell, tramp-uudecode)
 +      (tramp-perl-file-truename, tramp-perl-file-name-all-completions)
 +      (tramp-perl-file-attributes)
 +      (tramp-perl-directory-files-and-attributes)
 +      (tramp-perl-encode-with-module, tramp-perl-decode-with-module)
 +      (tramp-perl-encode, tramp-perl-decode)
 +      (tramp-vc-registered-read-file-names, tramp-file-mode-type-map)
 +      (tramp-file-name-handler-alist, tramp-make-tramp-temp-file)
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (tramp-handle-file-name-as-directory)
 +      (tramp-handle-file-name-directory)
 +      (tramp-handle-file-name-nondirectory, tramp-handle-file-truename)
 +      (tramp-handle-file-exists-p, tramp-handle-file-attributes)
 +      (tramp-do-file-attributes-with-ls)
 +      (tramp-do-file-attributes-with-perl)
 +      (tramp-do-file-attributes-with-stat)
 +      (tramp-handle-set-visited-file-modtime)
 +      (tramp-handle-verify-visited-file-modtime)
 +      (tramp-handle-set-file-modes, tramp-handle-set-file-times)
 +      (tramp-set-file-uid-gid, tramp-remote-selinux-p)
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context)
 +      (tramp-handle-file-executable-p, tramp-handle-file-readable-p)
 +      (tramp-handle-file-newer-than-file-p, tramp-handle-file-modes)
 +      (tramp-handle-file-directory-p, tramp-handle-file-regular-p)
 +      (tramp-handle-file-symlink-p, tramp-handle-file-writable-p)
 +      (tramp-handle-file-ownership-preserved-p)
 +      (tramp-handle-directory-file-name, tramp-handle-directory-files)
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-do-directory-files-and-attributes-with-perl)
 +      (tramp-do-directory-files-and-attributes-with-stat)
 +      (tramp-handle-file-name-all-completions)
 +      (tramp-handle-file-name-completion, tramp-handle-add-name-to-file)
 +      (tramp-handle-copy-file, tramp-handle-copy-directory)
 +      (tramp-handle-rename-file, tramp-do-copy-or-rename-file)
 +      (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-make-directory, tramp-handle-delete-directory)
 +      (tramp-handle-delete-file)
 +      (tramp-handle-dired-recursive-delete-directory)
 +      (tramp-handle-dired-compress-file, tramp-handle-dired-uncache)
 +      (tramp-handle-insert-directory)
 +      (tramp-handle-unhandled-file-name-directory)
 +      (tramp-handle-expand-file-name)
 +      (tramp-handle-substitute-in-file-name)
 +      (tramp-handle-executable-find, tramp-process-sentinel)
 +      (tramp-handle-start-file-process, tramp-handle-process-file)
 +      (tramp-handle-call-process-region, tramp-handle-shell-command)
 +      (tramp-handle-file-local-copy, tramp-handle-file-remote-p)
 +      (tramp-handle-insert-file-contents)
 +      (tramp-handle-insert-file-contents-literally)
 +      (tramp-handle-find-backup-file-name)
 +      (tramp-handle-make-auto-save-file-name, tramp-handle-write-region)
 +      (tramp-vc-registered-file-names, tramp-handle-vc-registered)
 +      (tramp-sh-file-name-handler, tramp-vc-file-name-handler)
 +      (tramp-maybe-send-script, tramp-set-auto-save, tramp-run-test)
 +      (tramp-run-test2, tramp-find-executable, tramp-set-remote-path)
 +      (tramp-find-file-exists-command, tramp-open-shell)
 +      (tramp-find-shell, tramp-barf-if-no-shell-prompt)
 +      (tramp-open-connection-setup-interactive-shell)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands)
 +      (tramp-find-inline-encoding, tramp-call-local-coding-command)
 +      (tramp-inline-compress-commands, tramp-find-inline-compress)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection)
 +      (tramp-send-command, tramp-wait-for-output)
 +      (tramp-send-command-and-check, tramp-barf-unless-okay)
 +      (tramp-send-command-and-read, tramp-mode-string-to-int)
 +      (tramp-convert-file-attributes, tramp-check-cached-permissions)
 +      (tramp-file-mode-from-int, tramp-file-mode-permissions)
 +      (tramp-shell-case-fold, tramp-make-copy-program-file-name)
 +      (tramp-method-out-of-band-p, tramp-local-host-p)
 +      (tramp-get-remote-path, tramp-get-remote-tmpdir)
 +      (tramp-get-ls-command, tramp-get-ls-command-with-dired)
 +      (tramp-get-test-command, tramp-get-test-nt-command)
 +      (tramp-get-file-exists-command, tramp-get-remote-ln)
 +      (tramp-get-remote-perl, tramp-get-remote-stat)
 +      (tramp-get-remote-readlink, tramp-get-remote-trash)
 +      (tramp-get-remote-id, tramp-get-remote-uid, tramp-get-remote-gid)
 +      (tramp-get-local-uid, tramp-get-local-gid)
 +      (tramp-get-inline-compress, tramp-get-inline-coding): Move to
 +      tramp-sh.el.
 +      (tramp-methods, tramp-default-method-alist)
 +      (tramp-default-user-alist, tramp-foreign-file-name-handler-alist):
 +      Move initialization to tramp-sh.el.
 +      (tramp-temp-name-prefix): Make it a defconst.
 +      (tramp-dissect-file-name): Don't check anymore for multi-hop
 +      methods.
 +      (tramp-debug-outline-regexp): Add a docstring.
 +      (tramp-debug-outline-level): Rename from `tramp-outline-level'.
 +      (tramp-get-debug-buffer): Use it.
 +
 +      * net/tramp-cache.el (top): Set tramp-autoload cookie for
 +      initialization forms.
 +      (tramp-set-connection-property): Don't protect `tramp-message'
 +      call, it isn't necessary any longer.
 +      (tramp-dump-connection-properties): Use `ignore-errors'.
 +
 +      * net/tramp-compat.el (top): Require 'advice, 'format-spec,
 +      'password-cache and 'auth-source.
 +
 +      * net/tramp-gvfs.el (top):
 +      * net/tramp-smb.el (top): Require 'tramp-sh.
 +
 +      * net/tramp-gw.el (tramp-gw-open-network-stream): Use `ignore-errors'.
 +
 +      * net/tramp-sh.el: New file, derived from tramp.el.
 +      (top): Initialize `tramp-methods', `tramp-default-method-alist',
 +      `tramp-default-user-alist', `tramp-foreign-file-name-handler-alist'.
 +      Remove "scp1_old", "scp2_old", "ssh1_old", "ssh2_old".
 +      Use `ignore-errors' where appropriate.
 +      (tramp-sh-file-name-handler-alist): Rename from
 +      `tramp-file-name-handler-alist'.
 +      (tramp-send-command-and-check): Return t or nil.  Remove all
 +      `zerop' checks, where called.
 +      (tramp-handle-set-file-modes)
 +      (tramp-do-copy-or-rename-file-directly)
 +      (tramp-handle-delete-directory, tramp-handle-delete-file)
 +      (tramp-maybe-send-script): Use `tramp-barf-unless-okay'.
 +      (tramp-sh-file-name-handler, tramp-send-command-and-check)
 +      (tramp-get-remote-ln): Set tramp-autoload cookie.
 +
 +      * net/tramp-fish.el: Remove file.
 +
 +2010-09-13  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents): If visiting, bind
 +      buffer-file-name to avoid file-locking.  (Bug#7026)
 +
 +2010-09-13  Julien Danjou  <julien@danjou.info>
 +
 +      * notifications.el (notifications-notify): Add support for
 +      image-path and sound-name.
 +      (notifications-specification-version): Add this variable.
 +
 +2010-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (y-or-n-p): New function, moved from src/fns.c; use read-key.
 +
 +2010-09-12  Leo  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-server-commands, rcirc-client-commands)
 +      (rcirc-completion-start): New variables.
 +      (rcirc-nick-completions): Rename to rcirc-completions.
 +      (rcirc-nick-completion-start-offset): Delete.
 +      (rcirc-completion-at-point): New function for constructing
 +      completion data for both nicks and irc commands.  Add to
 +      completion-at-point-functions in rcirc mode.
 +      (rcirc-complete): Rename from rcirc-nick-complete; use
 +      rcirc-completion-at-point.
 +      (defun-rcirc-command): Update rcirc-client-commands.
 +
 +2010-09-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-file): Create .elc files
 +      atomically, to avoid parallel build errors.  (Bug#4196)
 +
 +2010-09-11  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.6
 +      (sql-dialect): Synonym for "sql-product".
 +      (sql-find-sqli-buffer, sql-set-sqli-buffer-generally)
 +      (sql-set-sqli-buffer, sql-show-sqli-buffer, sql-interactive-mode):
 +      Set "sql-buffer" to buffer name not buffer object so multiple sql
 +      interactive buffers work properly.  Reverts misguided changes in
 +      earlier work.
 +      (sql-comint): Make sure different buffer name is used if "*SQL*"
 +      buffer is for a different product.
 +      (sql-make-alternate-buffer-name): Fix bug with "sql-database"
 +      login param.
 +      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql)
 +      (sql-solid, sql-ingres, sql-ms, sql-postgres, sql-interbase)
 +      (sql-db2, sql-linter, sql-product-interactive, sql-rename-buffer):
 +      Accept new buffer name or prompt for one.
 +      (sql-port): Default to zero.
 +      (sql-comint-mysql): Handle "sql-port" as a numeric.
 +      (sql-port-history): Delete unused variable.
 +      (sql-get-login): Default "sql-port" to a number.
 +      (sql-product-alist): Correct Postgres prompt and terminator regexp.
 +      (sql-sqlite-program): Dynamically detect presence of "sqlite" or
 +      "sqlite3" executables.
 +      (sql-sqlite-login-params): Add "*.sqlite[23]?" database name pattern.
 +      (sql-buffer-live-p): New function.
 +      (sql-mode-menu, sql-send-string): Use it.
 +      (sql-mode-oracle-font-lock-keywords): Improve SQL*Plus REMARK
 +      syntax pattern.
 +      (sql-mode-postgres-font-lock-keywords): Support Postgres V9.
 +      (sql-mode-sqlite-font-lock-keywords): Hilight sqlite commands.
 +
 +2010-09-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/netrc.el (netrc-credentials): New convenience function.
 +
 +2010-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun
 +      to replace texinfo-font-lock-syntactic-keywords.
 +      (texinfo-mode): Use it.
 +
 +      * textmodes/tex-mode.el (tex-common-initialization, doctex-mode):
 +      Use syntax-propertize-function.
 +
 +      * textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to
 +      replace sgml-font-lock-syntactic-keywords.
 +      (sgml-mode): Use it.
 +
 +      * textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare
 +      since we don't use it.
 +
 +      * textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function.
 +
 +      * progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function
 +      if available.
 +      (vhdl-fontify-buffer): Adjust.
 +
 +      * progmodes/tcl.el (tcl-syntax-propertize-function): New var to
 +      replace tcl-font-lock-syntactic-keywords.
 +      (tcl-mode): Use it.
 +
 +      * progmodes/simula.el (simula-syntax-propertize-function): New var to
 +      replace simula-font-lock-syntactic-keywords.
 +      (simula-mode): Use it.
 +
 +      * progmodes/sh-script.el (sh-st-symbol): Remove.
 +      (sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg.
 +      (sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove.
 +      (sh-font-lock-quoted-subshell): Assume we've already matched $(.
 +      (sh-font-lock-paren): Set syntax-multiline.
 +      (sh-font-lock-syntactic-keywords): Remove.
 +      (sh-syntax-propertize-function): New function to replace it.
 +      (sh-mode): Use it.
 +
 +      * progmodes/ruby-mode.el (ruby-here-doc-beg-re):
 +      Define while compiling.
 +      (ruby-here-doc-end-re, ruby-here-doc-beg-match)
 +      (ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax)
 +      (syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p)
 +      (ruby-here-doc-find-end, ruby-here-doc-beg-syntax)
 +      (ruby-here-doc-end-syntax): Only define when
 +      syntax-propertize is not available.
 +      (ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc):
 +      New functions.
 +      (ruby-in-ppss-context-p): Update to new syntax of heredocs.
 +      (electric-indent-chars): Silence bytecompiler.
 +      (ruby-mode): Use prog-mode, syntax-propertize-function, and
 +      electric-indent-chars.
 +
 +      * progmodes/python.el (python-syntax-propertize-function): New var to
 +      replace python-font-lock-syntactic-keywords.
 +      (python-mode): Use it.
 +      (python-quote-syntax): Simplify and adjust to new use.
 +
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to
 +      replace perl-font-lock-syntactic-keywords.
 +      (perl-syntax-propertize-special-constructs): New fun to replace
 +      perl-font-lock-special-syntactic-constructs.
 +      (perl-font-lock-syntactic-face-function): New fun.
 +      (perl-mode): Use it.
 +
 +      * progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function
 +      to replace octave-font-lock-close-quotes.
 +      (octave-syntax-propertize-function): New function to replace
 +      octave-font-lock-syntactic-keywords.
 +      (octave-mode): Use it.
 +
 +      * progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var;
 +      replaces mixal-font-lock-syntactic-keywords.
 +      (mixal-mode): Use it.
 +
 +      * progmodes/make-mode.el (makefile-syntax-propertize-function):
 +      New var; replaces makefile-font-lock-syntactic-keywords.
 +      (makefile-mode): Use it.
 +      (makefile-imake-mode): Adjust.
 +
 +      * progmodes/js.el (js--regexp-literal): Define while compiling.
 +      (js-syntax-propertize-function): New var; replaces
 +      js-font-lock-syntactic-keywords.
 +      (js-mode): Use it.
 +
 +      * progmodes/gud.el (gdb-script-syntax-propertize-function): New var;
 +      replaces gdb-script-font-lock-syntactic-keywords.
 +      (gdb-script-mode): Use it.
 +
 +      * progmodes/fortran.el (fortran-mode): Use syntax-propertize-function.
 +      (fortran--font-lock-syntactic-keywords): New var.
 +      (fortran-line-length): Update syntax-propertize-function and
 +      fortran--font-lock-syntactic-keywords.
 +
 +      * progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function.
 +
 +      * progmodes/cfengine.el (cfengine-mode):
 +      Use syntax-propertize-function.
 +      (cfengine-font-lock-syntactic-keywords): Remove.
 +
 +      * progmodes/autoconf.el (autoconf-mode):
 +      Use syntax-propertize-function.
 +      (autoconf-font-lock-syntactic-keywords): Remove.
 +
 +      * progmodes/ada-mode.el (ada-set-syntax-table-properties)
 +      (ada-after-change-function, ada-initialize-syntax-table-properties)
 +      (ada-handle-syntax-table-properties): Only define when
 +      syntax-propertize is not available.
 +      (ada-mode): Use syntax-propertize-function.
 +
 +      * font-lock.el (font-lock-syntactic-keywords): Make obsolete.
 +      (font-lock-fontify-syntactic-keywords-region): Move handling of
 +      font-lock-syntactically-fontified to...
 +      (font-lock-default-fontify-region): ...here.
 +      Let syntax-propertize-function take precedence.
 +      (font-lock-fontify-syntactically-region): Cal syntax-propertize.
 +
 +      * emacs-lisp/syntax.el (syntax-propertize-function)
 +      (syntax-propertize-chunk-size, syntax-propertize--done)
 +      (syntax-propertize-extend-region-functions): New vars.
 +      (syntax-propertize-wholelines, syntax-propertize-multiline)
 +      (syntax-propertize--shift-groups, syntax-propertize-via-font-lock)
 +      (syntax-propertize): New functions.
 +      (syntax-propertize-rules): New macro.
 +      (syntax-ppss-flush-cache): Set syntax-propertize--done.
 +      (syntax-ppss): Call syntax-propertize.
 +
 +      * emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups.
 +
 +2010-09-10  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Improve comments.
 +      XEmacs compatibility changes regarding (add-hook) 'local option
 +      and (set-process-query-on-exit-flag).
 +
 +2010-09-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-parse-connection-properties):
 +      Set tramp-autoload cookie.
 +
 +2010-09-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * image.el (imagemagick-types-inhibit): Add :type, :version, :group.
 +      (imagemagick-register-types): Doc fix.
 +
 +2010-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (electric-indent-chars): Silence bytecomp.
 +
 +      * progmodes/js.el (require): Require is already "eval-and-compile".
 +      (js--re-search-forward): Avoid `eval'.  Preserve the error data.
 +      (js--re-search-backward): Use js--re-search-forward.
 +
 +      * progmodes/fortran.el (fortran-line-length): Don't recompute
 +      syntactic keywords redundantly a second time.
 +
 +      * progmodes/ada-mode.el: Replace "(set '" with setq.
 +      (ada-mode): Simplify.
 +      (ada-create-case-exception, ada-adjust-case-interactive)
 +      (ada-adjust-case-region, ada-format-paramlist, ada-indent-current)
 +      (ada-search-ignore-string-comment, ada-move-to-start)
 +      (ada-move-to-end): Use with-syntax-table.
 +
 +      * font-lock.el (save-buffer-state): Remove `varlist' arg.
 +      (font-lock-unfontify-region, font-lock-default-fontify-region):
 +      Update usage correspondingly.
 +      (font-lock-fontify-syntactic-keywords-region):
 +      Set parse-sexp-lookup-properties buffer-locally here.
 +      (font-lock-fontify-syntactically-region): Remove unused `ppss' arg.
 +
 +      * simple.el (blink-matching-open): Don't burp if we can't find a match.
 +
 +2010-09-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-report-ops):
 +      Error if not compiled with -DBYTE_CODE_METER.
 +
 +      * emacs-lisp/bytecomp.el (byte-recompile-directory):
 +      Ignore dir-locals-file.
 +
 +2010-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Not a const.
 +      (compilation-error-regexp-alist-alist): Rule out ": " in file names
 +      for the `gnu' messages.
 +      (compilation-set-skip-threshold): New command.
 +      (compilation-start): Use \' rather than $.
 +      (compilation-forget-errors): Use clrhash.
 +
 +2010-09-08  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-valid-dictionary-list):
 +      Simplify logic.
 +
 +2010-09-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Migrate to Tramp 2.2.  Rearrange load dependencies.
 +      (Bug#1529, Bug#5448, Bug#5705)
 +
 +      * Makefile.in (TRAMP_DIR, TRAMP_SRC): New variables.
 +      ($(TRAMP_DIR)/tramp-loaddefs.el): New target.
 +      (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el.
 +
 +      * net/tramp.el (top): Remove all other tramp-* loads except
 +      tramp-compat.el.  Remove all changes to tramp-unload-hook for
 +      other tramp-* packages.  Rearrange defun order.  Change calls of
 +      `tramp-compat-call-process', `tramp-compat-decimal-to-octal',
 +      `tramp-compat-octal-to-decimal' to new function names.
 +      (tramp-terminal-type, tramp-initial-end-of-output)
 +      (tramp-methods, tramp-foreign-file-name-handler-alist)
 +      (tramp-tramp-file-p, tramp-completion-mode-p)
 +      (tramp-send-command-and-check, tramp-get-remote-path)
 +      (tramp-get-remote-tmpdir, tramp-get-remote-ln)
 +      (tramp-shell-quote-argument): Set tramp-autoload cookie.
 +      (with-file-property, with-connection-property): Move to
 +      tramp-cache.el.
 +      (tramp-local-call-process, tramp-decimal-to-octal)
 +      (tramp-octal-to-decimal): Move to tramp-compat.el.
 +      (tramp-handle-shell-command): Do not require 'shell.
 +      (tramp-compute-multi-hops): No special handling for tramp-gw-*
 +      symbols.
 +      (tramp-unload-tramp): Do not call `tramp-unload-file-name-handlers'.
 +
 +      * net/tramp-cache.el (top): Require 'tramp.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-cache-data, tramp-get-file-property)
 +      (tramp-set-file-property, tramp-flush-file-property)
 +      (tramp-flush-directory-property, tramp-get-connection-property)
 +      (tramp-set-connection-property, tramp-flush-connection-property)
 +      (tramp-cache-print, tramp-list-connections): Set tramp-autoload
 +      cookie.
 +      (with-file-property, with-connection-property): New defuns, moved
 +      from tramp.el.
 +      (tramp-flush-file-function): Use `with-parsed-tramp-file-name'
 +      macro.
 +
 +      * net/tramp-cmds.el (top): Add to `tramp-unload-hook'.
 +      (tramp-version): Set tramp-autoload cookie.
 +
 +      * net/tramp-compat.el (top): Require 'tramp-loaddefs.  Remove all
 +      changes to tramp-unload-hook for other tramp-* packages.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-compat-decimal-to-octal, tramp-compat-octal-to-decimal)
 +      (tramp-compat-call-process): New defuns, moved from tramp.el.
 +
 +      * net/tramp-fish.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.
 +      Add to `tramp-unload-hook'.  Change call of
 +      `tramp-compat-decimal-to-octal' to new function name.
 +      (tramp-fish-method): Make it a defconst.
 +      (tramp-fish-file-name-p): Make it a defsubst.
 +      (tramp-fish-method, tramp-fish-file-name-handler)
 +      (tramp-fish-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-ftp.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-ftp-method): Make it a defconst.
 +      (tramp-ftp-file-name-p): Make it a defsubst.
 +      (tramp-ftp-method, tramp-ftp-file-name-handler)
 +      (tramp-ftp-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-gvfs.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.
 +      (tramp-gvfs-file-name-p): Make it a defsubst.
 +      (tramp-gvfs-methods, tramp-gvfs-file-name-handler)
 +      (tramp-gvfs-file-name-p): Set tramp-autoload cookie.
 +      (tramp-gvfs-handle-file-directory-p): New defun.
 +      (tramp-gvfs-file-name-handler-alist): Use it.
 +
 +      * net/tramp-gw.el (top) Add objects to `tramp-methods' and
 +      `tramp-foreign-file-name-handler-alist'.  Add to
 +      `tramp-unload-hook'.
 +      (tramp-gw-tunnel-method, tramp-gw-default-tunnel-port)
 +      (tramp-gw-socks-method, tramp-gw-default-socks-port): Make it a
 +      defconst.
 +      (tramp-gw-tunnel-method, tramp-gw-socks-method)
 +      (tramp-gw-open-connection): Set tramp-autoload cookie.
 +
 +      * net/tramp-imap.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.
 +      Add to `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.
 +      (tramp-imap-file-name-p): Make it a defsubst.
 +      (tramp-imap-method, tramp-imaps-method)
 +      (tramp-imap-file-name-handler)
 +      (tramp-imap-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-smb.el (top) Require just 'tramp.  Add objects to
 +      `tramp-methods' and `tramp-foreign-file-name-handler-alist'.
 +      Add to `tramp-unload-hook'.  Change checks, whether package can be
 +      loaded.  Change call of `tramp-compat-decimal-to-octal' to new
 +      function name.
 +      (tramp-smb-tunnel-method): Make it a defconst.
 +      (tramp-smb-file-name-p): Make it a defsubst.
 +      (tramp-smb-method, tramp-smb-file-name-handler)
 +      (tramp-smb-file-name-p): Set tramp-autoload cookie.
 +
 +      * net/tramp-uu.el (top) Add to `tramp-unload-hook'.
 +      (tramp-uuencode-region): Set tramp-autoload cookie.
 +
 +      * net/trampver.el (top) Add to `tramp-unload-hook'.
 +      (tramp-version, tramp-bug-report-address): Set tramp-autoload
 +      cookie.  Update release number.
 +
 +2010-09-07  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-start-process): Make sure original
 +      arg list is properly initialized (Bug#6993, Bug#6994).
 +
 +2010-09-06  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +
 +      * files.el (directory-abbrev-alist): Use \` as default regexp.
 +
 +      * emacs-lisp/rx.el (rx-any): Don't explode ranges that end in special
 +      chars like - or ] (bug#6984).
 +      (rx-any-condense-range): Explode 2-char ranges.
 +
 +2010-09-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-path): Bump :version after 2009-09-15 change.
 +
 +2010-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/bibtex.el:
 +      * proced.el: Update to new email for Roland Winkler <winkler@gnu.org>.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-message-map): Remove optional buffer parameter,
 +      since no callers use it.
 +      (imap-message-get): Ditto.
 +      (imap-message-put): Ditto.
 +      (imap-mailbox-map): Ditto.
 +      (imap-mailbox-put): Ditto.
 +      (imap-mailbox-get): Ditto.
 +      (imap-mailbox-get): Revert last change for this function.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-fetch-safe): Remove function, and alter all
 +      callers to use `imap-fetch' instead.  According to the comments, this
 +      should be safe, since all other IMAP clients use the 1:* syntax.
 +      (imap-enable-exchange-bug-workaround): Remove.
 +      (imap-debug): Remove -- doesn't seem very useful.
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/imap.el (imap-log): New convenience function used throughout
 +      instead of repeating the same code all over the place.
 +
 +2010-09-05  David De La Harpe Golden  <david@harpegolden.net>
 +
 +      * mouse.el (mouse-save-then-kill): Save region to kill-ring
 +      when mouse-drag-copy-region is non-nil (Bug#6956).
 +
 +2010-09-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-ls-sorting-switches, dired-sort-by-name-regexp):
 +      Improve regexps (Bug#6987).
 +      (dired-sort-toggle): Search more robustly for -t flag.
 +
 +      * files.el (get-free-disk-space): Search more robustly for
 +      "available" column.  Suggested by Ehud Karni
 +      <ehud@unix.mvs.co.il>.
 +
 +2010-09-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * international/uni-bidi.el:
 +      * international/uni-category.el:
 +      * international/uni-combining.el:
 +      * international/uni-decimal.el:
 +      * international/uni-mirrored.el:
 +      * international/uni-name.el: Regenerate.
 +
 +2010-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * electric.el (electric-indent-post-self-insert-function):
 +      Don't reindent with a sloppy indentation function.
 +
 +      * emacs-lisp/syntax.el (syntax-ppss): More sanity check to catch
 +      border case in change-log-mode.
 +
 +2010-09-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Remove ruby regexp; handle Ruby errors with gcc-include and gnu.
 +      Recognize leading tab in gcc-include regexp.  Ignore names with
 +      leading "from" or "in" in gnu regexp (Bug#6937).
 +
 +2010-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Avoid global recursive calls to kill-buffer-hooks; fit into 80 cols.
 +      * textmodes/ispell.el (ispell-process-buffer-name): Remove.
 +      (ispell-start-process): Avoid setq and simplify logic.
 +      (ispell-init-process): Setup kill-buffer-hook locally when needed.
 +      (kill-buffer-hook): Don't use it globally with code that uses
 +      expand-file-name since that may call kill-buffer via
 +      code_conversion_restore.
 +
 +2010-09-04  Noorul Islam K M  <noorul@noorul.com>  (tiny change)
 +
 +      * emacs-lisp/package.el (package-directory-list): Only call
 +      file-name-nondirectory on a string.
 +
 +2010-09-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--download-one-archive):
 +      Ensure that archive-contents is valid before saving it.
 +      (package-activate-1, package-mark-obsolete, define-package)
 +      (package-compute-transaction, package-list-maybe-add): Use push.
 +
 +2010-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use SMIE's blink-paren for octave-mode.
 +      * progmodes/octave-mod.el (octave-font-lock-close-quotes):
 +      Backslashes do not escape single-quotes, single-quotes do.
 +      (octave-block-else-regexp, octave-block-end-regexp)
 +      (octave-block-match-alist): Remove.
 +      (octave-smie-bnf-table): New var, with old content.
 +      (octave-smie-op-levels): Use it.
 +      (octave-smie-closer-alist): New var.
 +      (octave-mode): Use it.  Setup smie-blink-matching and electric-indent.
 +      (octave-blink-matching-block-open): Remove.
 +      (octave-reindent-then-newline-and-indent, octave-electric-semi)
 +      (octave-electric-space): Let self-insert-command run expand-abbrev and
 +      blink parens.
 +
 +      * electric.el (electricity): New group.
 +      (electric-indent-chars): New var.
 +      (electric-indent-post-self-insert-function): New fun.
 +      (electric-indent-mode): New minor mode.
 +      (electric-pair-skip-self): New custom.
 +      (electric-pair-post-self-insert-function): New function.
 +      (electric-pair-mode): New minor mode.
 +
 +      * calc/calc-aent.el (calcAlg-blink-matching-check): New fun, to replace
 +      calcAlg-blink-matching-open.
 +      (calc-alg-ent-map, calc-alg-ent-esc-map): Initialize in the declaration.
 +      (calc-do-alg-entry): Only touch the part of the keymap that varies.
 +      Use the new blink-matching-check-function.
 +
 +      Provide blink-matching support to SMIE.
 +      * emacs-lisp/smie.el (smie-bnf-closer-alist): New function.
 +      (smie-blink-matching-triggers, smie-blink-matching-inners): New vars.
 +      (smie-blink-matching-check, smie-blink-matching-open): New functions.
 +
 +      * simple.el (newline): Fix last change to properly remove itself from
 +      the hook.
 +
 +2010-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (newline): Eliminate optimization.
 +      Use post-self-insert-hook to set hard-newline and things before
 +      running post-self-insert-hook.
 +      (blink-matching-check-mismatch): New function.
 +      (blink-matching-check-function): New variable.
 +      (blink-matching-open): Use them.
 +      Skip back forward over prefix chars skipped by forward-sexp.
 +      Don't check if the parens are backslash escaped.
 +      (blink-paren-post-self-insert-function): Check backslash escaping here.
 +
 +2010-09-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map):
 +      Change package-menu-revert bindings to revert-buffer.
 +      (package-menu-mode): Set revert-buffer-function.
 +      (package-menu-revert): Doc fix.
 +
 +2010-09-02  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Use "~/" as
 +      `default-directory' unless using Ispell per-directory personal
 +      dictionaries and not in a mini-buffer under XEmacs.
 +      (kill-buffer-hook): Do not kill ispell process on exit when
 +      `ispell-process-directory' is "~/".  (Bug#6143)
 +
 +2010-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * simple.el (kill-new): Call interprogram-cut-function with only
 +      one argument.
 +
 +      * term.el (term-mouse-paste): Don't call x-get-cutbuffer.
 +      Remove cut buffer from error message.
 +
 +      * term/x-win.el (x-select-text):
 +      * term/pc-win.el (x-selection-value):
 +      * term/ns-win.el (x-selection-value):
 +      * eshell/em-term.el:
 +      * w32-fns.el (x-get-selection-value):
 +      * mouse-sel.el (mouse-sel-set-selection-function):
 +      * frame.el (display-selections-p): Remove cut-buffer in documentation.
 +
 +      * term/x-win.el: Update documentation for x-last-selected-text-*.
 +      (x-last-selected-text-cut, x-last-selected-text-cut-encoded)
 +      (x-last-cut-buffer-coding, x-cut-buffer-max): Remove.
 +      (x-select-text): Remove argument PUSH, update documentation.
 +      Remove cut-buffer code.
 +      (x-selection-value-internal): Was previously x-selection-value.
 +      (x-selection-value): Rename from x-cut-buffer-or-selection-value.
 +      Update documentation, remove cut-buffer code.
 +      Call x-selection-value-internal.
 +      (x-clipboard-yank): Call x-selection-value-internal.
 +      (x-initialize-window-system): Remove setting of x-cut-buffer-max.
 +
 +      * term/pc-win.el (x-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * term/ns-win.el (x-setup-function-keys, ns-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value
 +      (x-selection-value): Rename from x-cut-buffer-or-selection-value.
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * emacs-lisp/cl-macs.el (x-get-cutbuffer, x-get-cut-buffer): Remove.
 +
 +      * w32-fns.el (x-last-selected-text):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value.
 +      (x-cut-buffer-max): Remove.
 +      (x-select-text): Remove argument PUSH, update documentation.
 +
 +      * simple.el (interprogram-cut-function): Remove mention of PUSH.
 +
 +      * select.el (x-get-cut-buffer, x-set-cut-buffer): Remove.
 +
 +      * mouse-sel.el (mouse-sel-get-selection-function):
 +      x-cut-buffer-or-selection-value renamed to x-selection-value.
 +      (x-select-text): Remove optional push.
 +
 +2010-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (blink-paren-function): Move from C to here.
 +      (blink-paren-post-self-insert-function): New function.
 +      (post-self-insert-hook): Use it.
 +
 +      * emacs-lisp/pcase.el (pcase-split-memq):
 +      Fix overenthusiastic optimisation.
 +      (pcase-u1): Handle the case of a lambda pred.
 +
 +2010-08-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule-cmds.el (standard-display-european-internal):
 +      Setup standard-display-table for 8-bit characters by storing 8-bit
 +      characters in the element vector.
 +
 +      * disp-table.el (standard-display-8bit):
 +      Setup standard-display-table for 8-bit characters by storing 8-bit
 +      characters in the element vector.
 +      (standard-display-european): Likewise.
 +
 +2010-08-31  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * textmodes/nroff-mode.el (nroff-view): New command.
 +      (nroff-mode-map): Bind it to C-c C-c.
 +
 +2010-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-down-list): New command.
 +
 +      Remove old indentation and navigation code on octave-mode.
 +      * progmodes/octave-mod.el (octave-mode-map): Remap down-list to
 +      smie-down-list rather than add a binding for octave-down-block.
 +      (octave-mark-block, octave-blink-matching-block-open):
 +      Rely on forward-sexp-function.
 +      (octave-fill-paragraph): Don't narrow, so you can use
 +      indent-according-to-mode.
 +      (octave-block-begin-regexp, octave-block-begin-or-end-regexp): Remove.
 +      (octave-in-block-p, octave-re-search-forward-kw)
 +      (octave-re-search-backward-kw, octave-indent-calculate)
 +      (octave-end-as-array-index-p, octave-block-end-offset)
 +      (octave-scan-blocks, octave-forward-block, octave-backward-block)
 +      (octave-down-block, octave-backward-up-block, octave-up-block)
 +      (octave-before-magic-comment-p, octave-indent-line): Remove.
 +
 +2010-08-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--read-archive-file): Just use
 +      `read', to avoid copying an additional string.
 +      (package-menu-mode): Set header-line-format here.
 +      (package-menu-refresh, package-menu-revert): Signal an error if
 +      not in the Package Menu.
 +      (package-menu-package-list): New var.
 +      (package--generate-package-list): Operate on the current buffer;
 +      don't assume that it is *Packages*, since the user may rename it.
 +      Allow persistent package listings and sort keys using
 +      package-menu-package-list and package-menu-package-sort-key.
 +      (package-menu--version-predicate): Fix version calculation.
 +      (package-menu-sort-by-column): Don't select the window.
 +      (package--list-packages): Create the *Packages* buffer.
 +      Set package-menu-package-list-key.
 +      (list-packages): Sorting by status is now the default.
 +      (package-buffer-info): Use match-string-no-properties.
 +      (define-package): Add a &rest argument for future proofing, but
 +      don't use it yet.
 +      (package-install-from-buffer, package-install-buffer-internal):
 +      Merge into a single function, package-install-from-buffer.
 +      (package-install-file): Change caller.
 +
 +      * finder.el: Load finder-inf using `require'.
 +      (finder-list-matches): Sorting by status is now the default.
 +      (finder-compile-keywords): Simpify printing.
 +
 +2010-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt.
 +      (octave-mode-map): Remove special bindings for forward/backward-block
 +      and octave-backward-up-block.  Use smie-close-block.
 +      (octave-continuation-marker-regexp): New var.
 +      (octave-continuation-regexp): Use it.
 +      (octave-operator-table, octave-smie-op-levels)
 +      (octave-operator-regexp, octave-smie-indent-rules): New vars.
 +      (octave-smie-backward-token, octave-smie-forward-token): New funs.
 +      (octave-mode): Use SMIE.
 +      (octave-close-block): Delete.
 +
 +2010-08-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu-bar.el (menu-bar-edit-menu) <"Paste">: Check selection in
 +      CLIPBOARD, not in PRIMARY.  (Bug#6944)
 +
 +2010-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-rule): Let :parent take
 +      a list of parents.
 +      (smie-indent-column): Allow indirection through variables.
 +
 +      * composite.el (save-buffer-state): Delete, unused.
 +      * font-lock.el (save-buffer-state): Use with-silent-modifications.
 +      (font-lock-default-fontify-region): Use with-syntax-table.
 +      * jit-lock.el (with-buffer-unmodified): Remove.
 +      (with-buffer-prepared-for-jit-lock): Use with-silent-modifications.
 +
 +      Use `declare' in defmacros.
 +      * window.el (save-selected-window):
 +      * subr.el (with-temp-file, with-temp-message, with-syntax-table):
 +      * progmodes/python.el (def-python-skeleton):
 +      * net/dbus.el (dbus-ignore-errors):
 +      * jka-cmpr-hook.el (with-auto-compression-mode):
 +      * international/mule.el (with-category-table):
 +      * emacs-lisp/timer.el (with-timeout):
 +      * emacs-lisp/lisp-mnt.el (lm-with-file):
 +      * emacs-lisp/eieio.el (with-slots):
 +      * emacs-lisp/easymenu.el (easy-menu-define):
 +      * emacs-lisp/debug.el (debugger-env-macro):
 +      * emacs-lisp/cl-compat.el (Multiple-value-bind, Multiple-value-setq)
 +      (Multiple-value-call, Multiple-value-prog1):
 +      * emacs-lisp/cl-seq.el (cl-parsing-keywords, cl-check-key)
 +      (cl-check-test-nokey, cl-check-test, cl-check-match): Move indent and
 +      edebug rule to definition.
 +      * emacs-lisp/lisp-mode.el (save-selected-window)
 +      (with-current-buffer, combine-after-change-calls)
 +      (with-output-to-string, with-temp-file, with-temp-buffer)
 +      (with-temp-message, with-syntax-table, read-if, eval-after-load)
 +      (dolist, dotimes, when, unless):
 +      * emacs-lisp/byte-run.el (inline): Remove indent rule, redundant.
 +
 +2010-08-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * finder.el: Require `package'.
 +      (finder-known-keywords): Tweak descriptions.  Retire `oop' keyword.
 +      (finder-package-info): Var deleted.
 +      (finder-keywords-hash, finder--builtins-alist): New vars.
 +      (finder-compile-keywords): Compute package--builtins and
 +      finder-keywords-hash instead of finder-keywords-hash, respecting
 +      the "Package" header.
 +      (finder-unknown-keywords, finder-list-matches):
 +      Use finder-keywords-hash and package--list-packages.
 +      (finder-mode): Don't set font-lock-defaults.
 +      (finder-exit): We don't use "*Finder-package*" and "*Finder
 +      Category*" buffers anymore.
 +
 +      * emacs-lisp/package.el (package--builtins-base): Var deleted.
 +      (package--builtins): Set default value to nil.
 +      (package-initialize): Load precomputed value of package--builtins
 +      from finder-inf.el.
 +      (package-alist, package-compute-transaction)
 +      (package-download-transaction): Improve docstring.
 +      (package-read-all-archive-contents): Do not change
 +      package--builtins here.
 +      (list-packages): Make package-list-packages an alias for this.
 +      Sort by status by default.
 +      (package--list-packages): Add optional PACKAGES arg.
 +      (describe-package-1): Use font-lock-face property.  For built-in
 +      packages, insert file commentary.
 +      (package--generate-package-list): Rename from
 +      package-list-packages-internal; all callers changed.  Add optional
 +      PACKAGES arg.  Add alphabetical sort fallbacks.
 +      (package-menu--version-predicate, package-menu--status-predicate)
 +      (package-menu--description-predicate)
 +      (package-menu--name-predicate): New functions.
 +
 +      * info.el (Info-finder-find-node): Search package-alist instead of
 +      finder-package-info.
 +
 +2010-08-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el (version-regexp-alist): Don't use "a" and "b" for
 +      "alpha" and "beta".
 +      (version-to-list): Handle versions like "10.3d".
 +
 +2010-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Use pcase.
 +      (macroexp-accumulate): Use `declare'.
 +
 +2010-08-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el (whitespace-style): Adjust type declaration.
 +
 +2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 +      empty argument to gvfs-copy.
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 +      handle new TRASH arg of `delete-file'.
 +
 +2010-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +
 +      * net/tramp.el (tramp-handle-insert-directory): Don't use
 +      `forward-word', its default syntax could be changed.
 +
 +2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
 +            Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Implement compression for inline methods.
 +
 +      * net/tramp.el (tramp-inline-compress-start-size): New defcustom.
 +      (tramp-copy-size-limit): Allow also nil.
 +      (tramp-inline-compress-commands): New defconst.
 +      (tramp-find-inline-compress, tramp-get-inline-compress)
 +      (tramp-get-inline-coding): New defuns.
 +      (tramp-get-remote-coding, tramp-get-local-coding): Remove,
 +      replaced by `tramp-get-inline-coding'.
 +      (tramp-handle-file-local-copy, tramp-handle-write-region)
 +      (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
 +
 +2010-08-26  Noah Lavine  <noah549@gmail.com>  (tiny change)
 +
 +      Detect ssh 'ControlMaster' argument automatically in some cases.
 +
 +      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 +      (tramp-default-method): Use it.
 +
 +2010-08-26  Karel Klíč  <kklic@redhat.com>
 +
 +      * net/tramp.el (tramp-file-name-for-operation):
 +      Add file-selinux-context.
 +
 +2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 +
 +      * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (beginning-of-buffer, end-of-buffer): Doc fix
 +      (Bug#6907).
 +
 +2010-08-26  Nathan Weizenbaum  <nweiz@cressida.sea.corp.google.com>  (tiny change)
 +
 +      * progmodes/js.el: Make indentation more customizable (Bug#6914).
 +      (js-paren-indent-offset, js-square-indent-offset)
 +      (js-curly-indent-offset): New options.
 +      (js--proper-indentation): Use them.
 +
 +2010-08-26  Daniel Colascione  <dan.colascione@gmail.com>
 +
 +      * progmodes/sh-script.el (sh-get-indent-info): Use syntax-ppss
 +      instead of inspecting font-lock properties (Bug#6916).
 +
 +2010-08-26  David Reitter  <david.reitter@gmail.com>
 +
 +      * server.el (server-visit-files): Run pre-command-hook and
 +      post-command-hook for each buffer while it is current (Bug#6910).
 +      (server-execute): Do not run hooks here.
 +
 +2010-08-26  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.1.19.
 +
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-reporter-dump-variable, tramp-load-report-modules)
 +      (tramp-append-tramp-buffers): Use `tramp-compat-funcall'.
 +      (tramp-bug): Recommend setting of `tramp-verbose' to 9.
 +
 +      * net/tramp-compat.el (top): Do not autoload
 +      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 +      only when `start-file-process' is not bound.
 +      (byte-compile-not-obsolete-vars): Define if not bound.
 +      (tramp-compat-funcall): New defmacro.
 +      (tramp-compat-line-beginning-position)
 +      (tramp-compat-line-end-position)
 +      (tramp-compat-temporary-file-directory)
 +      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 +      (tramp-compat-copy-file, tramp-compat-copy-directory)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory)
 +      (tramp-compat-number-sequence, tramp-compat-process-running-p):
 +      Use it.
 +      (tramp-advice-file-expand-wildcards): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-compat-make-temp-file): Simplify fallback implementation.
 +      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-compat-copy-tree): Remove function.
 +      (tramp-compat-delete-file): New defun.
 +      (tramp-compat-delete-directory): Provide implementation for older
 +      Emacsen.
 +      (tramp-compat-file-attributes): Handle only
 +      `wrong-number-of-arguments' error.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 +      Add PRESERVE_SELINUX_CONTEXT.
 +      (tramp-fish-handle-delete-file): Add TRASH arg.
 +      (tramp-fish-handle-directory-files-and-attributes):
 +      Do not use `tramp-fish-handle-file-attributes.
 +      (tramp-fish-handle-file-local-copy)
 +      (tramp-fish-handle-insert-file-contents)
 +      (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
 +
 +      * net/tramp-gvfs.el (top): Require url-util.
 +      (tramp-gvfs-mount-point): Remove.
 +      (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
 +      and `set-file-selinux-context'.
 +      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
 +      (tramp-gvfs-handle-file-selinux-context)
 +      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 +      (with-tramp-dbus-call-method): Format trace message.
 +      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
 +      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 +      Implement backup call, when operation on local files fails.
 +      Use progress reporter.  Flush properties of changed files.
 +      (tramp-gvfs-handle-delete-file): Add TRASH arg.
 +      Use `tramp-compat-delete-file'.
 +      (tramp-gvfs-handle-expand-file-name): Expand "~/".
 +      (tramp-gvfs-handle-make-directory): Make more traces.
 +      (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
 +      (tramp-gvfs-url-file-name): Hexify file name in url.
 +      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 +      into account for the resulting file name.
 +      (tramp-gvfs-handler-askquestion): Preserve current message, in
 +      order to let progress reporter continue afterwards.  (Bug#6257)
 +      Return dummy mountpoint, when the answer is "no".
 +      See `tramp-gvfs-maybe-open-connection'.
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 +      attribute "default_location".  Set "prefix" property.
 +      Handle default-location.
 +      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 +      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 +      exists.  Raise an error, if not (due to a corresponding answer
 +      "no" in interactive questions, for example).
 +      Use `tramp-compat-funcall'.
 +
 +      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 +      (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-imap-do-copy-or-rename-file)
 +      (tramp-imap-handle-insert-file-contents)
 +      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 +      (tramp-imap-handle-delete-file): Add TRASH arg.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 +      Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 +      Use `with-progress-reporter'.
 +      (tramp-smb-handle-delete-file): Add TRASH arg.
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      ssh `tramp-login-args'.  Add `tramp-async-args' attribute where
 +      appropriate.
 +      (tramp-verbose): Describe verbose level 9.
 +      (tramp-completion-function-alist)
 +      (tramp-file-name-regexp, tramp-chunksize)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands)
 +      (with-connection-property, tramp-completion-mode-p)
 +      (tramp-action-process-alive, tramp-action-out-of-band)
 +      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 +      (tramp-exists-file-name-handler): Fix docstring.
 +      (tramp-remote-process-environment): Use `format' instead of
 +      `concat'.  Protect version string by apostroph.
 +      (tramp-shell-prompt-pattern): Do not use a shy group in case of
 +      XEmacs.
 +      (tramp-file-name-regexp-unified)
 +      (tramp-completion-file-name-regexp-unified): On W32 systems, do
 +      not regard the volume letter as remote filename.  (Bug#5447)
 +      (tramp-perl-file-attributes)
 +      (tramp-perl-directory-files-and-attributes): Don't pass "$3".
 +      (tramp-vc-registered-read-file-names): Read input as
 +      here-document, otherwise the command could exceed maximum length
 +      of command line.
 +      (tramp-file-name-handler-alist): Add `file-selinux-context' and
 +      `set-file-selinux-context'.
 +      (tramp-debug-message): Add `tramp-compat-funcall' to ignored
 +      backtrace functions.
 +      (tramp-error-with-buffer): Don't show the connection buffer when
 +      we are in completion mode.
 +      (tramp-progress-reporter-update, tramp-remote-selinux-p)
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
 +      (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
 +      New defuns.
 +      (with-progress-reporter): New defmacro.
 +      (tramp-debug-outline-regexp): New defconst.
 +      (top, tramp-rfn-eshadow-setup-minibuffer)
 +      (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
 +      (tramp-handle-dired-compress-file, tramp-handle-shell-command)
 +      (tramp-completion-mode-p, tramp-check-for-regexp)
 +      (tramp-open-connection-setup-interactive-shell)
 +      (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
 +      (tramp-time-diff, tramp-coding-system-change-eol-conversion)
 +      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
 +      Use `tramp-compat-funcall'.
 +      (tramp-handle-make-symbolic-link): Flush file properties.
 +      (tramp-handle-load, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-handle-vc-registered, tramp-maybe-send-script)
 +      (tramp-find-shell): Use `with-progress-reporter'.
 +      (tramp-do-file-attributes-with-stat): Add space in format string,
 +      in order to work around a bug in pdksh.  Reported by Gilles Pion
 +      <gpion@lfdj.com>.
 +      (tramp-handle-verify-visited-file-modtime): Do not send a command
 +      when the connection is not established.
 +      (tramp-handle-set-file-times): Simplify the check for utc.
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-get-remote-path): Use `copy-tree'.
 +      (tramp-completion-handle-file-name-all-completions): Ensure, that
 +      non remote files are still checked.  Oops.
 +      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 +      Handle PRESERVE-SELINUX-CONTEXT.
 +      (tramp-do-copy-or-rename-file): Add progress reporter.
 +      (tramp-do-copy-or-rename-file-directly): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-do-copy-or-rename-file-out-of-band):
 +      Use `tramp-compat-delete-directory'.
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 +      Use `format-spec-make'.
 +      (tramp-handle-delete-file): Add TRASH arg.
 +      (tramp-handle-dired-uncache): Flush directory cache, not only file
 +      cache.
 +      (tramp-handle-expand-file-name)
 +      (tramp-completion-handle-file-name-all-completions)
 +      (tramp-completion-handle-file-name-completion):
 +      Use `tramp-connectable-p'.
 +      (tramp-handle-start-file-process): Set connection property "vec".
 +      Use it, in order to invalidate file caches.  Check only for
 +      `remote-tty' process property.
 +      Implement tty setting.  (Bug#4604, Bug#6360)
 +      (tramp-file-name-for-operation): Add `call-process-region' and
 +      `set-file-selinux-context'.
 +      (tramp-find-foreign-file-name-handler)
 +      (tramp-advice-make-auto-save-file-name)
 +      (tramp-set-auto-save-file-modes): Remove superfluous check for
 +      `stringp'.  This is done inside `tramp-tramp-file-p'.
 +      (tramp-file-name-handler): Trace 'quit.  Catch the error for some
 +      operations when we are in completion mode.  This gives the user
 +      the chance to correct the file name in the minibuffer.
 +      (tramp-completion-mode-p): Use `non-essential'.
 +      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 +      compatibility: Use `completion-ignore-case' if
 +      `read-file-name-completion-ignore-case' does not exist.
 +      (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
 +      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 +      `tramp-open-shell'.
 +      (tramp-action-password): Hide password prompt before next run.
 +      (tramp-process-actions): Widen connection buffer for the trace.
 +      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 +      process property.  Trace stty settings if `tramp-verbose' >= 9.
 +      Apply workaround for IRIX64 bug.  Move argument of last
 +      `tramp-send-command' where it belongs to.
 +      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 +      front of `login-args'.
 +      (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
 +      on "/dev/null" instead of "/".
 +      (tramp-get-ls-command-with-dired): Make test for "--dired"
 +      stronger.
 +      (tramp-set-auto-save-file-modes): Adapt version check.
 +      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 +      (tramp-handle-process-file): Call the program in a subshell, in
 +      order to preserve working directory.
 +      (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
 +      `tramp-remote-sh' from `tramp-methods'.
 +      (tramp-get-ls-command): Make test for "--color=never" stronger.
 +      (tramp-check-for-regexp): Use (forward-line 1).
 +
 +      * net/trampver.el: Update release number.
 +
 +2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * help.el (help-map): Bind `C-h P' to describe-package.
 +
 +      * menu-bar.el (menu-bar-describe-menu): Add describe-package.
 +
 +      * emacs-lisp/package.el (package-refresh-contents): Catch errors
 +      when downloading archives.
 +      (describe-package-1): Add package commentary.
 +      (package-install-button-action): New function.
 +      (package-menu-mode-map): Bind ? to package-menu-describe-package.
 +      (package-menu-view-commentary): Function removed.
 +      (package-list-packages-internal): Hide the `package' package too.
 +
 +2010-08-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/misc-lang.el ("Arabic"): New language environment.
 +      Setup composition-function-table for Arabic characters.
 +
 +      * international/fontset.el (setup-default-fontset): Fix typo for
 +      arabic OTF spec (fini->fina).
 +
 +2010-08-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): Set frame parameter
 +      on all frames.
 +
 +2010-08-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Allow cleaning up blanks without blank
 +      visualization (Bug#6651).  Adjust help window for
 +      whitespace-toggle-options (Bug#6479).  Allow to use fill-column
 +      instead of whitespace-line-column (from EmacsWiki).  New version
 +      13.1.
 +      (whitespace-style): Add new value 'face.  Adjust docstring.
 +      (whitespace-space, whitespace-hspace, whitespace-tab):
 +      Adjust foreground property face.
 +      (whitespace-line-column): Adjust docstring and type declaration.
 +      (whitespace-style-value-list, whitespace-toggle-option-alist)
 +      (whitespace-help-text): Adjust const initialization.
 +      (whitespace-toggle-options, global-whitespace-toggle-options):
 +      Adjust docstring.
 +      (whitespace-display-window, whitespace-interactive-char)
 +      (whitespace-style-face-p, whitespace-color-on): Adjust code.
 +      (whitespace-help-scroll): New fun.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (list-packages): Alias for
 +      package-list-packages.
 +
 +2010-08-24  Kevin Ryde  <user42@zip.com.au>
 +
 +      * textmodes/flyspell.el (flyspell-check-tex-math-command): Doc fix
 +      (Bug#5651).
 +
 +      * progmodes/ruby-mode.el (ruby): Add defgroup.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/python.el: Add Ipython support (Bug#5390).
 +      (python-shell-prompt-alist)
 +      (python-shell-continuation-prompt-alist): New options.
 +      (python--set-prompt-regexp): New function.
 +      (inferior-python-mode, run-python, python-shell):
 +      Require ansi-color.  Use python--set-prompt-regexp to set the comint
 +      prompt based on the Python interpreter.
 +      (python--prompt-regexp): New var.
 +      (python-check-comint-prompt)
 +      (python-comint-output-filter-function): Use it.
 +      (run-python): Use a pipe (Bug#5694).
 +
 +2010-08-24  Fabian Ezequiel Gallina  <galli.87@gmail.com>  (tiny change)
 +
 +      * progmodes/python.el (python-send-region): Send a different
 +      Python command if Ipython is in use.
 +      (python-check-version): Use a Python command to find the version.
 +
 +2010-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-yank-primary): Avoid setting primary when
 +      deactivating the mark (Bug#6872).
 +
 +2010-08-23  Chris Foote  <chris@foote.com.au>  (tiny change)
 +
 +      * progmodes/python.el (python-block-pairs): Allow use of "finally"
 +      with "else" (Bug#3991).
 +
 +2010-08-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el: Accept UNIX domain sockets as bus address.
 +      (top): Don't initialize `dbus-registered-objects-table' anymore,
 +      this is done in dbusbind,c.
 +      (dbus-check-event): Adapt test for bus.
 +      (dbus-return-values-table, dbus-unregister-service)
 +      (dbus-event-bus-name, dbus-introspect, dbus-register-property):
 +      Adapt doc string.
 +
 +2010-08-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * ido.el (ido-use-virtual-buffers): Fix typo in docstring.
 +
 +2010-08-22  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (read-extended-command): New function with the logic
 +      for `completing-read' moved to Elisp from `execute-extended-command'.
 +      Use `function-called-at-point' in `minibuffer-default-add-function'
 +      to get a command name for M-n (bug#5364, bug#5214).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line-1): Issue warning for ignored arguments
 +      --unibyte, etc (Bug#6886).
 +
 +2010-08-22  Leo  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-add-or-remove): Accept a list of elements.
 +      (ignore, bright, dim, keyword): Split list of nicknames before
 +      passing to rcirc-add-or-remove (Bug#6894).
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix (Bug#6880).
 +
 +2010-08-22  Leo  <sdl.web@gmail.com>
 +
 +      Fix buffer-list rename&refresh after killing a buffer in ido.
 +      * ido.el: Revert Óscar's.
 +      (ido-kill-buffer-at-head): Exit the minibuffer with ido-exit=refresh.
 +      Remember the buffers at head, rather than their name.
 +      * iswitchb.el (iswitchb-kill-buffer): Re-make the list.
 +
 +2010-08-22  Kirk Kelsey  <kirk.kelsey@0x4b.net>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
 +      extra backslash added to each line (bug#6890).
 +
 +2010-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (read-key): Don't echo keystrokes (bug#6883).
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * menu-bar.el (menu-bar-games-menu): Add landmark.
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * align.el (align-regexp): Make group and spacing arguments
 +      use the interactive defaults when non-interactive.  (Bug#6698)
 +
 +      * mail/rmail.el (rmail-forward): Replace mail-text-start with its
 +      expansion, so as not to need sendmail.
 +      (mail-text-start): Remove declaration.
 +      (rmail-retry-failure): Require sendmail.
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el (read-key): Don't hide the menu-bar entries (bug#6881).
 +
 +2010-08-22  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * progmodes/flymake.el (flymake-start-syntax-check-process):
 +      Use `start-file-process' in order to let it run also on remote hosts.
 +
 +2010-08-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * files.el: Add `word-wrap' as safe local variable.
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * woman.el (woman-translate): Case matters.  (Bug#6849)
 +
 +2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (kill-region): Doc fix (Bug#6787).
 +
 +2010-08-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-header-line-format):
 +      Fit it to the window, not the frame.
 +
 +2010-08-22  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * subr.el (ignore-errors): Add debug declaration.
 +
 +2010-08-22  Geoff Gole  <geoffgole@gmail.com>  (tiny change)
 +
 +      * whitespace.el (whitespace-color-off): Remove post-command-hook
 +      locally.
 +
 +2010-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/add-log.el (add-log-file-name): Don't get confused by symlinks.
 +
 +2010-08-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (custom-group-value-create): Add extra newline
 +      before end line (Bug#6876).
 +
 +2010-08-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-save-then-kill): Don't save region to kill ring
 +      when extending it.  Before killing on the second click, check if
 +      the buffer is the correct one.  Doc fix.
 +      (mouse-secondary-save-then-kill): Allow usage without first
 +      calling mouse-start-secondary, by defaulting to point.  Don't save
 +      an empty secondary selection.  Doc fix.
 +
 +2010-08-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * whitespace.el: Fix slow cursor movement (Bug#6172).  Reported by
 +      Christoph Groth <cwg@falma.de> and Liu Xin <x_liu@neusoft.com>.
 +      New version 13.0.
 +      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp):
 +      Adjust initialization.
 +      (whitespace-bob-marker, whitespace-eob-marker)
 +      (whitespace-buffer-changed): New vars.
 +      (whitespace-cleanup, whitespace-color-on, whitespace-color-off)
 +      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp)
 +      (whitespace-post-command-hook, whitespace-display-char-on):
 +      Adjust code.
 +      (whitespace-looking-back, whitespace-buffer-changed): New funs.
 +      (whitespace-space-regexp, whitespace-tab-regexp): Fun eliminated.
 +
 +2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (locate-file-completion-table): Only list the .el and .elc
 +      extensions if there's no other choice (bug#5955).
 +
 +      * facemenu.el (facemenu-self-insert-data): New var.
 +      (facemenu-post-self-insert-function, facemenu-set-self-insert-face):
 +      New functions.
 +      (facemenu-add-face): Use them.
 +
 +      * simple.el (blink-matching-open): Obey forward-sexp-function.
 +
 +2010-08-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (prog-mode-map): New var.
 +      (prog-indent-sexp): New command.
 +
 +      * progmodes/octave-mod.el (octave-mode-menu): Make toggle buttons.
 +
 +      * progmodes/prolog.el (smie): Require.
 +
 +      * emacs-lisp/smie.el (smie-default-backward-token)
 +      (smie-default-forward-token): Strip properties.
 +      (smie-next-sexp): Be more careful with associative operators.
 +      (smie-forward-sexp-command): Generalize.
 +      (smie-backward-sexp-command): Simplify.
 +      (smie-closer-alist): New var.
 +      (smie-close-block): New command.
 +      (smie-indent-debug-log): New var.
 +      (smie-indent-offset-rule): Add a few more cases.
 +      (smie-indent-column): New function.
 +      (smie-indent-after-keyword): Use it.
 +      (smie-indent-keyword): Use it.
 +      Fix up the opener code's point position.
 +      (smie-indent-comment): Only applies at BOL.
 +      (smie-indent-debug): New command.
 +
 +      * emacs-lisp/autoload.el (make-autoload): Preload the macros's
 +      declarations that are useful before running the macro.
 +
 +2010-08-18  Joakim Verona  <joakim@verona.se>
 +
 +      * image.el (imagemagick-types-inhibit): New variable.
 +      (imagemagick-register-types): New function.
 +      * image-mode.el (image-transform-properties): New function.
 +      (image-transform-set-scale, image-transform-fit-to-height)
 +      (image-transform-set-rotation, image-transform-set-resize)
 +      (image-transform-fit-to-width, image-transform-fit-to-height):
 +      New functions.
 +      (image-toggle-display-image): Support image transforms.
 +
 +2010-08-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * image.el (create-animated-image): Don't add heuristic mask to image
 +      (Bug#6839).
 +
 +2010-08-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard):
 +      Use QCLIPBOARD instead of QPRIMARY (Bug#6677).
 +
 +2010-08-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/lisp.el (up-list): Obey forward-sexp-function if set.
 +
 +      Font-lock '...' strings, plus various simplifications and fixes.
 +      * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt.
 +      (octave-font-lock-close-quotes): New function.
 +      (octave-font-lock-syntactic-keywords): New var.
 +      (octave-mode): Use it.  Set beginning-of-defun-function.
 +      (octave-mode-map): Don't override the <foo>-defun commands.
 +      (octave-mode-menu): Pass it directly to easy-menu-define;
 +      remove (now generic) <foo>-defun commands; use info-lookup-symbol.
 +      (octave-block-match-alist): Fix up last change so that
 +      octave-close-block uses the more specific keyword.
 +      (info-lookup-mode): Silence byte-compiler.
 +      (octave-beginning-of-defun): Not interactive any more.
 +      Optimize slightly.
 +      (octave-end-of-defun, octave-mark-defun, octave-in-defun-p): Remove.
 +      (octave-indent-defun, octave-send-defun): Use mark-defun instead.
 +      (octave-completion-at-point-function): Make sure point is within
 +      beg..end.
 +      (octave-reindent-then-newline-and-indent):
 +      Use reindent-then-newline-and-indent.
 +      (octave-add-octave-menu): Remove.
 +
 +2010-08-17  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * mail/emacsbug.el (report-emacs-bug-insert-to-mailer)
 +      (report-emacs-bug-can-use-xdg-email): New functions.
 +      (report-emacs-bug): Set can-xdg-email to result of
 +      report-emacs-bug-can-use-xdg-email.  If can-xdg-email bind
 +      \C-cm to report-emacs-bug-insert-to-mailer and add help text
 +      about it.
 +
 +      * net/browse-url.el (browse-url-default-browser): Add cond
 +      for browse-url-xdg-open.
 +      (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions.
 +
 +2010-08-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/cc-engine.el (c-new-BEG, c-new-END)
 +      (c-fontify-recorded-types-and-refs): Define for compiler.
 +      * progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions
 +      before use.
 +
 +      * calendar/icalendar.el (icalendar--convert-recurring-to-diary):
 +      Fix format call.
 +
 +2010-08-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-make-symbolic-link): Flush file
 +      properties.
 +      (tramp-handle-process-file): Call the program in a subshell, in
 +      order to preserve working directory.
 +      (tramp-action-password): Hide password prompt before next run.
 +      (tramp-process-actions): Widen connection buffer for the trace.
 +
 +2010-08-16  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el (rcirc-log-process-buffers): New option.
 +      (rcirc-print): Use it.
 +      (rcirc-generate-log-filename): New function.
 +      (rcirc-log-filename-function): Change default to
 +      rcirc-generate-log-filename (Bug#6828).
 +
 +2010-08-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (deactivate-mark): If select-active-regions is `only',
 +      only set selection for temporarily active regions.
 +
 +      * cus-start.el: Change defcustom for select-active-regions.
 +
 +2010-08-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse--drag-set-mark-and-point): New function.
 +      (mouse-drag-track): Use LOCATION arg to push-mark.
 +      Use mouse--drag-set-mark-and-point to take click-count into
 +      consideration when updating point and mark (Bug#6840).
 +
 +2010-08-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Give the Ruby rule a lower priority than Gnu (Bug#6778).
 +
 +2010-08-14  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +
 +      * font-lock.el (lisp-font-lock-keywords-2):
 +      Add combine-after-change-calls, condition-case-no-debug,
 +      with-demoted-errors, and with-silent-modifications (Bug#6025).
 +
 +2010-08-14  Kevin Ryde  <user42@zip.com.au>
 +
 +      * emacs-lisp/copyright.el (copyright-update-year)
 +      (copyright-update): Temporary switch-to-buffer to ensure the
 +      buffer change being queried is visible (Bug#5394).
 +
 +2010-08-14  Tom Tromey  <tromey@redhat.com>
 +
 +      * progmodes/etags.el (tags-file-name): Mark safe if stringp
 +      (Bug#6733).
 +
 +2010-08-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mouse.el (mouse-yank-primary): Fix mouse-2 on MS-Windows and
 +      MS-DOS.  (Bug#6689)
 +
 +2010-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-set-tool-bar-position): New function.
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-left)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-right)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-top)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-bottom):
 +      Call menu-bar-set-tool-bar-position.
 +
 +2010-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave-mod.el (octave-mode-syntax-table): Use the new "c"
 +      comment style (bug#6834).
 +      * progmodes/scheme.el (scheme-mode-syntax-table):
 +      * emacs-lisp/lisp-mode.el (lisp-mode-syntax-table): Remove spurious
 +      "b" flag in "' 14b" syntax.
 +
 +      * progmodes/octave-mod.el (octave-mode-map): Remove special bindings
 +      for (un)commenting the region and performing completion.
 +      (octave-mode-menu): Use standard commands for help and completion.
 +      (octave-mode-syntax-table): Support %{..%} comments (sort of).
 +      (octave-mode): Use define-derived-mode.
 +      Set completion-at-point-functions and don't set columns.
 +      Don't disable adaptive-fill-regexp.
 +      (octave-describe-major-mode, octave-comment-region)
 +      (octave-uncomment-region, octave-comment-indent)
 +      (octave-indent-for-comment): Remove.
 +      (octave-indent-calculate): Rename from calculate-octave-indent.
 +      (octave-indent-line, octave-fill-paragraph): Update caller.
 +      (octave-initialize-completions): No need to make an alist.
 +      (octave-completion-at-point-function): New function.
 +      (octave-complete-symbol): Use it.
 +      (octave-insert-defun): Use define-skeleton.
 +
 +      * progmodes/octave-mod.el (octave-mode): Set comment-add.
 +      (octave-mode-map): Use comment-dwim (bug#6829).
 +
 +2010-08-12  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
 +
 +      * cus-edit.el (custom-save-variables, custom-save-faces): Fix up
 +      indentation of inserted comment.
 +
 +2010-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * faces.el (region): Add type gtk that uses gtk colors.
 +
 +      * dynamic-setting.el (dynamic-setting-handle-config-changed-event):
 +      Handle theme-name change.
 +
 +2010-08-10  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.5
 +      (sql-product-alist): Add :prompt-cont-regexp property for several
 +      database products.
 +      (sql-prompt-cont-regexp): New variable.
 +      (sql-output-newline-count, sql-output-by-send):
 +      New variables.  Record number of newlines in input text.
 +      (sql-send-string): Handle multiple filters and count newlines.
 +      (sql-send-magic-terminator): Count terminator newline.
 +      (sql-interactive-remove-continuation-prompt): Filters output to
 +      remove continuation prompts; one for each newline.
 +      (sql-interactive-mode): Set up new variables, prompt regexp and
 +      output filter.
 +      (sql-mode-sqlite-font-lock-keywords): Correct some keywords.
 +      (sql-make-alternate-buffer-name): Correct buffer name in edge cases.
 +
 +2010-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el: New file.
 +
 +2010-08-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-vc-registered-read-file-names): Read input
 +      as here-document, otherwise the command could exceed maximum
 +      length of command line.
 +      (tramp-handle-vc-registered): Call script accordingly.
 +      Reported by Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>.
 +
 +2010-08-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Exclude U+05C3 (Hebrew SOF PASUQ) from the
 +      composable pattern.
 +
 +2010-08-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-version-split)
 +      (package--version-first-nonzero, package-version-compare):
 +      Functions removed.
 +      (package-directory-list, package-load-all-descriptors)
 +      (package--built-in, package-activate, define-package)
 +      (package-installed-p, package-compute-transaction)
 +      (package-read-all-archive-contents)
 +      (package--add-to-archive-contents, package-buffer-info)
 +      (package-tar-file-info, package-list-packages-internal):
 +      Use version-to-list and version-list-*.
 +
 +      * emacs-lisp/package-x.el (package-upload-buffer-internal):
 +      Use version-to-list.
 +      (package-upload-buffer-internal): Use version-list-<=.
 +
 +2010-08-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Exclude U+05BD (Hebrew MAQAF) from the
 +      composable pattern.
 +
 +2010-08-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * tutorial.el (tutorial--default-keys): C-d is now bound to
 +      delete-forward-char (Bug#6826).
 +
 +      * mouse.el (mouse-drag-track): Remove accidentally-removed check
 +      for `double' value of mouse-1-click-follows-link (Bug#6807).
 +
 +2010-08-08  Johan Bockgård  <bojohan@gnu.org>
 +
 +      * replace.el (replace-highlight): Bind isearch-forward and
 +      isearch-error, ensuring that highlighting is updated if the user
 +      switches the search direction (Bug#6808).
 +
 +      * isearch.el (isearch-lazy-highlight-forward): New var.
 +      (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search):
 +      (isearch-lazy-highlight-update): Use it.
 +
 +2010-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/mule.el (define-charset): Store NAME as :base property.
 +      (ctext-non-standard-encodings-table): Pay attention to charset aliases.
 +      (ctext-pre-write-conversion): Sort ctext-standard-encodings by the
 +      current priority.  Force using the designation of the specific
 +      charset by adding `charset' text property.  Improve the whole algorithm.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/pc-select.el (pc-selection-mode-hook)
 +      (copy-region-as-kill-nomark, beginning-of-buffer-mark)
 +      (pc-selection-mode): Fix typos in docstrings.
 +
 +2010-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/cyrillic.el: Don't add "microsoft-cp1251" to
 +      ctext-non-standard-encodings-alist here.
 +
 +      * international/mule.el (ctext-non-standard-encodings-alist):
 +      Add "koi8-r" and "microsoft-cp1251".
 +      (ctext-standard-encodings): New variable.
 +      (ctext-non-standard-encodings-table): List only elements for
 +      non-standard encodings.
 +      (ctext-pre-write-conversion): Adjust for the above change.
 +      Check ctext-standard-encodings.
 +
 +      * international/mule-conf.el (compound-text): Doc fix.
 +      (ctext-no-compositions): Doc fix.
 +      (compound-text-with-extensions): Doc fix.
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (exchange-dot-and-mark): Mark obsolete, finally.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/which-func.el (which-func-format): Split help-echo text
 +      into lines, like other mode-line tooltips.
 +
 +      * server.el (server-start): When using TCP sockets, force IPv4
 +      and use a literal 127.0.0.1 for localhost.  (Related to bug#6781.)
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * bindings.el (complete-symbol): Run completion-at-point as a fallback.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * term.el (term-delimiter-argument-list): Reflow docstring.
 +      (term-read-input-ring, term-write-input-ring, term-send-input)
 +      (term-bol, term-erase-in-display, serial-supported-or-barf):
 +      Fix typos in docstrings.
 +
 +2010-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * bindings.el (function-key-map): Add a S-tab => backtab fallback.
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dabbrev.el (dabbrev-completion): Fix typo in docstring.
 +
 +2010-08-08  MON KEY  <monkey@sandpframing.com>  (tiny change)
 +
 +      * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos):
 +      Fix typo in docstring (bug#6747).
 +
 +2010-08-08  Leo  <sdl.web@gmail.com>
 +
 +      * eshell/esh-io.el (eshell-get-target): Better detection of
 +      read-only file (Bug#6762).
 +
 +2010-08-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * align.el (align-default-spacing): Doc fix.
 +      (align-region-heuristic, align-regexp): Fix typos in docstrings.
 +
 +2010-08-08  Stephen Peters  <speters@itasoftware.com>
 +
 +      * calendar/icalendar.el
 +      (icalendar--split-value): Fix splitting regexp.  (Bug#6766)
 +      (icalendar--get-weekday-numbers): New.
 +      (icalendar--convert-recurring-to-diary): Handle multiple byday
 +      values in weekly rules.  (Bug#6766)
 +
 +2010-08-08  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar/icalendar.el (icalendar-uid-format): Doc fix.
 +      (icalendar--create-uid, icalendar-export-region)
 +      (icalendar--parse-summary-and-rest): Code formatting.
 +
 +2010-08-08  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc.el (calc-trail-mode,calc-refresh): Use `face' property
 +      to italicize headers.
 +      (calc-highlight-selections-with-faces): New variable.
 +      (calc-selected-face, calc-nonselected-face): New faces.
 +
 +      * calc/calccomp.el (math-comp-highlight-string): Use
 +      `calc-highlight-selections-with-faces' to determine how to highlight
 +      sub-formulas.
 +
 +      * calc/calc-sel.el (calc-show-selections): Change message to when
 +      using faces to highlight selections.
 +
 +2010-08-07  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el (sql-mode-sqlite-font-lock-keywords):
 +      Add SQLite 3 keywords, functions and datatypes.
 +      (sql-interactive-mode): Remove `comint-process-echoes' set to t
 +      (Bug#6686).
 +
 +2010-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (select-active-regions): Move to keyboard.c.
 +      (deactivate-mark): Used saved-region-selection.
 +      (select-active-region): Function removed.
 +      (activate-mark, set-mark, push-mark-command)
 +      (handle-shift-selection): Don't call it.
 +      (keyboard-quit): Avoid adding the region to the window selection.
 +
 +      * mouse.el (mouse-drag-track): Remove hacks to deal with old
 +      select-active-regions implementation.
 +      (mouse-yank-at-click): Doc fix.
 +
 +      * cus-start.el: Add custom declaration for select-active-regions.
 +
 +2010-08-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (delete-forward-char): Doc fix.
 +
 +      * tutorial.el (help-with-tutorial): Hack safe file-local variables
 +      after reading the tutorial.
 +
 +2010-08-06  Alan Mackenzie  <bug-cc-mode@gnu.org>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph, c-fill-paragraph):
 +      Fix for the case that a C style comment has its delimiters alone on
 +      their respective lines.
 +
 +2010-08-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-start-file-process): Set connection
 +      property "vec".
 +      (tramp-process-sentinel): Use it for flushing the cache.
 +      We cannot do it via the process buffer, the buffer could be deleted
 +      already when running the sentinel.
 +
 +2010-08-06  Jürgen Hötzel  <juergen@archlinux.org>  (tiny change)
 +
 +      * comint.el (comint-mode): Make directory tracking functions
 +      functional on remote files.  (Bug#6764)
 +
 +2010-08-06  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc/diff-mode.el (diff-mode-shared-map): Bind g to revert-buffer.
 +
 +2010-08-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs-lisp/find-gc.el (find-gc-source-files):
 +      Rename unexec.c => unexcoff.c.
 +
 +      * emacs-lisp/authors.el (authors-fixed-entries):
 +      Rename unexec.c => unexcoff.c.
 +
 +2010-08-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-dired-uncache): Flush directory
 +      cache, not only file cache.
 +      (tramp-process-sentinel): New defun.
 +      (tramp-handle-start-file-process): Use it, in order to invalidate
 +      file caches.
 +
 +2010-08-03  Leo  <sdl.web@gmail.com>
 +
 +      * server.el (server-start): Simplify loop.
 +
 +2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.el (screen-height, screen-width, set-screen-width)
 +      (set-screen-height): Remove ancient compatibility aliases.
 +
 +      * textmodes/fill.el (justify-current-line): Don't add 1 to nspaces
 +      when justifying.  It seems useless and harmful for ncols=1 (bug#6738).
 +
 +      * emacs-lisp/timer.el (timer-event-handler): Protect against timers
 +      that change current buffer.
 +
 +2010-08-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * mouse.el (mouse-fixup-help-message): Match "mouse-2" only at the
 +      beginning of the string.  Use `string-match-p'.  (Bug#6765)
 +
 +2010-08-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (x-gtk-use-system-tooltips): New variable.
 +
 +2010-08-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package--list-packages): Fix column alignment.
 +      (package--builtins): Tweak descriptions.
 +      (package-print-package): Upcase descriptions if necessary.
 +      Show all built-in packages in font-lock-builtin-face.
 +      (package-list-packages-internal): Omit "emacs" package.
 +      Show status of built-in packages as "built-in".
 +
 +2010-07-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-save-then-kill): Doc fix.  Deactivate mark
 +      before killing to preserve the primary selection (Bug#6701).
 +
 +      * term/x-win.el (x-select-text): Doc fix.
 +
 +2010-07-31  Nathaniel Flath  <flat0103@gmail.com>
 +
 +      * progmodes/cc-vars.el (c-offsets-alist, c-inside-block-syms)
 +      (objc-font-lock-extra-types):
 +      * progmodes/cc-mode.el (c-basic-common-init):
 +      * progmodes/cc-langs.el (c-make-mode-syntax-table)
 +      (c++-make-template-syntax-table)
 +      (c-identifier-syntax-modifications, c-symbol-start, c-operators)
 +      (c-<-op-cont-regexp, c->-op-cont-regexp, c-class-decl-kwds)
 +      (c-brace-list-decl-kwds, c-modifier-kwds, c-prefix-spec-kwds-re)
 +      (c-type-list-kwds, c-decl-prefix-re, c-opt-type-suffix-key):
 +      * progmodes/cc-fonts.el (c-make-inverse-face)
 +      (c-basic-matchers-after):
 +      * progmodes/cc-engine.el (c-forward-keyword-clause)
 +      (c-forward-<>-arglist, c-forward-<>-arglist-recur)
 +      (c-forward-name, c-forward-type, c-forward-decl-or-cast-1)
 +      (c-guess-continued-construct, c-guess-basic-syntax):
 +      Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
 +      The above functions were modified or created.
 +
 +2010-07-31  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * faces.el (face-all-attributes): Improve documentation (Bug#6767).
 +
 +2010-07-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (bidi-paragraph-direction): Define safe local values.
 +
 +      * language/hebrew.el ("Hebrew"): Add TUTORIAL.he to
 +      language-info-alist.  Remove outdated FIXME in a comment.
 +
 +2010-07-31  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-mask-paragraph): Fix bug #6688:
 +      Auto-fill broken in C/C++ modes.
 +
 +2010-07-29  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * menu-bar.el (menu-bar-showhide-tool-bar-menu-customize-enable-left)
 +      (menu-bar-showhide-tool-bar-menu-customize-disable)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-right)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-bottom)
 +      (menu-bar-showhide-tool-bar-menu-customize-enable-top): New functions
 +      (menu-bar-showhide-tool-bar-menu): If tool bar is moveable,
 +      make a menu for Options => toolbar that can move it.
 +
 +2010-07-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package-x.el (package--make-rss-entry):
 +      (package-maint-add-news-item, package--update-news)
 +      (package-upload-buffer-internal): New arg ARCHIVE-URL.
 +
 +      * emacs-lisp/package.el (package-archive-url): Rename from
 +      package-archive-id.
 +      (package-install): Doc fix.
 +      (package-download-single, package-download-tar, package-install)
 +      (package-menu-view-commentary): Callers changed.
 +
 +2010-07-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-start-file-process): Check only for
 +      `remote-tty' process property.
 +      (tramp-open-shell): Don't check for tty.
 +      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 +      process property.
 +
 +      * progmodes/gdb-mi.el (gdb-init-1): Check also for tty on a remote
 +      host.
 +
 +2010-07-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-load-list, package-archives)
 +      (package-archive-contents, package-user-dir)
 +      (package-directory-list, package--builtins, package-alist)
 +      (package-activated-list, package-obsolete-alist): Mark as risky.
 +
 +2010-07-28  Phil Hagelberg  <phil@evri.com>
 +
 +      Add support for non-default package repositories.
 +      * emacs-lisp/package.el (package-archive-base): Var deleted.
 +      (package-archives): New variable.
 +      (package-archive-contents): Doc fix.
 +      (package-load-descriptor): Do nothing if descriptor file is missing.
 +      (package--write-file-no-coding): New function.
 +      (package-unpack-single): Use it.
 +      (package-archive-id): New function.
 +      (package-download-single, package-download-tar)
 +      (package-menu-view-commentary): Use it.
 +      (package-installed-p): Make second argument optional.
 +      (package-read-all-archive-contents): New function.
 +      (package-initialize): Use it.
 +      (package-read-archive-contents): Add ARCHIVE argument.
 +      (package--add-to-archive-contents): New function.
 +      (package-install): Don't call package-read-archive-contents.
 +      (package--download-one-archive): Store archive file in a
 +      subdirectory of package-user-dir.
 +      (package-menu-execute): Remove spurious line movement.
 +
 +2010-07-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (tool-bar-style): Add text-image-horiz.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * progmodes/gud.el (gud-common-init): Check for remoteness of
 +      `file', and not of `default-directory'.
 +
 +2010-07-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      ssh `tramp-login-args'.
 +      (tramp-verbose): Describe verbose level 9.
 +      (tramp-open-shell): Check for tty if `tramp-verbose' >= 9.
 +      (tramp-open-connection-setup-interactive-shell): Trace stty
 +      settings if `tramp-verbose' >= 9.
 +      (tramp-handle-start-file-process): Implement tty setting.
 +      (Bug#4604, Bug#6360)
 +
 +      * net/tramp-cmds.el (tramp-bug): Recommend setting of
 +      `tramp-verbose' to 9.
 +
 +2010-07-27  Aaron S. Hawley  <ashawley@burlingtontelecom.net>
 +
 +      * emacs-lisp/re-builder.el (reb-re-syntax, reb-lisp-mode)
 +      (reb-lisp-syntax-p, reb-change-syntax, reb-cook-regexp):
 +      Remove references to package `lisp-re' (bug#4369).
 +
 +2010-07-27  Tom Tromey  <tromey@redhat.com>
 +
 +      * progmodes/js.el (js-mode):
 +      * progmodes/make-mode.el (makefile-mode):
 +      * progmodes/simula.el (simula-mode):
 +      * progmodes/tcl.el (tcl-mode): Derive from prog-mode.
 +
 +2010-07-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 +
 +      * time.el (display-time-day-and-date): Remove spurious * in docstring.
 +      (display-time-world-buffer-name, display-time-world-mode-map):
 +      Fix typos in docstrings.
 +
 +2010-07-27  Shyam Karanatt  <shyam@swathanthran.in>  (tiny change)
 +
 +      * image-mode.el (image-display-size): New function.
 +      (image-forward-hscroll, image-next-line, image-eol, image-eob)
 +      (image-mode-fit-frame): Use it (Bug#6639).
 +
 +2010-07-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-buffers-for-dir): Handle list values of
 +      dired-directory (Bug#6636).
 +
 +2010-07-26  Sam Steingold  <sds@gnu.org>
 +
 +      * mouse.el (mouse-yank-primary, mouse-yank-secondary):
 +      Do not call `x-get-selection' the second time, reuse the value.
 +
 +2010-07-26  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-mail.el (epa-mail-mode-map): Add alternative key bindings
 +      which consist of control chars only.  Suggested by Richard Stallman.
 +
 +2010-07-25  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents): Check if LOCAL-FILE
 +      exists before passing an error to find-file-not-found-functions
 +      (bug#6723).
 +
 +2010-07-23  Lukas Huonker  <l.huonker@gmail.com>
 +
 +      * play/tetris.el (tetris-tty-colors, tetris-x-colors, tetris-blank):
 +      Remove leading nil element, adjust values.
 +      (tetris-shapes, tetris-shape-scores):
 +      Change representation of shapes and remove some redundancy.
 +      (tetris-get-shape-cell, tetris-shape-width, tetris-draw-next-shape)
 +      (tetris-draw-shape, tetris-erase-shape, tetris-test-shape):
 +      Adjust for working with new representation of shapes.
 +      (tetris-shape-rotations): New function.
 +      (tetris-move-bottom, tetris-move-left, tetris-move-right)
 +      (tetris-rotate-prev, tetris-rotate-next):
 +      Adjust for working with the new version of tetris-test-shape.
 +
 +2010-07-23  Markus Triska  <markus.triska@gmx.at>
 +
 +      * progmodes/ps-mode.el: Use comint (bug#5954).
 +      (ps-run-mode-map): Adapt for comint-mode; omit "\r", [return]..
 +      (ps-mode-other-newline): Simplify.
 +      (ps-run-mode): Derive from comint-mode instead of
 +      fundamental-mode, yielding input history etc.
 +      (ps-run-start, ps-run-quit, ps-run-clear, ps-run-region)
 +      (ps-run-send-string): Adapt for comint-mode.
 +      (ps-run-newline): Remove now unneeded function.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Move hostname to the end in all
 +      plink `tramp-login-args'.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-open-shell): New defun.
 +      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 +      Use it.
 +
 +2010-07-23  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-file-name-regexp-unified)
 +      (tramp-completion-file-name-regexp-unified): On W32 systems, do
        not regard the volume letter as remote filename.  (Bug#5447)
 -      (tramp-perl-file-attributes)
 +
 +2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * custom.el (custom-declare-variable): Give a clearer error message
 +      when the docstring is missing (bug#6476).
 +
 +2010-07-22  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.4.  Improved Login prompting.
 +      (sql-login-params): New widget definition.
 +      (sql-oracle-login-params, sql-mysql-login-params)
 +      (sql-solid-login-params, sql-sybase-login-params)
 +      (sql-informix-login-params, sql-ingres-login-params)
 +      (sql-ms-login-params, sql-postgres-login-params)
 +      (sql-interbase-login-params, sql-db2-login-params)
 +      (sql-linter-login-params): Use it.
 +      (sql-sqlite-login-params): Use it; Define "database" parameter as
 +      a file name.
 +      (sql-sqlite-program): Change to "sqlite3".
 +      (sql-comint-sqlite): Make sure database name is complete.
 +      (sql-for-each-login): New function.
 +      (sql-connect, sql-save-connection): Use it.
 +      (sql-get-login-ext): New function.
 +      (sql-get-login): Use it.
 +      (sql-make-alternate-buffer-name): Handle :file parameters.
 +
 +2010-07-22  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dired.el (dired-no-confirm): Document value t and fix defcustom to
 +      accept it (bug#6597).  Suggested by Drew Adams <drew.adams@oracle.com>.
 +
 +2010-07-22  Teemu Likonen  <tlikonen@iki.fi>  (tiny change)
 +
 +      * dired.el (dired-mode-map): Use command remapping (bug#6632).
 +
 +2010-07-22  Lawrence Mitchell  <wence@gmx.li>
 +
 +      * term/vt100.el (vt100-wide-mode): Fix :init-value keyword (bug#6620).
 +
 +2010-07-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-get-ls-command)
 +      (tramp-get-ls-command-with-dired): Run tests on "/dev/null"
 +      instead of "/".
 +
 +2010-07-20  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.3.
 +      (sql-connection-alist): Change keys from symbols to strings;
 +      enhanced the widget definition.
 +      (sql-mode-menu): Add submenu to select connections.
 +      (sql-interactive-mode-menu): Add "Save Connection" item.
 +      (sql-add-product): Fix menu item.
 +      (sql-get-product-feature): Improved error handling.
 +      (sql--alt-buffer-part, sql--alt-if-not-empty): Removed.
 +      (sql-make-alternate-buffer-name): Simplified.
 +      (sql-product-interactive): Handle missing product.
 +      (sql-connect): Support string keys, minor improvements.
 +      (sql-save-connection): New function.
 +      (sql-connection-menu-filter): New function.
 +
 +2010-07-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-file-name-handler): Trace 'quit.
 +      (tramp-open-connection-setup-interactive-shell):
 +      Apply workaround for IRIX64 bug.  Move argument of last
 +      `tramp-send-command' where it belongs to.
 +
 +2010-07-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-perl-file-attributes)
        (tramp-perl-directory-files-and-attributes): Don't pass "$3".
 -      (tramp-vc-registered-read-file-names): Read input as
 -      here-document, otherwise the command could exceed maximum length
 -      of command line.
 -      (tramp-file-name-handler-alist): Add `file-selinux-context' and
 -      `set-file-selinux-context'.
 -      (tramp-debug-message): Add `tramp-compat-funcall' to ignored
 -      backtrace functions.
 -      (tramp-error-with-buffer): Don't show the connection buffer when
 -      we are in completion mode.
 -      (tramp-progress-reporter-update, tramp-remote-selinux-p)
 -      (tramp-handle-file-selinux-context)
 -      (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
 -      (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
 +      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 +      front of `login-args'.
 +
 +2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * time.el (display-time-world-mode): Define with `define-derived-mode'.
 +      Set `show-trailing-whitespace' to nil.
 +      (display-time-world-display): Simplify.
 +
 +2010-07-18  Alan Mackenzie  <acm@muc.de>
 +
 +      Enhance `c-file-style' in file/directory local variables.
 +      * progmodes/cc-mode.el (c-count-cfss): New function.
 +      (c-before-hack-hook): Call `c-set-style' differently according to
 +      whether c-file-style was set in file or directory local
 +      variables.
 +
 +2010-07-18  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.2.
 +      (sql-product, sql-user, sql-database, sql-server, sql-port):
 +      Use defcustom :safe keyword rather than putting safe-local-variable
 +      property.
 +      (sql-password): Use defcustom :risky keyword rather than putting
 +      risky-local-variable property.
 +      (sql-oracle-login-params, sql-sqlite-login-params)
 +      (sql-solid-login-params, sql-sybase-login-params)
 +      (sql-informix-login-params, sql-ingres-login-params)
 +      (sql-ms-login-params, sql-postgres-login-params)
 +      (sql-interbase-login-params, sql-db2-login-params)
 +      (sql-linter-login-params): Add `port' option.
 +      (sql-get-product-feature): Add NO-INDIRECT parameter.
 +      (sql-comint-oracle, sql-comint-sybase)
 +      (sql-comint-informix, sql-comint-sqlite, sql-comint-mysql)
 +      (sql-comint-solid, sql-comint-ingres, sql-comint-ms)
 +      (sql-comint-postgres, sql-comint-interbase, sql-comint-db2)
 +      (sql-comint-linter): Rename sql-connect-* functions to
 +      sql-comint-*.
 +      (sql-product-alist, sql-mode-menu): Rename as above and
 +      :sqli-connect-func to :sqli-comint-func.
 +      (sql-connection): New variable.
 +      (sql-interactive-mode): Set it.
 +      (sql-connection-alist): New variable.
 +      (sql-connect): New function.
 +      (sql--alt-buffer-part, sql--alt-if-not-empty)
 +      (sql-make-alternate-buffer-name): Improved alternative buffer name.
 +
 +2010-07-17  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * image-mode.el (image-bookmark-make-record): Do not set context
 +      in an image (Bug#6650).
 +
 +2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (select-active-region): New function.
 +      (push-mark-command, set-mark, activate-mark)
 +      (handle-shift-selection): Use it.
 +      (deactivate-mark): Don't check for size of region.
 +
 +      * mouse.el (mouse-drag-track): Use select-active-region.
 +
 +2010-07-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-get-ls-command-with-dired): Make test for
 +      "--dired" stronger.
 +
 +2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/x-win.el (x-select-enable-primary): Change default to nil.
 +      (x-select-enable-clipboard): Add :version keyword.
 +
 +      * mouse.el (mouse-drag-copy-region):
 +      * simple.el (select-active-regions): Likewise.
 +
 +2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * vc/vc.el (vc-coding-system-inherit-eol): New defvar.
 +      (vc-coding-system-for-diff): Use it to decide whether to inherit
 +      from the file the EOL format for reading the diffs of that file.
 +      (Bug#4451)
 +
 +2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
 +      unibyte, so compressed attachments are not compressed again.
 +
 +2010-07-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-shell-command): Don't use hard-wired
 +      "/bin/sh" but `tramp-remote-sh' from `tramp-methods'.
 +      (tramp-find-shell): Simplify setting connection property.
 +      (tramp-get-ls-command): Make test for "--color=never" stronger.
 +
 +2010-07-15  Simon South  <ssouth@member.fsf.org>
 +
 +      * progmodes/delphi.el (delphi-previous-indent-of): Indent case
 +      blocks within record declarations (i.e. variant parts) correctly.
 +
 +2010-07-15  Simon South  <ssouth@member.fsf.org>
 +
 +      * progmodes/delphi.el (delphi-token-at): Give newlines precedence
 +      over literal tokens when parsing so newlines aren't "absorbed" by
 +      single-line comments.  Corrects the indentation of case blocks
 +      that have a comment on the first line.
 +
 +2010-07-14  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el (bookmark-load-hook): Fix doc string as suggested
 +      by Drew Adams (Bug#5504).
 +
 +2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xt-mouse.el (xterm-mouse-event-read): Fix for characters > 127
 +      now that Unicode is used (Bug#6594).
 +
 +2010-07-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/x-win.el (x-select-enable-clipboard): Default to t.
 +      (x-initialize-window-system): Don't overwrite Paste menu item.
 +
 +      * simple.el (select-active-regions): Default to t.
 +      (push-mark-command): Don't overwrite primary with empty string.
 +
 +      * mouse.el: Bind mouse-2 to mouse-yank-primary.
 +      (mouse-drag-copy-region): Default to nil.
 +
 +      * menu-bar.el (menu-bar-enable-clipboard): Don't overwrite
 +      Cut/Copy/Paste menu bar items.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975).
 +      Patch applied by Karl Fogel.
 +
 +      * bookmark.el (bookmark-set): Don't set `bookmark-yank-point'
 +      and `bookmark-current-buffer' if they have been already set in
 +      another buffer (e.g gnus-art).
 +
 +2010-07-13  Karl Fogel  <kfogel@red-bean.com>
 +            Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Preparation for setting bookmarks in Gnus article buffers (Bug#5975).
 +
 +      * bookmark.el (bookmark-make-record-default): Allow unneeded
 +      information to be omitted from the record.
 +
 +      Adjust declarations and calls:
 +
 +      * info.el (bookmark-make-record-default): Adjust declaration.
 +      (Info-bookmark-make-record): Adjust call.
 +
 +      * woman.el (bookmark-make-record-default): Adjust declaration.
 +      (woman-bookmark-make-record): Adjust call.
 +
 +      * man.el (bookmark-make-record-default): Adjust declaration.
 +      (Man-bookmark-make-record): Adjust call.
 +
 +      * image-mode.el (bookmark-make-record-default): Adjust declaration.
 +
 +      * doc-view.el (bookmark-make-record-default): Adjust declaration.
 +
 +2010-07-13  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * bookmark.el (bookmark-show-annotation): Use `when' instead of `if'.
 +      This is also from Thierry Volpiatto's patch in bug #6444.  However,
 +      because it was extraneous to the functional change in that patch,
 +      and causes a re-indendation, I am committing it separately.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * bookmark.el (bookmark-show-annotation): Ensure annotations show,
 +      e.g. in Info bookmarks, by using `switch-to-buffer-other-window'.
 +      Patch applied by Karl Fogel (Bug#6444).
 +
 +2010-07-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.el (make-frame): Fix typo in 2010-06-30 change (Bug#6625).
 +
 +2010-07-13  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * term/ns-win.el: Bind M-~ to 'ns-prev-frame (due to Matthew
 +      Dempsky; bug#5084).  Remove incorrect binding for S-tab.
 +      (ns-alternatives-map): Change S-tab binding to backtab
 +      (bug#6616).
 +
 +      * simple.el (normal-erase-is-backspace-setup-frame): Set mode on
 +      under ns.
 +
 +2010-07-12  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * language/tai-viet.el ("TaiViet"): Try to fix re-encoding bugs.
 +      (Bug#5806)
 +
 +      * language/tv-util.el (tai-viet-re): Remove format.
 +
 +2010-07-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el: Remove no-byte-compile declaration.
 +      Change coding: tag to utf-8.  Register hebrew-shape-gstring in
 +      composition-function-table for 3-character looking back.
 +      (hebrew-font-get-precomposed): New function.
 +      (hebrew-shape-gstring): Utilize precomposed glyphs if available.
 +
 +2010-07-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-drag-track): Handle select-active-regions
 +      (Bug#6612).
 +
 +2010-07-11  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 +      empty argument to gvfs-copy.
 +
 +2010-07-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/calendar.el (calendar-week-end-day): New function.
 +      * calendar/cal-tex.el (cal-tex-cursor-month): Remove unused vars.
 +      Respect calendar-week-start-day.  (Bug#6606)
 +      (cal-tex-insert-day-names, cal-tex-insert-blank-days)
 +      (cal-tex-insert-blank-days-at-end): Respect calendar-week-start-day.
 +      (cal-tex-first-blank-p, cal-tex-last-blank-p): Simplify, and
 +      respect calendar-week-start-day.
 +
 +2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (use-region-p): Doc fix (Bug#6607).
 +
 +2010-07-10  Aleksei Gusev  <aleksei.gusev@gmail.com>  (tiny change)
 +
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Add regexps for cucumber and ruby.
 +
 +2010-07-08  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * epa-file.el (epa-file-error, epa-file--find-file-not-found-function)
 +      (epa-file-insert-file-contents): Hack to prevent
 +      find-file from opening empty buffer when decryption failed
 +      (bug#6568).
 +
 +2010-07-07  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-alternate-dictionary):
 +      Use file-readable-p.
 +      Return nil if no word-list is found at default locations.
 +      (ispell-complete-word-dict): Default to nil.
 +      (ispell-command-loop): Use 'word-list' when using lookup-words.
 +      (lookup-words): Use ispell-complete-word-dict or
 +      ispell-alternate-dictionary.  Check for word-list availability
 +      and handle errors if needed with better messages (Bug#6539).
 +      (ispell-complete-word): Use ispell-complete-word-dict or
 +      ispell-alternate-dictionary.
 +
 +2010-07-07  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * progmodes/python.el (python-font-lock-keywords): Add Python 2.7
 +      builtins (BufferError, BytesWarning, WindowsError; callables
 +      bin, bytearray, bytes, format, memoryview, next, print; __package__).
 +
 +2010-07-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * play/zone.el (top-level): Do not require timer, tabify, or cl.
 +      (zone-shift-left): Ignore intangibility, and any errors from
 +      forward-char.
 +      (zone-shift-right): Remove no-op end-of-line.  Ignore intangibility.
 +      (zone-pgm-putz-with-case): Use upcase-region rather than inserting,
 +      deleting, and copying text properties.
 +      (zone-line-specs, zone-pgm-stress): Check forward-line exit status.
 +      (zone-pgm-rotate): Handle odd buffers like that of gomoku, where getting
 +      to point-max is hard.
 +      (zone-fret, zone-fill-out-screen): Replace cl's do with dotimes.
 +      (zone-fill-out-screen): Ignore intangibility.
 +
 +2010-07-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * menu-bar.el (menu-bar-mode):
 +      * tool-bar.el (tool-bar-mode): Replace default-frame-alist element
 +      if it has been set.
 +
 +      * mouse.el (mouse-drag-track): Call mouse-start-end to handle
 +      word/line selection (Bug#6565).
 +
 +2010-07-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/dbus.el (dbus-send-signal): Declare function.
 +
 +2010-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el: Implement signal "PropertiesChanged" (from D-Bus 1.3.1).
 +      (dbus-register-property): New optional argument EMITS-SIGNAL.
 +      (dbus-property-handler): Send signal "PropertiesChanged" if requested.
 +
 +2010-07-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-drag-overlay): Variable deleted.
 +      (mouse-move-drag-overlay, mouse-show-mark): Functions deleted.
 +      (mouse--remap-link-click-p): New function.
 +      (mouse-drag-track): Handle dragging by using temporary Transient
 +      Mark mode, instead of a special overlay.
 +      (mouse-kill-ring-save, mouse-save-then-kill): Don't call
 +      mouse-show-mark.
 +
 +      * mouse-sel.el (mouse-sel-selection-alist): mouse-drag-overlay
 +      deleted.
 +
 +2010-07-02  Juri Linkov  <juri@jurta.org>
 +
 +      * autoinsert.el (auto-insert-alist): Fix readability
 +      by using dotted pair notation for lambda.
 +
 +2010-07-02  Juri Linkov  <juri@jurta.org>
 +
 +      * faces.el (read-face-name): Rename arg `string-describing-default'
 +      to `default'.  Doc fix.  Display the default value in quotes
 +      in the prompt.  With empty input, return the `default' arg,
 +      unless the default value is a string (in which case return nil).
 +      (describe-face): Replace the string `default' arg of `read-face-name'
 +      with the symbol `default'.
 +
 +2010-07-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emulation/viper-cmd.el (viper-delete-backward-char)
 +      (viper-del-backward-char-in-insert)
 +      (viper-del-backward-char-in-replace, viper-change)
 +      (viper-backward-indent): Replace delete-backward-char with
 +      delete-char (Bug#6552).
 +
 +2010-07-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ruler-mode.el (ruler--save-header-line-format): Fix typos.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frame.el (make-frame): Add default-frame-alist to the PARAMETERS
 +      argument passed to frame-creation-function (Bug#5378).
 +
 +      * faces.el (x-handle-named-frame-geometry)
 +      (x-handle-reverse-video, x-create-frame-with-faces)
 +      (face-set-after-frame-default, tty-create-frame-with-faces):
 +      Don't separately consult default-frame-alist.  It is now passed as the
 +      PARAMETER argument.
 +
 +2010-06-30  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * startup.el (command-line): Don't call tool-bar-setup in a
 +      tty-only build.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ruler-mode.el (ruler--save-header-line-format): New fun.
 +      (ruler-mode): Use it as a setter function, so as not to overwrite
 +      ruler-mode-header-line-format-old if Ruler mode is on (Bug#5370).
 +
 +2010-06-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * vc/vc.el (vc-deduce-backend): New fun.  Handle diff buffers.
 +      (vc-root-diff, vc-print-root-log, vc-log-incoming)
 +      (vc-log-outgoing): Use it.
 +      (vc-diff-internal): Set diff-vc-backend.
 +
 +      * vc/diff-mode.el (diff-vc-backend): New var.
 +
 +2010-06-28  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * dynamic-setting.el (font-setting-change-default-font):
 +      Remove call to message.
 +
 +2010-06-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * international/quail.el (quail-insert-kbd-layout): Fix the
 +      showing of untranslated characters.
 +
 +2010-06-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * simple.el (delete-active-region): New option.
 +      (delete-backward-char): Implement in Lisp.
 +      (delete-forward-char): New command.
 +
 +      * mouse.el (mouse-region-delete-keys): Deleted.
 +      (mouse-show-mark): Simplify.
 +
 +      * bindings.el (global-map): Bind delete and DEL, the former to
 +      delete-forward-char.
 +
 +2010-06-27  Lennart Borgman  <lennart.borgman@gmail.com>
 +
 +      * progmodes/ruby-mode.el (ruby-mode-map): Don't bind TAB.
 +      (ruby-mode): Bind indent-line-function (Bug#5119).
 +
 +2010-06-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Recognize "0" X resource value.
 +
 +2010-06-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * startup.el (command-line): Use X resources to set the value of
 +      menu-bar-mode and tool-bar-mode, before calling frame-initialize.
 +
 +      * menu-bar.el (menu-bar-mode):
 +      * tool-bar.el (tool-bar-mode): Don't change default-frame-alist.
 +      Set init-value to t.
 +
 +      * frame.el (frame-notice-user-settings): Don't change
 +      default-frame-alist based on menu-bar-mode and tool-bar-mode, or
 +      vice versa (Bug#2249).
 +
 +2010-06-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32-fns.el (w32-convert-standard-filename): Doc fix.
 +
 +2010-06-25  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/flyspell.el (flyspell-check-previous-highlighted-word):
 +      Make sure `flyspell-word' re-checks word after function run (Bug#6504).
 +
 +      * textmodes/ispell.el (ispell-init-process): Make sure ispell and
 +      default directories are expanded (Bug#6143).
 +
 +2010-06-24  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuffer.el (completions-format): Change default from nil to
 +      `horizontal'.  Remove `nil' value from :type.  Doc fix.  (Bug#6459)
 +
 +2010-06-24  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
 +      buffer-locally to lambda that re-runs the vc diff command.
 +      (Bug#6447)
 +
 +2010-06-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * kmacro.el (kmacro-call-macro): Don't issue hint message if the
 +      echo area is in use (Bug#3412).
 +
 +2010-06-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/texinfmt.el (texinfo-format-region)
 +      (texinfo-raise-lower-sections, texinfo-format-separate-node)
 +      (texinfo-itemize-item, texinfo-multitable-item, texinfo-alias)
 +      (texinfo-format-option, texinfo-noindent):
 +      Use line-beginning-position and line-end-position.
 +
 +      * calc/calc-aent.el, calc/calc-ext.el, calc/calc-lang.el:
 +      * calc/calc-store.el, calc/calc-units.el, calc/calc.el:
 +      * calc/calccomp.el: Add explicit utf-8 coding cookies to files with
 +      utf-8 characters.
 +
 +2010-06-21  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * play/zone.el (zone-fall-through-ws): Fix next-line ->
 +      forward-line fallout.
 +
 +2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * mouse.el (mouse-appearance-menu): Add docstring.
 +
 +      * help.el (describe-key): Print up-event using key-description.
 +
 +2010-07-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/zeroconf.el (zeroconf-resolve-service)
 +      (zeroconf-service-resolver-handler): Use `dbus-byte-array-to-string'.
 +      (zeroconf-publish-service): Use `dbus-string-to-byte-array'.
 +
 +2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +
 +      * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
 +
 +2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Avoid displaying files with a nil state in vc-dir.
 +      * vc/vc-dir.el (vc-dir-update): Obey the noinsert argument in all
 +      cases that cause insertion.
 +      (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files
 +      with a nil state.
 +
 +2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
 +
 +2010-06-29  Leo  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/rx.el (rx): Doc fix.  (Bug#6537)
 +
 +2010-06-27  Oleksandr Gavenko  <gavenkoa@gmail.com>  (tiny change)
 +
 +      * generic-x.el (bat-generic-mode): Fix regexp for command line
 +      switches (Bug#5719).
 +
 +2010-06-27  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * htmlfontify.el (hfy-face-attr-for-class): Use append instead
 +      of nconc to avoid pure storage error (Bug#6239).
 +
 +2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +
 +      * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window)
 +      (bookmark-bmenu-other-window-with-mouse): Remove unnecessary
 +      bindings of bookmark-automatically-show-annotations (Bug#6515).
 +
 +2010-06-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * arc-mode.el (archive-zip-extract): Don't quote the file name on
 +      MS-Windows and MS-DOS.  (Bug#6467, Bug#6144)
 +
 +2010-06-24  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +
 +      * comint.el (make-comint, make-comint-in-buffer): Mention return
 +      value in the docstrings.  (Bug#6498)
 +
 +2010-06-24  Yoni Rabkin  <yoni@rabkins.net>
 +
 +      * bs.el (bs-mode-font-lock-keywords): Remove "by" from Dired pattern,
 +      since it is not present when using some non-default switches.
 +
 +2010-06-23  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * simple.el (compose-mail): Fix doc string to refer to
 +      `compose-mail-user-agent-warnings', instead of to the
 +      nonexistent `compose-mail-check-user-agent'.
 +
 +2010-06-21  Alan Mackenzie  <bug-cc-mode@gnu.org>
 +
 +      Fix an indentation bug:
 +
 +      * progmodes/cc-mode.el (c-common-init): Initialise c-new-BEG/END.
 +      (c-neutralize-syntax-in-and-mark-CPP): c-new-BEG/END: Take account
 +      of existing values.
 +
 +      * progmodes/cc-engine.el (c-clear-<-pair-props-if-match-after)
 +      (c-clear->-pair-props-if-match-before): now return t when they've
 +      cleared properties, nil otherwise.
 +      (c-before-change-check-<>-operators): Set c-new-beg/end correctly
 +      by taking account of the existing value.
 +
 +      * progmodes/cc-defs.el
 +      (c-clear-char-property-with-value-function): Fix this to clear the
 +      property rather than overwriting it with nil.
 +
 +2010-06-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-print-package): Add link to
 +      package description via describe-package.
 +      (describe-package-1): List package requirements.  Add button to
 +      perform installation.
 +      (package-menu-describe-package): New command.
 +
 +      * help-mode.el (help-package): New button type.
 +
 +2010-06-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el: Move package-list-packages binding to
 +      menu-bar.el.
 +      (describe-package, describe-package-1, package--dir): New funs.
 +      (package-activate-1): Use package--dir.
 +
 +      * emacs-lisp/package-x.el (gnus-article-buffer): Require package.
 +
 +      * help-mode.el (help-package-def): New button type.
 +
 +      * menu-bar.el: Move package-list-packages binding here from
 +      package.el.
 +
 +2010-06-19  Gustav Hållberg  <gustav@gmail.com>  (tiny change)
 +
 +      * descr-text.el (describe-char): Avoid trailing whitespace.  (Bug#6423)
 +
 +2010-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/edebug.el (edebug-read-list):
 +      Phase out old-style backquotes.
 +
 +2010-06-17  Juri Linkov  <juri@jurta.org>
 +
 +      * help-mode.el (help-mode): Set buffer-local variable
 +      revert-buffer-function to help-mode-revert-buffer.
 +      (help-mode-revert-buffer): New function.
 +
 +      * info.el (Info-revert-find-node): Check for major-mode Info-mode
 +      before popping to "*info*" (like in other Info functions).
 +      Keep buffer-name in old-buffer-name.  Keep Info-history-forward in
 +      old-history-forward.  Pop to old-buffer-name or "*info*" to
 +      recreate the killed buffer.  Set Info-history-forward from
 +      old-history-forward.
 +      (Info-breadcrumbs-depth): Add :group and :version.
 +
 +2010-06-17  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map): Add a menu.
 +
 +2010-06-17  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-aspell-find-dictionary): Fix regexp
 +      for languages like Portuguese with pt_{BR,PT} and no plain pt.
 +
 +2010-06-17  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/package.el (package-menu-mode-map):
 +      Move initialization into declaration.
 +
 +      * menu-bar.el (menu-bar-options-menu): Fix typo in menu entry.
 +
 +2010-06-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-lisp/package.el (package-archive-base): Point to
 +      elpa.gnu.org.
 +      (package-enable, package-load-list): New defcustoms.
 +      (package-user-dir, package-directory-list): Turn into defcustoms.
 +      Don't include package-user-dir in package-directory-list.
 +      (package--builtins-base): Don't include Emacs as a "package".
 +      (package-subdirectory-regexp): New var.
 +      (package-load-all-descriptors, package-compute-transaction)
 +      (package-download-transaction): Obey package-load-list.
 +      (package-activate-1): Rename from package-do-activate.
 +      (package-list-packages-internal): Check package-load-list.
 +      (package-load-descriptor, package-generate-autoloads)
 +      (package-unpack, package-unpack-single)
 +      (package--read-archive-file, package-delete):
 +      Use expand-file-name.
 +
 +      * emacs-lisp/package-x.el: New file.  Package uploading
 +      functionality split out from package.el.
 +
 +      * startup.el (command-line): Load packages after reading init file.
 +
 +2010-06-17  Tom Tromey  <tromey@redhat.com>
 +
 +      * emacs-lisp/package.el: New file.
 +
 +2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix vc-annotate for renamed files when using Git.
 +      * vc/vc-git.el (vc-git-find-revision): Deal with empty results from
 +      ls-files.  Doe not pass the object as a file name to cat-file, it
 +      is not a file name.
 +      (vc-git-annotate-command): Pass the file name using -- to avoid
 +      ambiguity with the revision.
 +      (vc-git-previous-revision): Pass a relative file name.
 +
 +2010-06-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/js.el (js-mode-map): Use standard capitalization and
 +      ellipses for menu entries.
 +
 +      * wid-edit.el (widget-complete): Doc fix.
 +
 +2010-06-22  Jürgen Hötzel  <juergen@hoetzel.info>  (tiny change)
 +
 +      * wid-edit.el (widget-complete): Fix typo in 2009-12-02 change.
 +
 +2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix annotating other revisions for renamed files in vc-annotate.
 +      * vc/vc-annotate.el (vc-annotate): Add an optional argument for the
 +      VC backend.  Use it when non-nil.
 +      (vc-annotate-warp-revision): Pass the VC backend to vc-annotate.
 +      (Bug#6487).
 +
 +      Fix vc-annotate-show-changeset-diff-revision-at-line for git.
 +      * vc/vc-annotate.el (vc-annotate-show-diff-revision-at-line-internal):
 +      Do not pass the file name to the 'previous-revision call when we
 +      don't want a file diff.  (Bug#6489)
 +
 +2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix finding revisions for renamed files in vc-annotate.
 +      * vc/vc.el (vc-find-revision): Add an optional argument for
 +      the VC backend.  Use it when non-nil.
 +      * vc/vc-annotate.el (vc-annotate-find-revision-at-line): Pass the VC
 +      backend to vc-find-revision.  (Bug#6487)
 +
 +2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Fix reading file names in Git annotate buffers.
 +      * vc/vc-git.el (vc-git-annotate-extract-revision-at-line):
 +      Remove trailing whitespace.  Suggested by Eric Hanchrow.  (Bug#6481)
 +
 +2010-06-20  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
 +      in file local variables, set it first.
 +
 +2010-06-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * descr-text.el (describe-char-unicode-data): Insert separating
 +      space when needed.  (Bug#6422)
 +
 +      * progmodes/idlwave.el (idlwave-action-and-binding):
 +      Fix typo in 2009-12-03 change.  (Bug#6450)
 +
 +2010-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Put back special
 +      handling for `lambda' (misunderstanding).
 +
 +2010-06-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-poly.el (math-accum-factors): Make sure that
 +      constants aren't distributed after they are factored out.
 +
 +2010-06-16  Juri Linkov  <juri@jurta.org>
 +
 +      * facemenu.el (list-colors-display): Call `pop-to-buffer' before
 +      `list-colors-print'.  (Bug#6332)
 +
 +      * subr.el (read-quoted-char): Fix up last change (bug#6290).
 +
 +2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-all-1): Don't handle `lambda'
 +      specially, since it's a macro.  Fix up wrong hint passed to maybe-cons.
 +
 +      * font-lock.el (font-lock-major-mode): Rename from
 +      font-lock-mode-major-mode to distinguish it from
 +      global-font-lock-mode's own font-lock-mode-major-mode (bug#6135).
 +      (font-lock-set-defaults):
 +      * font-core.el (font-lock-default-function): Adjust users.
 +      (font-lock-mode): Don't set it at all.
 +
 +2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc-annotate.el (vc-annotate): Use vc-read-revision.
 +
 +2010-06-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/appt.el (appt-time-msg-list): Doc fix.
 +      (appt-check): Let-bind appt-warn-time.
 +      (appt-add): Make the 3rd argument optional.
 +      Simplify argument names.  Doc fix.  Check for integer WARNTIME.
 +      Only add WARNTIME to the output list if non-nil.
 +
 +2010-06-16  Ivan Kanis  <apple@kanis.eu>
 +
 +      * calendar/appt.el (appt-check): Let the 3rd element of
 +      appt-time-msg-list specify the warning time.
 +      (appt-add): Add new argument with the warning time.  (Bug#5176)
 +
 +2010-06-16  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +
 +      * vc/vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions
 +      older than version 1.6.  (Bug#6361)
 +
 +2010-06-16  Helmut Eller  <eller.helmut@gmail.com>
 +
 +      * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote',
 +      used by cl-do-arglist.  (Bug#6408)
 +
 +2010-06-16  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-dictionary-base-alist):
 +      Fix portuguese casechars/not-casechars for missing 'çÇ'.
 +      Suggested by Rolando Pereira (bug#6434).
 +
 +2010-06-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * facemenu.el (list-colors-sort): Doc fix.
 +
 +2010-06-15  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>
 +
 +      * progmodes/sql.el (sql-connect-mysql): Fix typo.
 +
 +2010-06-14  Juri Linkov  <juri@jurta.org>
 +
 +      Add sort option `list-colors-sort'.  (Bug#6332)
 +      * facemenu.el (color-rgb-to-hsv): New function.
 +      (list-colors-sort): New defcustom.
 +      (list-colors-sort-key): New function.
 +      (list-colors-display): Doc fix.  Sort list according to the option
 +      `list-colors-sort'.
 +      (list-colors-print): Add HSV values to `help-echo' property of
 +      RGB strings.
 +
 +2010-06-14  Juri Linkov  <juri@jurta.org>
 +
 +      * compare-w.el: Move to the "vc" subdirectory.
 +
 +2010-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * image-mode.el (image-mode-map): Remap left-char and right-char.
 +
 +      * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior.
 +
 +2010-06-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/common-win.el (x-colors): Add all the color names defined
 +      in rgb.txt (Bug#6332).
 +
 +      * facemenu.el (list-colors-print): Don't print extra names if it
 +      will overflow the window width.
 +
 +      * vc/log-edit.el (log-edit-font-lock-keywords): Revert 2010-06-02
 +      change (Bug#6343).
 +
 +2010-06-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (make-directory): Doc fix (bug#6396).
 +
 +2010-06-12  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-remote-process-environment): Protect version
 +      string by apostroph.
 +      (tramp-shell-prompt-pattern): Do not use a shy group in case of
 +      XEmacs.
 +      (tramp-file-name-for-operation): Add `call-process-region'.
 +      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 +
 +      * net/tramp-compat.el (top): Do not autoload
 +      `tramp-handle-file-remote-p'.  Load tramp-util.el and tramp-vc.el
 +      only when `start-file-process' is not bound.
 +      (tramp-advice-file-expand-wildcards): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-compat-make-temp-file): Handle the case, that
 +      `make-temp-file' has no third argument EXTENSION.
 +
 +2010-06-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (WINS_BASIC): Include new directory vc.
 +
 +      * loadup.el ("vc-hooks", "ediff-hook"): Load from lisp/vc/.
 +
 +2010-06-11  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el (finder-known-keywords): Add keyword "vc"
 +      for version control.
 +
 +      * add-log.el, cvs-status.el, diff.el, diff-mode.el, ediff.el,
 +      * emerge.el, log-edit.el, log-view.el, pcvs.el, smerge-mode.el,
 +      * vc-annotate.el, vc-bzr.el, vc-dir.el, vc-dispatcher.el, vc-git.el,
 +      * vc-hg.el, vc-mtn.el, vc.el: Add keyword "vc".
 +
 +2010-06-11  Juri Linkov  <juri@jurta.org>
 +
 +      Move version control related files to the "vc" subdirectory.
 +      * add-log.el, cvs-status.el, diff.el, diff-mode.el, ediff-diff.el,
 +      * ediff.el, ediff-help.el, ediff-hook.el, ediff-init.el,
 +      * ediff-merg.el, ediff-mult.el, ediff-ptch.el, ediff-util.el,
 +      * ediff-vers.el, ediff-wind.el, emerge.el, log-edit.el, log-view.el,
 +      * pcvs-defs.el, pcvs.el, pcvs-info.el, pcvs-parse.el, pcvs-util.el,
 +      * smerge-mode.el, vc-annotate.el, vc-arch.el, vc-bzr.el, vc-cvs.el,
 +      * vc-dav.el, vc-dir.el, vc-dispatcher.el, vc.el, vc-git.el,
 +      * vc-hg.el, vc-hooks.el, vc-mtn.el, vc-rcs.el, vc-sccs.el, vc-svn.el:
 +      Move files to the "vc" subdirectory.
 +
 +2010-06-11  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * comint.el (comint-password-prompt-regexp): Fix 2010-04-10 change
 +      (Bug#6367).
 +
 +2010-06-11  Stephen Eglen  <stephen@gnu.org>
 +
 +      * shell.el: Bind `shell-resync-dirs' to M-RET.
 +
 +2010-06-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * notifications.el: Move file from lisp/net, because it is
 +      supposed to talk locally to the user.
 +
 +2010-06-10  Julien Danjou  <julien@danjou.info>
 +
 +      * net/notifications.el (notifications-on-action-signal)
 +      (notifications-on-closed-signal): Pass notification id as first
 +      argument to the callback functions.  Add docstrings.
 +      (notifications-notify): Fix docstring.
 +
 +2010-06-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/authors.el (authors-ignored-files)
 +      (authors-valid-file-names): Add some files.
 +
 +2010-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/rcirc.el (rcirc-server-alist, rcirc, rcirc-connect): Resolve
 +      merge conflict, giving preference to the emacs-23 version of the code.
 +
 +2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/advice.el (ad-compile-function):
 +      Define warning-suppress-types before we let-bind it (bug#6275).
 +
 +      * vc-dispatcher.el: Rename mode-line-hook to vc-mode-line-hook;
 +      declare it, make it buffer-local and permanent-local (bug#6324).
 +      (vc-resynch-window): Adjust name.
 +      * vc-hooks.el (vc-find-file-hook): Adjust name.
 +
 +2010-06-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/notifications.el (notifications-notify): Fix docstring.
 +
 +2010-06-09  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Update to Unicode 6.0.0 beta.
 +      * international/charprop.el: Update copyright.
 +      * international/mule-cmds.el (ucs-names): Update character ranges.
 +      * international/uni-bidi.el:
 +      * international/uni-category.el:
 +      * international/uni-combining.el:
 +      * international/uni-comment.el:
 +      * international/uni-decimal.el:
 +      * international/uni-decomposition.el:
 +      * international/uni-digit.el:
 +      * international/uni-lowercase.el:
 +      * international/uni-mirrored.el:
 +      * international/uni-name.el:
 +      * international/uni-numeric.el:
 +      * international/uni-old-name.el:
 +      * international/uni-titlecase.el:
 +      * international/uni-uppercase.el: Regenerate.
 +
 +2010-06-09  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/smie.el (comment-string-strip): Declare function.
 +      (smie-precs-precedence-table): Fix typo in docstring.
 +
 +      * vc-mtn.el (log-edit-extract-headers): Declare function.
 +
 +      * vc-hg.el (log-edit-extract-headers): Remove duplicate declaration.
 +
 +      * net/notifications.el (dbus-register-signal): Declare function.
 +      (notifications-notify): Fix typos and reflow docstring.
 +
 +2010-06-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Improve VC create/retrieve tag/branch.
 +      * vc.el (vc-create-tag): Do not read the directory name for VCs
 +      with repository revision granularity.  Adjust the tag/branch
 +      prompt.  Reset VC properties.
 +      (vc-retrieve-tag): Do not read the directory name for VCs
 +      with repository revision granularity.  Reset VC properties.
 +
 +2010-06-09  Julien Danjou  <julien@danjou.info>
 +
 +      * net/notifications.el: New file.
 +
 +2010-06-09  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add optional support for resetting VC properties.
 +      * vc-dispatcher.el (vc-resynch-window): Add new optional argument,
 +      call vc-file-clearprops when true.
 +      (vc-resynch-buffer): Add new optional argument, pass it down.
 +      (vc-resynch-buffers-in-directory): Likewise.
 +
 +      Improve support for special markup in the VC commit message.
 +      * vc-mtn.el (vc-mtn-checkin): Add support for Author: and Date: markup.
 +      * vc-hg.el (vc-hg-checkin): Add support for Date:.
 +      * vc-git.el (vc-git-checkin):
 +      * vc-bzr.el (vc-bzr-checkin): Likewise.
 +
 +2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-keyword): Remove special case that
 +      can be handled with a ((:before "fn") (:prev "=>" parent)) rule.
 +
 +2010-06-07  Martin Pohlack  <mp26@os.inf.tu-dresden.de>
 +
 +      * iimage.el: Remove images as soon as the underlying text is modified.
 +      (iimage-modification-hook): New function.
 +      (iimage-mode-buffer): Use it.
 +
 +2010-06-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-rule): Rename from
 +      smie-indent-offset-after.  Add :prev case.  Make a bit more generic.
 +      (smie-indent-virtual): Remove `virtual' arg.  Update callers.
 +      (smie-indent-keyword): Add handling of open-paren keywords.
 +      (smie-indent-comment-continue): Don't assume comment-continue.
 +
 +2010-06-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (pop-to-buffer): Remove the conditional that
 +      compares new-window and old-window, so it will reselect
 +      the selected window unconditionally.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00078.html
 +
 +2010-06-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-offset-after)
 +      (smie-indent-forward-token, smie-indent-backward-token): New functions.
 +      (smie-indent-after-keyword): Use them.
 +      (smie-indent-fixindent): Only applies to the indentation of the BOL.
 +      (smie-indent-keyword): Tweak the black magic.
 +      (smie-indent-comment-continue): Strip comment-continue before use.
 +      (smie-indent-functions): Indent comments before keywords.
 +
 +2010-06-06  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-lazy-highlight-search): Fix looping
 +      by checking for empty match.  This syncs this loop with the
 +      similar loop in `isearch-search'.  (Bug#6362)
 +
 +2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * net/dbus.el (dbus-register-method): Declare function.
 +      (dbus-handle-event, dbus-property-handler): Fix typos in docstrings.
 +      (dbus-introspect): Doc fix.
 +      (dbus-event-bus-name, dbus-introspect-get-interface)
 +      (dbus-introspect-get-argument): Reflow docstrings.
 +
 +2010-06-05  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      vc-log-incoming/vc-log-outgoing fixes for Git.
 +      * vc-git.el (vc-git-log-view-mode): Fix font lock for
 +      incoming/outgoing logs.
 +      (vc-git-log-outgoing, vc-git-log-incoming): Use @{upstream}
 +      instead of vc-git-compute-remote.
 +      (vc-git-compute-remote): Remove.
 +
 +2010-06-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * term/common-win.el (x-colors): Add "dark green" and "dark
 +      turquoise" (Bug#6332).
 +
 +2010-06-04  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (kill-new): Fix logic of kill-do-not-save-duplicates.
 +      Instead of setting `replace' to t and replacing the same string
 +      with itself, don't do certain actions when
 +      kill-do-not-save-duplicates is non-nil and string is equal to car
 +      of kill-ring: don't call menu-bar-update-yank-menu, don't push
 +      interprogram-paste strings to kill-ring, and don't push the input
 +      argument `string' to kill-ring.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00072.html
 +
 +2010-06-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (directory-sep-char): Move from fileio.c and make a defconst.
 +
 +2010-06-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name): Expand "~/".
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Handle default-location.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-delete-directory): Don't try to
 +      move files to trash.
 +
 +2010-06-04  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * international/mule-cmds.el (nonascii-insert-offset)
 +      (nonascii-translation-table): Add obsolescence information.
 +
 +      * international/mule.el (make-translation-table-from-vector): Doc fix.
 +
 +2010-06-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-clear-preserve-buffers):
 +      Add "*Warnings*" buffer.  (Bug#6336)
 +
 +2010-06-03  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      vc-log-incoming/vc-log-outgoing improvements for Git.
 +      * vc-git.el (vc-git-log-outgoing): Use the same format as the
 +      short log.
 +      (vc-git-log-incoming): Likewise.  Run "git fetch" before the log command.
 +
 +      Add bindings for vc-log-incoming and vc-log-outgoing.
 +      * vc-hooks.el (vc-prefix-map): Add bindings for vc-log-incoming
 +      and vc-log-outgoing.
 +      * vc-dir.el (vc-dir-menu-map): Add menu bindings for vc-log-incoming
 +      and vc-log-outgoing.
 +
 +2010-06-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): Remove.
 +      (rcirc-handler-366): Always sort nicknames.
 +
 +2010-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/smie.el (comment-continue): Declare for byte-compiler.
 +
 +2010-06-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * net/rcirc.el (rcirc-nickname<, rcirc-sort-nicknames-join): Doc fix.
 +
 +2010-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): Change default.
 +      (rcirc-sort-nicknames-join): Avoid setq.
 +
 +2010-06-03  Deniz Dogan  <deniz.a.m.dogan@gmail.com>
 +
 +      * net/rcirc.el (rcirc-sort-nicknames): New custom.
 +      (rcirc-nickname<, rcirc-sort-nicknames-join): New funs.
 +      (rcirc-handler-366): Use them.
 +
 +2010-06-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Split smie-indent-calculate into more manageable chunks.
 +      * emacs-lisp/smie.el (smie-indent-virtual, smie-indent-fixindent)
 +      (smie-indent-comment, smie-indent-after-keyword, smie-indent-keyword)
 +      (smie-indent-close, smie-indent-comment-continue, smie-indent-bob)
 +      (smie-indent-exps): Extract from smie-indent-calculate.
 +      (smie-indent-functions): New var.
 +      (smie-indent-functions): Use them.
 +
 +2010-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-indent-hanging-p): Use smie-bolp.
 +      (smie-indent-calculate): Simplify and cleanup.
 +
 +2010-06-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-gvfs.el (top): Require url-util.
 +      (tramp-gvfs-mount-point): Remove.
 +      (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command):
        New defuns.
 -      (with-progress-reporter): New defmacro.
 -      (tramp-debug-outline-regexp): New defconst.
 -      (top, tramp-rfn-eshadow-setup-minibuffer)
 +      (with-tramp-dbus-call-method): Format trace message.
 +      (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
 +      Implement backup call, when operation on local files fails.
 +      Use progress reporter.  Flush properties of changed files.
 +      (tramp-gvfs-handle-make-directory): Make more traces.
 +      (tramp-gvfs-url-file-name): Hexify file name in url.
 +      (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
 +      into account for the resulting file name.
 +      (tramp-gvfs-handler-askquestion): Return dummy mountpoint, when
 +      the answer is "no".  See `tramp-gvfs-maybe-open-connection'.
 +      (tramp-gvfs-handler-mounted-unmounted)
 +      (tramp-gvfs-connection-mounted-p): Test also for new mountspec
 +      attribute "default_location".  Set "prefix" property.
 +      (tramp-gvfs-mount-spec): Return both prefix and mountspec.
 +      (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
 +      exists.  Raise an error, if not (due to a corresponding answer
 +      "no" in interactive questions, for example).
 +
 +2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * log-edit.el (log-edit-font-lock-keywords): Make group 4 match lax.
 +
 +2010-06-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emacs-lisp/eldoc.el: Add completions for new commands left-* and
 +      right-*.  (Bug#6265)
 +
 +2010-06-01  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add support for vc-log-incoming, improve vc-log-outgoing for Git.
 +      * vc-git.el (vc-git-compute-remote): New function.
 +      (vc-git-log-outgoing): Use it instead of hard coding a value.
 +      (vc-git-log-incoming): New function.
 +
 +      Improve state updating for VC tag commands.
 +      * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer
 +      to update the state of all buffers in the directory.
 +
 +      * vc-dir.el (vc-dir-update): Remove entries with a nil state (bug#5539).
 +
 +2010-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-bzr.el (vc-bzr-revision-completion-table): Apply
 +      `file-directory-p' to the filename part rather than to the whole text.
 +
 +2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
 +
 +2010-05-31  Drew Adams  <drew.adams@oracle.com>
 +
 +      * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
 +
 +2010-05-31  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * subr.el (momentary-string-display): Just use read-event to read
 +      the exit event (Bug#6238).
 +
 +2010-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule.el (define-coding-system): Doc fix (bug#6313).
 +
 +2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/cua-base.el: Recognize also `right-word' and `left-word'.
 +      Suggested by Eli Zaretskii <eliz@gnu.org>.
 +
 +2010-05-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-file-name-table): Don't return a boundary
 +      past the end of `string' (bug#6299).
 +      (completion--file-name-table): Delegate to completion-file-name-table
 +      for the `boundaries' case.
 +
 +2010-05-30  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * emulation/cua-base.el: Recognize `right-char' and `left-char' as
 +      movement commands.
 +
 +      * progmodes/ada-xref.el (ada-prj-ada-project-path-sep): Set from
 +      `path-separator', but maintain compatibility with Emacs 20.2.
 +
 +2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * server.el (server-process-filter): Receive parent-id argument
 +      from emacsclient.
 +      (server-create-window-system-frame): New arg.  Pass parent-id as
 +      frame parameter.
 +
 +2010-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Bidi-sensitive word movement with arrow keys.
 +      * subr.el (right-arrow-command, left-arrow-command): Move to
 +      bindings.el.
 +
 +      * bindings.el (right-char, left-char): Move from subr.el and
 +      rename from right-arrow-command and left-arrow-command.
 +      (right-word, left-word): New functions.
 +      (global-map) <right>: Bind to right-char.
 +      (global-map) <left>: Bind to left-char.
 +      (global-map) <C-right>: Bind to right-word.
 +      (global-map) <C-left>: Bind to left-word.
 +
 +      * ls-lisp.el (ls-lisp-classify-file): New function.
 +      (ls-lisp-insert-directory): Call it if switches include -F (bug#6294).
 +      (ls-lisp-classify): Call ls-lisp-classify-file.
 +      (insert-directory): Remove blanks from switches.
 +
 +2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ansi-color.el: Delete unused escape sequences (Bug#6085).
 +      (ansi-color-drop-regexp): New constant.
 +      (ansi-color-apply, ansi-color-filter-region)
 +      (ansi-color-apply-on-region): Delete unrecognized control sequences.
 +      (ansi-color-apply): Build string list before calling concat.
 +
 +2010-05-28  Juri Linkov  <juri@jurta.org>
 +
 +      * image-dired.el (image-dired-dired-toggle-marked-thumbs):
 +      Replace LOCALP arg of `dired-get-filename' 'no-dir with nil.
 +      (Bug#5270)
 +
 +2010-05-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-debug-message): Add `tramp-compat-funcall'
 +      to ignored backtrace functions.
 +      (with-progress-reporter): Expand docstring.
 +      (tramp-handle-delete-file): Implement TRASH argument.
 +      (tramp-get-remote-trash): New defun.
 +
 +2010-05-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file):
 +      Use `symbol-value' for backward compatibility.
 +
 +      * net/tramp.el (tramp-handle-make-symbolic-link)
 +      (tramp-handle-load)
 +      (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-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use `delete-file' instead
 +      of `tramp-compat-delete-file'.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-directory)
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use `delete-file' instead
 +      of `tramp-compat-delete-file'.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler):
 +      Use `delete-file' instead of `tramp-compat-delete-file'.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg.
 +      (tramp-gvfs-handle-write-region): Use `delete-file' instead of
 +      `tramp-compat-delete-file'.
 +
 +      * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file):
 +      Use `delete-file' instead of `tramp-compat-delete-file'.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region): Use `delete-file' instead of
 +      `tramp-compat-delete-file'.
 +      (tramp-smb-handle-delete-directory): Use 'trash as arg.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.el (dired-delete-file): New arg TRASH.
 +      (dired-internal-do-deletions): New arg TRASH.  Use progress reporter.
 +      (dired-do-flagged-delete, dired-do-delete): Use trash.
 +
 +      * speedbar.el (speedbar-item-delete): Allow trashing.
 +
 +      * files.el (delete-directory): New arg TRASH.
 +
 +      * net/ange-ftp.el (ange-ftp-del-tmp-name, ange-ftp-delete-file)
 +      (ange-ftp-rename-remote-to-remote)
 +      (ange-ftp-rename-local-to-remote)
 +      (ange-ftp-rename-remote-to-local, ange-ftp-load)
 +      (ange-ftp-compress, ange-ftp-uncompress): Remove optional arg from
 +      `delete-file'.
 +      (ange-ftp-delete-directory): Add optional arg to `delete-file', to
 +      allow trashing.
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 +      handle new TRASH arg of `delete-file'.
 +
 +      * net/tramp.el (tramp-handle-delete-file): Change FORCE arg to TRASH.
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (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-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use null TRASH arg in
 +      tramp-compat-delete-file call.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-directory)
 +      (tramp-fish-handle-delete-file)
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use null TRASH
 +      arg in `tramp-compat-delete-file' call.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg.
 +      (tramp-gvfs-handle-write-region): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-imap.el (tramp-imap-handle-delete-file): Rename arg.
 +      (tramp-imap-do-copy-or-rename-file): Use null TRASH arg in
 +      `tramp-compat-delete-file' call.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region): Use null TRASH arg in
 +      tramp-compat-delete-file call.
 +      (tramp-smb-handle-delete-directory): Use tramp-compat-delete-file.
 +      (tramp-smb-handle-delete-file): Rename arg.
 +
 +      * diff.el (diff-sentinel):
 +      * epg.el (epg--make-temp-file, epg-decrypt-string)
 +      (epg-verify-string, epg-sign-string, epg-encrypt-string):
 +      * jka-compr.el (jka-compr-partial-uncompress)
 +      (jka-compr-call-process, jka-compr-write-region):
 +      * server.el (server-sentinel): Remove optional arg from
 +      delete-file, reverting 2010-05-03 change.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 +      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +
 +2010-05-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el (hebrew-shape-gstring): Check if a glyph
 +      element of GSTRING is nil.
 +
 +2010-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-forward-token-function)
 +      (smie-backward-token-function): New vars.
 +      (smie-backward-sexp, smie-forward-sexp)
 +      (smie-indent-hanging-p, smie-indent-calculate): Use them.
 +      (smie-default-backward-token): Rename from smie-backward-token and
 +      skip comments.
 +      (smie-default-forward-token): Rename from smie-forward-token and
 +      skip comments.
 +      (smie-next-sexp): Handle nil results from next-token.
 +      (smie-indent-calculate): Add a new case for special `fixindent' comments.
 +
 +2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 +      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +
 +2010-05-27  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * htmlfontify.el (hfy-face-resolve-face): New function.
 +      (hfy-face-to-style): Use it (Bug#6279).
 +
 +2010-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/ada-xref.el (ada-gnat-parse-gpr):
 +      * emulation/edt.el (edt-load-keys): Avoid (expand-file-name ".").
 +
 +2010-05-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * emulation/edt.el (edt-load-keys): Use locate-library.
 +
 +2010-05-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * log-edit.el (log-edit-strip-single-file-name): Default to nil.
 +      (log-edit-changelog-entries): Doc fix.
 +      (log-edit-changelog-insert-entries): Args changed.
 +      Rename relative filenames in ChangeLog entries.  Delete tabs.
 +      (log-edit-insert-changelog-entries): Reorganize return value of
 +      `log-edit-changelog-entries' to pass filenames to
 +      log-edit-changelog-insert-entries.
 +
 +2010-05-25  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * dired.el (dired-mode-map): Rebind "\C-t\C-t" from
 +      `image-dired-dired-insert-marked-thumbs' to
 +      `image-dired-dired-toggle-marked-thumbs'.
 +
 +      * image-dired.el: Require cl when compiling.
 +      (image-dired-dired-toggle-marked-thumbs): Rename from
 +      `image-dired-dired-insert-marked-thumbs'.  Add ARG.  Doc fix.
 +      Use interactive spec "P".  Set LOCALP arg of `dired-get-filename'
 +      to 'no-dir.  Skip files whose names don't match
 +      `image-file-name-regexp'.  When file has a thumbnail overlay,
 +      delete it.  (Bug#5270)
 +
 +2010-05-25  Juri Linkov  <juri@jurta.org>
 +
 +      * image-mode.el (image-mode): Add image-after-revert-hook to
 +      after-revert-hook.
 +      (image-after-revert-hook): New function.  (Bug#5669)
 +
 +2010-05-25  Juri Linkov  <juri@jurta.org>
 +
 +      * image.el (image-animated-p): When delay between animated images
 +      is 0, set it to 10 (0.1 sec).  (Bug#6258)
 +
 +2010-05-25  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +
 +      * net/tramp.el (tramp-handle-insert-directory): Don't use
 +      `forward-word', its default syntax could be changed.
 +
 +2010-05-25  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-progress-reporter-update): New defun.
 +      (with-progress-reporter): Use it.
 +      (tramp-process-actions):
 +      * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion):
 +      Preserve current message, in order to let progress reporter continue
 +      afterwards.  (Bug#6257)
 +
 +2010-05-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * net/rcirc.el (rcirc-default-user-name, rcirc-default-full-name):
 +      Add :version.
 +
 +2010-05-25  Ryan Yeske  <rcyeske@gmail.com>
 +
 +      * net/rcirc.el (rcirc-default-user-name): Change to "user".
 +      (rcirc-default-full-name): Change to "unknown".
 +      (rcirc-user-name-history): Add variable.
 +
 +2010-05-25  Ryan Yeske  <rcyeske@gmail.com>
 +            Jonathan Rockway  <jon@jrock.us>
 +
 +      * net/rcirc.el (rcirc-server-alist): Add :pass.
 +      (rcirc): When prompting for connection parameters, also prompt for
 +      username and password.
 +      (rcirc-connect): Take a PASS argument.  If PASS is non-nil, send
 +      value to server when connecting.
 +
 +2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-set-prec2tab): Check override before use.
 +      (smie-merge-prec2s): Pass the tables as separate args.
 +      (smie-bnf-precedence-table): Adjust call accordingly.
 +      (smie-prec2-levels): Set levels at the end.
 +
 +      Replace Lisp calls to delete-backward-char by delete-char.
 +      * bs.el, expand.el, ido.el, image-dired.el, lpr.el, pcomplete.el,
 +      * skeleton.el, term.el, time.el, wid-edit.el, woman.el,
 +      * calc/calc-graph.el, calc/calc-help.el, calc/calc-incom.el,
 +      * calc/calc.el, emacs-lisp/cl-extra.el, emacs-lips/cl-loaddefs.el,
 +      * emulation/cua-rect.el, emulation/viper-ex.el, eshell/esh-test.el,
 +      * eshell/eshell.el, gnus/gnus-uu.el, gnus/nndoc.el, gnus/nnrss.el,
 +      * gnus/rfc2047.el, gnus/utf7.el, international/utf-7.el,
 +      * language/ethio-util.el, mh-e/mh-alias.el, mh-e/mh-search.el,
 +      * net/imap.el, net/rcirc.el, obsolete/complete.el, play/decipher.el,
 +      * progmodes/ada-mode.el, progmodes/cc-awk.el, progmodes/dcl-mode.el,
 +      * progmodes/ps-mode.el, progmodes/verilog-mode.el,
 +      * progmodes/vhdl-mode.el, textmodes/bibtex.el, textmodes/fill.el,
 +      * textmodes/reftex-auc.el, textmodes/rst.el, textmodes/sgml-mode.el,
 +      * textmodes/table.el, textmodes/texinfmt.el: Replace Lisp calls to
 +      delete-backward-char by calls to delete-char.
 +
 +2010-05-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/hebrew.el (hebrew-shape-gstring): New function.
 +      Register it in composition-function-table for all Hebrew combining
 +      characters.
 +
 +2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * epa.el (epa--select-keys): Don't explicitly delete the window since
 +      that can fail (e.g. sole window in frame).  Use dedication instead.
 +
 +2010-05-24  Uday S Reddy  <u.s.reddy@cs.bham.ac.uk>  (tiny change)
 +
 +      * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
 +
 +2010-05-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.el (image-refresh): Define as an alias for image-flush.
 +
 +      * image-mode.el (image-toggle-display-image): Caller changed.
 +
 +2010-05-21  Juri Linkov  <juri@jurta.org>
 +
 +      * progmodes/grep.el (grep-read-files): Fix multi-pattern aliases.
 +      Remove "all" from grep-files-aliases.  Split grep-files-aliases by
 +      whitespace, call wildcard-to-regexp on substrings and concat them
 +      with "\\|".  (Bug#6114)
 +
 +2010-05-21  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-parse-state-get-strategy):
 +      Replace parameter `here' with `here-' and `here-plus', which sandwich
 +      any pertinent CPP construct.
 +      (c-remove-stale-state-cache-backwards): Fix a bug which happens
 +      when doing (c-parse-state) in a CPP construct: Exclude any "new"
 +      CPP construct from taking part in the scanning.
 +
 +2010-05-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-do-copy-or-rename-file)
 +      (tramp-handle-file-local-copy, tramp-maybe-open-connection):
 +      Tune `with-progress-reporter' messages.
 +      (tramp-handle-vc-registered):
 +      * net/tramp-fish.el (tramp-fish-handle-file-local-copy)
 +      (tramp-fish-handle-insert-file-contents)
 +      (tramp-fish-maybe-open-connection):
 +      * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection):
 +      * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file)
 +      (tramp-imap-handle-insert-file-contents)
 +      (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
 +
 +2010-05-21  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * add-log.el (change-log-font-lock-keywords):
 +      Highlight all authors in multi-author entries.
 +
 +      * smerge-mode.el (smerge-refine-ignore-whitespace)
 +      (smerge-refine-weight-hack, smerge-refine, smerge-makeup-conflict):
 +      Fix typos in docstrings.
 +      (smerge-resolve, smerge-refine-subst): Reflow docstrings.
 +
 +2010-05-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * progmodes/fortran.el (fortran-mode):
 +      * progmodes/f90.el (f90-mode): Derive from prog-mode.
 +
 +      * loadup.el [CANNOT_DUMP]: Update for bootstrap-emacs no longer
 +      having a relative path in src/Makefile.in.
 +
 +2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +
 +      * help-mode.el (help-make-xrefs): For Info node links turn
 +      newlines into spaces.  Link node names with newlines are matched
 +      by help-xref-info-regexp and buttonized, this change ensures they
 +      can be followed successfully with RET.  (Bug#6206)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * locate.el (locate): Use pop-to-buffer instead of
 +      switch-to-buffer-other-window.  (Bug#6204)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (replace-highlight): Fix lazy-highlighting
 +      for `M-s w str M-% str RET'.
 +
 +2009-12-15  Masatake YAMATO  <yamato@redhat.com>
 +
 +      * isearch.el (isearch-yank-word-or-char): Pull next subword
 +      when `subword-mode' is activated.  (Bug#6220)
 +
 +2010-05-20  Mark A. Hershberger  <mah@everybody.org>
 +
 +      * isearch.el (isearch-update-post-hook): New hook.
 +      (isearch-update): Use the new hook.  (Bug#6225)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-mode-map): Bind more keys to isearch-help-map:
 +      [f1], [help], and (char-to-string help-char) instead of "\C-h".
 +      (Bug#6222)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-yank-string): Use isearch-process-search-string.
 +      (Bug#6223)
 +
 +2010-05-20  Juri Linkov  <juri@jurta.org>
 +
 +      * dired-x.el (dired-jump, dired-jump-other-window): Add arg
 +      FILE-NAME to read from the minibuffer when called interactively
 +      with prefix argument instead of using buffer-file-name.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00534.html
 +
 +      * dired.el: Update autoloads.
 +
 +2010-05-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * nxml/nxml-mode.el (nxml-mode-map): Bind C-c / to
 +      nxml-finish-element, for consistency with SGML mode.
 +
 +      * progmodes/octave-mod.el (octave-mode-map): Bind C-c / to
 +      octave-close-block.
 +
 +2010-05-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * composite.el: Require cl when compiling.
 +      (reference-point-alist, compose-gstring-for-graphic)
 +      (compose-gstring-for-terminal): Fix typos in docstrings.
 +
 +2010-05-19  Juri Linkov  <juri@jurta.org>
 +
 +      * emacs-lisp/cl-macs.el (window-parameter): Add defsetf with
 +      set-window-parameter.
 +
 +2010-05-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Add `tramp-async-args' attribute
 +      where appropriate.
 +      (tramp-maybe-open-connection): Use it.
 +
 +2010-05-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (move-end-of-line): Make sure we are at line beginning
 +      before backing up to end of previous line.
 +
 +2010-05-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * password-cache.el (password-cache-remove): Fix docstring.
 +
 +      * net/secrets.el: Autoload the widget functions.
 +      (secrets-search-items, secrets-create-item)
 +      (secrets-get-attributes, secrets-expand-item): Attributes will be
 +      stored on the password database without leading ":", as all other
 +      clients do as well.
 +      (secrets-mode): Fix docstring.
 +      (secrets-show-secrets): Provide it as autoloaded command only when
 +      D-Bus support is available.  Check existence of Secret Service API.
 +
 +2010-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent.el (indent-region): Deactivate region (bug#6200).
 +
 +2010-05-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc-dir.el (vc-dir): Don't pop-up-windows.  (Bug#6204)
 +
 +2010-05-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.el: Register compose-gstring-for-graphic in
 +      composition-function-table only for combining characters (Mn, Mc, Me).
 +
 +2010-05-18  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-trail.el (calc-trail-isearch-forward)
 +      (calc-trail-isearch-backward): Ensure that the new window
 +      point is set correctly.
 +
 +2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (read-quoted-char): Resolve modifiers after key
 +      remapping (bug#6212).
 +
 +2010-05-18  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Add visualization code for secrets.
 +      * net/secrets.el (secrets-mode): New major mode.
 +      (secrets-show-secrets, secrets-show-collections)
 +      (secrets-expand-collection, secrets-expand-item)
 +      (secrets-tree-widget-after-toggle-function)
 +      (secrets-tree-widget-show-password): New defuns.
 +
 +2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-next-sexp): Break inf-loop at BOB.
 +      (smie-backward-sexp, smie-forward-sexp): Remove boundary condition now
 +      handled in smie-next-sexp.
 +      (smie-indent-calculate): Provide a starting indentation (so the
 +      recursion is well-founded ;-).
 +
 +      Fix handling of non-associative equal levels.
 +      * emacs-lisp/smie.el (smie-prec2-levels): Choose distinct levels even
 +      when it's not needed.
 +      (smie-op-left, smie-op-right): New functions.
 +      (smie-next-sexp): New function, extracted from smie-backward-sexp.
 +      Better handle equal levels to distinguish the associative case from
 +      the "multi-keyword construct" case.
 +      (smie-backward-sexp, smie-forward-sexp): Use it.
 +
 +2010-05-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/prolog.el (smie-indent-basic): Declare for byte-compiler.
 +
 +      * emacs-lisp/smie.el (smie-precs-precedence-table, smie-backward-sexp)
 +      (smie-forward-sexp, smie-indent-calculate): Fix typos in docstrings.
 +
 +2010-05-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Provide a simple generic indentation engine and use it for Prolog.
 +      * emacs-lisp/smie.el: New file.
 +      * progmodes/prolog.el (prolog-smie-op-levels)
 +      (prolog-smie-indent-rules): New var.
 +      (prolog-mode-variables): Use them to configure SMIE.
 +      (prolog-indent-line, prolog-indent-level): Remove.
 +
 +2010-05-17  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-vec.el (math-vector-avg): Put the vector elements in
 +      order before computing the averages.
 +
 +2010-05-16  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-vec.el (calc-histogram):
 +      (calcFunc-histogram): Allow vectors as inputs.
 +      (math-vector-avg): New function.
 +
 +      * calc/calc-ext.el (math-group-float): Have the number of digits
 +      being grouped depend on the radix (Bug#6189).
 +
 +2010-05-15  Ken Raeburn  <raeburn@raeburn.org>
 +
 +      * version.el (emacs-copyright, emacs-version): Don't define here,
 +      now that emacs.c defines it.
 +
 +2010-05-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule-cmds.el (mule-menu-keymap): Fix definition of
 +      "Describe Language Environment" menu item.
 +
 +      * language/hebrew.el ("Hebrew", "Windows-1255"): Doc fix.
 +
 +      Bidi-sensitive movement with arrow keys.
 +      * subr.el (right-arrow-command, left-arrow-command): New functions.
 +
 +      * bindings.el (global-map): Bind them to right and left arrow keys.
 +
 +      Don't override standard definition of convert-standard-filename.
 +      * files.el (convert-standard-filename):
 +      Call w32-convert-standard-filename and dos-convert-standard-filename on
 +      the corresponding systems.
 +
 +      * w32-fns.el (w32-convert-standard-filename): Rename from
 +      convert-standard-filename.  Doc fix.
 +
 +      * dos-fns.el (dos-convert-standard-filename): Doc fix.
 +      (convert-standard-filename): Don't defalias.
 +      (register-name-alist, make-register, register-value)
 +      (set-register-value, intdos): Obsolete aliases for the
 +      corresponding dos-* functions and variables.
 +      (dos-intdos): Add a doc string.
 +
 +2010-05-15  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-aent.el (math-read-token, math-find-user-tokens):
 +      * calc/calc-lang.el (math-read-big-rec, math-lang-read-symbol):
 +      (math-compose-tex-func):
 +      * calc/calccomp.el (math-compose-expr):
 +      * calc/calc-ext.el (math-format-flat-expr-fancy):
 +      * calc/calc-store.el (calc-read-var-name):
 +      * calc/calc-units.el (calc-explain-units-rec): Allow Greek letters.
 +
 +      * calc/calc.el (var-π, var-φ, var-γ): New variables.
 +      * calc/calc-aent.el (math-read-replacement-list): Add "micro" symbol.
 +      * calc/calc-units.el (math-unit-prefixes): Add mu for micro.
 +      (math-standard-units): Add units.
 +
 +2010-05-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/asm-mode.el (asm-mode):
 +      * progmodes/prolog.el (prolog-mode): Use define-derived-mode.
 +
 +      * pcomplete.el (pcomplete-completions-at-point): New function,
 +      extracted from pcomplete-std-complete.
 +      (pcomplete-std-complete): Use it.
 +
 +2010-05-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (setwins, setwins_almost, setwins_for_subdirs):
 +      Remove references to CVS, RCS and Old directories.
 +
 +2010-05-14  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-bin.el (math-format-twos-complement): Group digits when
 +      appropriate.
 +
 +2010-05-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-mode-default-syntax-table): Remove.
 +      (sh-mode-syntax-table): Give it a default value instead.
 +      (sh-header-marker): Make buffer-local.
 +      (sh-mode): Move make-local-variable to the corresponding setq.
 +      (sh-add-completer): Avoid gratuitously let-binding a buffer-local var.
 +      Use complete-with-action.
 +
 +      * simple.el (prog-mode): New (abstract) major mode.
 +      * emacs-lisp/lisp-mode.el (emacs-lisp-mode, lisp-mode): Use it.
 +      * progmodes/sh-script.el (sh-mode): Remove redundant var assignment.
 +
 +2010-05-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/sql.el (sql-oracle-program): Reflow docstring.
 +      (sql-oracle-scan-on, sql-sybase-program, sql-product-font-lock)
 +      (sql-add-product-keywords, sql-highlight-product, sql-set-product)
 +      (sql-make-alternate-buffer-name, sql-placeholders-filter)
 +      (sql-escape-newlines-filter, sql-input-sender)
 +      (sql-send-magic-terminator, sql-sybase): Fix typos in docstrings.
 +
 +2010-05-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      Add TeX open-block and close-block keybindings to SGML, and vice versa.
 +
 +      * textmodes/tex-mode.el (tex-mode-map): Bind C-c C-t to
 +      latex-open-block and C-c / to latex-close-block.
 +
 +      * textmodes/sgml-mode.el (sgml-mode-map): Bind C-c C-o to sgml-tag
 +      and C-c C-e to sgml-close-tag.
 +
 +2010-05-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (with-progress-reporter): Create reporter object
 +      only when the message would be displayed.  Handle nested calls.
 +      (tramp-handle-load, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-maybe-send-script, tramp-find-shell):
 +      Use `with-progress-reporter'.
 +      (tramp-handle-dired-compress-file, tramp-maybe-open-connection):
 +      Fix message text.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file)
 +      (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
 +      (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
 +      Use `with-progress-reporter'.
 +
 +2010-05-13  Agustín Martín  <agustin.martin@hispalinux.es>
 +
 +      * textmodes/ispell.el (ispell-init-process): Do not kill ispell
 +      process everytime when spellchecking from the minibuffer (bug#6143).
 +
 +2010-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-mode): Use define-derived-mode.
 +
 +      * dos-fns.el: Add "dos-" prefix for namespace control.
 +      (convert-standard-filename): Define as alias for
 +      dos-convert-standard-filename but only if applicable.
 +
 +2010-05-12  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
 +      Push the mark at the start of these functions when appropriate.
 +
 +2010-05-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-cycle-threshold): New custom var.
 +      (completion--do-completion): Use it.
 +      (minibuffer-complete): Use cycling if appropriate.
 +
 +2010-05-11  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dirtrack.el (dirtrackp): Remove defcustom; don't make automatically
 +      buffer-local (it's an obsolete alias for `dirtrack-mode') (bug#6173).
 +
 +2010-05-11  Juri Linkov  <juri@jurta.org>
 +
 +      * scroll-all.el (scroll-all-check-to-scroll):
 +      Add `scroll-up-command' and `scroll-down-command' (bug#6164).
 +
 +2010-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * iimage.el (iimage-mode-map): Move initialization into declaration.
 +      (iimage-mode-buffer): Use with-silent-modifications.
 +      Simplify calling convention.  Adjust callers.
 +      (iimage-mode): Don't run hook redundantly.
 +
 +      * minibuffer.el (completion-pcm--pattern->regex):
 +      Fix last change (bug#6160).
 +
 +2010-05-10  Juri Linkov  <juri@jurta.org>
 +
 +      Remove nodes visited during Isearch from the Info history.
 +      * info.el (Info-isearch-initial-history)
 +      (Info-isearch-initial-history-list): New variables.
 +      (Info-isearch-start): Record initial values of
 +      Info-isearch-initial-history and Info-isearch-initial-history-list.
 +      Add Info-isearch-end to isearch-mode-end-hook.
 +      (Info-isearch-end): New function.
 +
 +2010-05-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-do-file-attributes-with-stat): Add space in
 +      format string, in order to work around a bug in pdksh.
 +      Reported by Gilles Pion <gpion@lfdj.com>.
 +      (tramp-handle-verify-visited-file-modtime): Do not send a command
 +      when the connection is not established.
 +      (tramp-handle-set-file-times): Simplify the check for utc.
 +
 +2010-05-10  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Fix use of `filter-buffer-substring' (rework previous change).
 +      * emulation/cua-base.el (cua--filter-buffer-noprops): New function.
 +      (cua-repeat-replace-region):
 +      * emulation/cua-rect.el (cua--extract-rectangle, cua-incr-rectangle):
 +      * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
 +      (cua-cut-region-to-global-mark): Use it.
 +
 +2010-05-09  Michael R. Mauger  <mmaug@yahoo.com>
 +
 +      * progmodes/sql.el: Version 2.1.
 +      (sql-product-alist): Redesign structure of product info.
 +      (sql-product, sql-user, sql-server, sql-database): Safe variables.
 +      (sql-port, sql-port-history): New variables.
 +      (sql-interactive-product): New variable.
 +      (sql-send-terminator): New variable.
 +      (sql-imenu-generic-expression): Add "Types" imenu entry.
 +      (sql-oracle-login-params, sql-sqlite-login-params)
 +      (sql-mysql-login-params, sql-solid-login-params)
 +      (sql-sybase-login-params, sql-informix-login-params)
 +      (sql-ingres-login-params, sql-ms-login-params)
 +      (sql-postgres-login-params, sql-interbase-login-params)
 +      (sql-db2-login-params, sql-linter-login-params)
 +      (sql-oracle-scan-on): New variables.
 +      (sql-mode-map): Add C-c C-i to start interactive mode.
 +      (sql-mode-menu): Update existing menu entries.
 +      (sql-font-lock-keywords-builder): Compile-time font-lock optimization.
 +      (sql-mode-oracle-font-lock-keywords)
 +      (sql-mode-postgres-font-lock-keywords)
 +      (sql-mode-ms-font-lock-keywords)
 +      (sql-mode-sybase-font-lock-keywords)
 +      (sql-mode-informix-font-lock-keywords)
 +      (sql-mode-interbase-font-lock-keywords)
 +      (sql-mode-ingres-font-lock-keywords)
 +      (sql-mode-solid-font-lock-keywords)
 +      (sql-mode-mysql-font-lock-keywords)
 +      (sql-mode-sqlite-font-lock-keywords)
 +      (sql-mode-db2-font-lock-keywords)
 +      (sql-mode-linter-font-lock-keywords): Update initialization to
 +      reduce run-time complexity.
 +      (sql-add-product, sql-del-product): New functions.
 +      (sql-set-product-feature, sql-get-product-feature): New functions.
 +      (sql-product-font-lock): Update product API.
 +      (sql-add-product-keywords): New function.
 +      (sql-highlight-product): Update product API.
 +      (sql-help-list-products): New function.
 +      (sql-help): Dynamically lists free and non-free products.
 +      (sql-get-login): Correct bug in handling history and added
 +      prompt for port.
 +      (sql-copy-column): Copy without properties.
 +      (sqli-input-sender): Apply filters to SQLi input.
 +      (sql-query-placeholders-and-send): Obey `sql-oracle-scan-on' setting.
 +      Implement as a filter.
 +      (sql-escape-newlines-filter): Implement as a filter.
 +      (sql-remove-tabs-filter): New function.
 +      (sql-send-magic-terminator): New function.
 +      (sql-send-string): Implement magic terminator.
 +      (sql-send-region): Use `sql-send-string'.
 +      (sql-interactive-mode): Use product API.
 +      (sql-product-interactive): Use product API.
 +      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql)
 +      (sql-solid, sql-ingres, sql-ms, sql-postgres, sql-interbase)
 +      (sql-db2, sql-linter): Use `sql-product-interactive'.
 +      (sql-connect): New function.
 +      (sql-connect-oracle, sql-connect-sybase, sql-connect-informix)
 +      (sql-connect-sqlite, sql-connect-mysql, sql-connect-solid)
 +      (sql-connect-ingres, sql-connect-ms, sql-connect-postgres)
 +      (sql-connect-interbase, sql-connect-db2, sql-connect-linter):
 +      Use `sql-connect'.
 +
 +2010-05-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-pcm-complete-word-inserts-delimiters):
 +      New custom variable.
 +      (completion-pcm--string->pattern): Use it.
 +      (completion-pcm--pattern->regex, completion-pcm--pattern->string):
 +      Make it handle any symbol as `any'.
 +      (completion-pcm--merge-completions): Extract common suffix for the new
 +      `prefix' symbol as well.
 +      (completion-substring--all-completions): Use the new `prefix' symbol.
 +
 +2010-05-09  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-compat.el (byte-compile-not-obsolete-vars): Define if
 +      not bound.
 +      (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
 +      (tramp-compat-funcall): New defmacro.
 +      (tramp-compat-line-beginning-position)
 +      (tramp-compat-line-end-position)
 +      (tramp-compat-temporary-file-directory)
 +      (tramp-compat-make-temp-file, tramp-compat-file-attributes)
 +      (tramp-compat-copy-file, tramp-compat-copy-directory)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory)
 +      (tramp-compat-number-sequence, tramp-compat-process-running-p)
 +      * net/tramp.el (top, with-progress-reporter)
 +      (tramp-rfn-eshadow-setup-minibuffer)
        (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
        (tramp-handle-dired-compress-file, tramp-handle-shell-command)
        (tramp-completion-mode-p, tramp-check-for-regexp)
        (tramp-open-connection-setup-interactive-shell)
        (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
        (tramp-time-diff, tramp-coding-system-change-eol-conversion)
 -      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
 -      Use `tramp-compat-funcall'.
 -      (tramp-handle-make-symbolic-link): Flush file properties.
 -      (tramp-handle-load, tramp-handle-file-local-copy)
 -      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 -      (tramp-handle-vc-registered, tramp-maybe-send-script)
 -      (tramp-find-shell): Use `with-progress-reporter'.
 -      (tramp-do-file-attributes-with-stat): Add space in format string,
 -      in order to work around a bug in pdksh.  Reported by Gilles Pion
 -      <gpion@lfdj.com>.
 -      (tramp-handle-verify-visited-file-modtime): Do not send a command
 -      when the connection is not established.
 -      (tramp-handle-set-file-times): Simplify the check for utc.
 -      (tramp-handle-directory-files-and-attributes)
 -      (tramp-get-remote-path): Use `copy-tree'.
 -      (tramp-completion-handle-file-name-all-completions): Ensure, that
 -      non remote files are still checked.  Oops.
 -      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 -      Handle PRESERVE-SELINUX-CONTEXT.
 -      (tramp-do-copy-or-rename-file): Add progress reporter.
 -      (tramp-do-copy-or-rename-file-directly): Do not use
 -      `tramp-handle-file-remote-p'.
 -      (tramp-do-copy-or-rename-file-out-of-band):
 -      Use `tramp-compat-delete-directory'.
 -      (tramp-do-copy-or-rename-file-out-of-band)
 -      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 -      Use `format-spec-make'.
 -      (tramp-handle-delete-file): Add TRASH arg.
 -      (tramp-handle-dired-uncache): Flush directory cache, not only file
 -      cache.
 -      (tramp-handle-expand-file-name)
 -      (tramp-completion-handle-file-name-all-completions)
 -      (tramp-completion-handle-file-name-completion):
 -      Use `tramp-connectable-p'.
 -      (tramp-handle-start-file-process): Set connection property "vec".
 -      Use it, in order to invalidate file caches.  Check only for
 -      `remote-tty' process property.
 -      Implement tty setting.  (Bug#4604, Bug#6360)
 -      (tramp-file-name-for-operation): Add `call-process-region' and
 -      `set-file-selinux-context'.
 -      (tramp-find-foreign-file-name-handler)
 -      (tramp-advice-make-auto-save-file-name)
 -      (tramp-set-auto-save-file-modes): Remove superfluous check for
 -      `stringp'.  This is done inside `tramp-tramp-file-p'.
 -      (tramp-file-name-handler): Trace 'quit.  Catch the error for some
 -      operations when we are in completion mode.  This gives the user
 -      the chance to correct the file name in the minibuffer.
 -      (tramp-completion-mode-p): Use `non-essential'.
 -      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 -      compatibility: Use `completion-ignore-case' if
 -      `read-file-name-completion-ignore-case' does not exist.
 -      (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
 -      (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
 -      `tramp-open-shell'.
 -      (tramp-action-password): Hide password prompt before next run.
 -      (tramp-process-actions): Widen connection buffer for the trace.
 -      (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
 -      process property.  Trace stty settings if `tramp-verbose' >= 9.
 -      Apply workaround for IRIX64 bug.  Move argument of last
 -      `tramp-send-command' where it belongs to.
 -      (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
 -      front of `login-args'.
 -      (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
 -      on "/dev/null" instead of "/".
 -      (tramp-get-ls-command-with-dired): Make test for "--dired"
 -      stronger.
 -      (tramp-set-auto-save-file-modes): Adapt version check.
 -      (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
 -      (tramp-handle-process-file): Call the program in a subshell, in
 -      order to preserve working directory.
 -      (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
 -      `tramp-remote-sh' from `tramp-methods'.
 -      (tramp-get-ls-command): Make test for "--color=never" stronger.
 -      (tramp-check-for-regexp): Use (forward-line 1).
 +      (tramp-set-process-query-on-exit-flag, tramp-unload-tramp)
 +      * net/tramp-cmds.el (tramp-cleanup-all-connections)
 +      (tramp-reporter-dump-variable, tramp-load-report-modules)
 +      (tramp-append-tramp-buffers)
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-file-selinux-context): Use it.
 +
 +      * net/tramp-imap.el (top): Autoload `epg-make-context'.
 +
 +2010-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/compile.el (compilation-buffer-modtime): Rename from
 +      buffer-modtime.  Adjust users.
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * international/mule.el (auto-coding-alist): Only purecopy
 +      car of each item, not the whole list (Bug#6083).
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/js.el (js-mode): Make paragraph variables local before
 +      calling c-setup-paragraph-variables (Bug#6071).
 +
 +2010-05-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * composite.el (compose-region, reference-point-alist): Fix typos
 +      in the doc strings.
 +
 +2010-05-08  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +
 +      * calc/calc-graph.el (calc-graph-plot): Use the proper form for
 +      gnuplot's "set" command.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * abbrev.el (last-abbrev-text): Doc fix.
 +      (abbrev-prefix-mark): Don't escape parenthesis.
 +
 +2010-05-08  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * composite.el (find-composition): Doc fix.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/sql.el (sql-electric-stuff): Fix typo in tag.
 +      (sql-oracle-program, sql-sqlite-options)
 +      (sql-query-placeholders-and-send): Doc fixes.
 +      (sql-set-product, sql-interactive-mode): Reflow docstrings.
 +      (sql-imenu-generic-expression, sql-buffer)
 +      (sql-mode-ansi-font-lock-keywords, sql-mode-oracle-font-lock-keywords)
 +      (sql-mode-postgres-font-lock-keywords, sql-mode-ms-font-lock-keywords)
 +      (sql-mode-sybase-font-lock-keywords)
 +      (sql-mode-informix-font-lock-keywords)
 +      (sql-mode-interbase-font-lock-keywords)
 +      (sql-mode-ingres-font-lock-keywords, sql-mode-solid-font-lock-keywords)
 +      (sql-mode-mysql-font-lock-keywords, sql-mode-sqlite-font-lock-keywords)
 +      (sql-mode-db2-font-lock-keywords, sql-mode-font-lock-keywords)
 +      (sql-product-feature, sql-highlight-product)
 +      (comint-line-beginning-position, sql-rename-buffer)
 +      (sql-toggle-pop-to-buffer-after-send-region sql-oracle)
 +      (sql-sybase, sql-informix, sql-sqlite, sql-mysql, sql-solid)
 +      (sql-ingres, sql-ms, sql-postgres, sql-interbase, sql-db2, sql-linter):
 +      Fix typos in docstrings.
 +
 +2010-05-08  Juri Linkov  <juri@jurta.org>
 +
 +      * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
 +      property instead of `invisible' and `after-string' (bug#5998).
 +
 +2010-05-08  Juri Linkov  <juri@jurta.org>
 +
 +      * image-mode.el (image-mode-as-text): Fix typo in docstring.
 +
 +2010-05-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * filecache.el (file-cache-add-directory-list)
 +      (file-cache-add-directory-recursively): Fix typos in docstrings.
 +
 +2010-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/indian.el (gurmukhi-composable-pattern): Fix typo.
 +      (gujarati-composable-pattern): Fix typo.
 +
 +2010-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * language/indian.el (oriya-composable-pattern)
 +      (tamil-composable-pattern, malayalam-composable-pattern):
 +      Add two-part vowels to "v" (vowel sign).
 +
 +2010-05-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.el (copy-directory): Handle symlinks (Bug#5982).
 +
 +2010-05-08  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC.
 +      (vc-hg-working-revision): Likewise.  Use hg parents, not hg parent
 +      (Bug#5846).
 +
 +2010-05-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string.
 +
 +      * minibuffer.el (completion-at-point): Doc fix.
 +
 +2010-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * electric.el (Electric-command-loop): Minor tweak.
 +
 +      * ebuff-menu.el (electric-buffer-list): Try and make it behave a bit
 +      better with dedicated windows.
 +
 +2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 23.2 released.
 +
 +2010-05-07  Deniz Dogan  <deniz.a.m.dogan@gmail.com>  (tiny change)
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Highlight vendor specific properties.
 +      * textmodes/css-mode.el (css-proprietary-nmstart-re): New var.
 +      (css-proprietary-property): New face.
 +      (css-font-lock-keywords): Use them.
  
 -      * net/trampver.el: Update release number.
 +2010-05-07  Eli Zaretskii  <eliz@gnu.org>
  
 -2010-08-26  Magnus Henoch  <magnus.henoch@gmail.com>
 +      * cus-start.el (all): Add native condition for tool-bar-* symbols.
  
 -      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
 -      empty argument to gvfs-copy.
 +2010-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +      * textmodes/dns-mode.el (auto-mode-alist): Add entry for .zone files.
 +      * files.el (auto-mode-alist): Remove redundant entries.
  
 -      * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
 -      handle new TRASH arg of `delete-file'.
 +      * files.el (auto-save-mode): Move to simple.el to fix bootstrap.
 +      * simple.el (auto-save-mode): Move from files.el.
 +      * minibuffer.el (completion--common-suffix): Fix copy&paste error.
  
 -2010-08-26  Christian Lynbech  <christian.lynbech@tieto.com>  (tiny change)
 +2010-05-07  Christian von Roques  <roques@mti.ag>  (tiny change)
  
 -      * net/tramp.el (tramp-handle-insert-directory): Don't use
 -      `forward-word', its default syntax could be changed.
 +      * epg.el (epg-key-capablity-alist): Add "D" flag (Bug#5592).
  
 -2010-08-26  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
 +2010-05-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail/binhex.el (binhex-decode-region-internal)
 +      * mail/uudecode.el (uudecode-decode-region-internal)
 +      * net/dns.el (dns-read-string-name, dns-write, dns-read)
 +      (dns-read-type, dns-query)
 +      * pgg-parse.el (pgg-parse-armor)
 +      * pgg.el (pgg-verify-region)
 +      * sha1.el (sha1-string-external): Don't run set-buffer-multibyte for
 +      XEmacs.
 +
 +      * net/imap.el (imap-disable-multibyte): Redefine it as a macro.
 +
 +2010-05-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * progmodes/cperl-mode.el (cperl-mode-unload-function): New function.
 +
 +      Fix use of `filter-buffer-substring' (4th arg NOPROPS removed).
 +      * emulation/cua-base.el (cua-repeat-replace-region):
 +      * emulation/cua-gmrk.el (cua-copy-region-to-global-mark)
 +      (cua-cut-region-to-global-mark):
 +      Remove text properties with `set-text-properties'.
 +
 +2010-05-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (top, with-progress-reporter):
 +      Use `symbol-function' inside `funcall'.
 +
 +      * net/tramp-compat.el (tramp-compat-file-attributes)
 +      (tramp-compat-delete-file, tramp-compat-delete-directory):
 +      Handle only `wrong-number-of-arguments' error.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Fix typo.
 +      (tramp-gvfs-handle-file-selinux-context): Use `symbol-function'
 +      inside `funcall'.
 +
 +2010-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion--sreverse, completion--common-suffix):
 +      New functions.
 +      (completion-pcm--merge-completions): Extract common suffix when safe.
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode):
 +      Make :variable more flexible.
 +      * files.el (auto-save-mode): Use it to define using define-minor-mode.
 +
 +2010-05-05  Juri Linkov  <juri@jurta.org>
 +
 +      Add `slow' and `history' tags to the desktop data.
 +
 +      * info.el (Info-virtual-nodes) [*Index*]: Add `slow' tag.
 +      (Info-virtual-files) [*Apropos*]: Add `slow' tag.
 +      (Info-finder-find-node): Require `finder.el' to be able
 +      to restore node from the desktop.
 +      (Info-desktop-buffer-misc-data): Save all nodes.  Save additional
 +      data `Info-history' and `slow' tag in the assoc list.
 +      (Info-restore-desktop-buffer): Don't restore nodes with the
 +      `slow' tag.  Restore `Info-history'.
 +
 +2010-05-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Add FORCE argument to `delete-file'.
 +
 +      * net/ange-ftp.el (ange-ftp-del-tmp-name): Make it a defun,
 +      forcing to delete the temporary file.
 +      (ange-ftp-delete-file): Add FORCE arg.
 +      (ange-ftp-rename-remote-to-remote)
 +      (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local)
 +      (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress):
 +      Force file deletion.
 +
 +      * net/tramp-compat.el (tramp-compat-delete-file): New defun.
 +
 +      * net/tramp.el (tramp-handle-delete-file): Add FORCE arg.
 +      (tramp-handle-make-symbolic-link, tramp-handle-load)
 +      (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-process-file, tramp-handle-call-process-region)
 +      (tramp-handle-shell-command, tramp-handle-file-local-copy)
 +      (tramp-handle-insert-file-contents, tramp-handle-write-region)
 +      (tramp-delete-temp-file-function): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-fish.el (tramp-fish-handle-delete-file): Add FORCE arg.
 +      (tramp-fish-handle-make-symbolic-link)
 +      (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler):
 +      Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg.
 +      (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-imap.el (tramp-imap-handle-delete-file): Add FORCE arg.
 +      (tramp-imap-do-copy-or-rename-file): Use `tramp-compat-delete-file'.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-delete-file): Add FORCE arg.
 +      (tramp-smb-handle-copy-file, tramp-smb-handle-file-local-copy)
 +      (tramp-smb-handle-rename-file, tramp-smb-handle-write-region):
 +      Use `tramp-compat-delete-file'.
 +
 +2010-05-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Minor cleanups.
 +      * subr.el (add-minor-mode): Use push.
 +      * mail/supercite.el (sc-electric-mode): Use more descriptive arg name.
 +      * emulation/edt.el (edt-select-mode): Simplify.
 +
 +      Use define-minor-mode in more cases.
 +      * term/tvi970.el (tvi970-set-keypad-mode):
 +      * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode)
 +      (normal-erase-is-backspace-mode):
 +      * scroll-bar.el (scroll-bar-mode): Use it and define-minor-mode.
 +      (set-scroll-bar-mode-1): (Re)move to its sole caller.
 +      (get-scroll-bar-mode): New function.
 +      * emacs-lisp/cl-macs.el (eq): Handle a non-variable first arg.
 +
 +      Use define-minor-mode for less obvious cases.
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Add :variable keyword.
 +      * emacs-lisp/cl-macs.el (terminal-parameter, eq): Add setf method.
 +      * international/iso-ascii.el (iso-ascii-mode):
 +      * frame.el (auto-raise-mode, auto-lower-mode):
 +      * composite.el (global-auto-composition-mode): Use define-minor-mode.
 +
 +2010-05-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-methods): Remove "-q" from `tramp-login-args'
 +      in order to see error messages for failed logins.
 +
 +2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * diff.el (diff-sentinel):
 +
 +      * epg.el (epg--make-temp-file, epg-decrypt-string)
 +      (epg-verify-string, epg-sign-string, epg-encrypt-string):
 +
 +      * jka-compr.el (jka-compr-partial-uncompress)
 +      (jka-compr-call-process, jka-compr-write-region, jka-compr-load):
 +
 +      * server.el (server-sentinel): Use delete-file's new FORCE arg
 +      (Bug#6070).
 +
 +2010-05-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use define-minor-mode where applicable.
 +      * view.el (view-mode):
 +      * type-break.el (type-break-query-mode)
 +      (type-break-mode-line-message-mode):
 +      * textmodes/reftex.el (reftex-mode):
 +      * term/vt100.el (vt100-wide-mode):
 +      * tar-mode.el (tar-subfile-mode):
 +      * savehist.el (savehist-mode):
 +      * ibuf-ext.el (ibuffer-auto-mode):
 +      * composite.el (auto-composition-mode):
 +      * progmodes/vhdl-mode.el (vhdl-electric-mode, vhdl-stutter-mode):
 +      Use define-minor-mode.
 +      (vhdl-mode): Use static mode-line format.
 +      (vhdl-mode-line-update): Delete.
 +      (vhdl-create-mode-menu, vhdl-activate-customizations)
 +      (vhdl-hs-minor-mode): Don't bother calling it.
 +
 +2010-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (with-wrapper-hook): Move.
 +      (buffer-substring-filters): Mark obsolete.
 +      (filter-buffer-substring-functions): New variable.
 +      (filter-buffer-substring): Use it.  Remove unused arg `noprops'.
 +
 +2010-05-01  Toru TSUNEYOSHI  <t_tuneyosi@hotmail.com>
              Michael Albinus  <michael.albinus@gmx.de>
  
        Implement compression for inline methods.
        (tramp-handle-file-local-copy, tramp-handle-write-region)
        (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
  
 -2010-08-26  Noah Lavine  <noah549@gmail.com>  (tiny change)
 -
 -      Detect ssh 'ControlMaster' argument automatically in some cases.
 +2010-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 -      (tramp-default-method): Use it.
 +      * bindings.el (mode-line-abbrev-mode, mode-line-auto-fill-mode):
 +      Remove unused functions.
  
 -2010-08-26  Karel Klíč  <kklic@redhat.com>
 +      * emacs-lisp/lisp-mode.el (lisp-mode): Use define-derived-mode.
 +      Set find-tag-default-function as a variable rather than a property.
  
 -      * net/tramp.el (tramp-file-name-for-operation):
 -      Add file-selinux-context.
 +      * minibuffer.el (tags-completion-at-point-function): Move to etags.el.
 +      * progmodes/etags.el (tags-completion-at-point-function):
 +      Remove left over interactive spec.  Add autoloading stub.
 +      (complete-tag): Use tags-completion-at-point-function.
  
 -2010-08-26  Łukasz Stelmach  <lukasz.stelmach@iem.pw.edu.pl>  (tiny change)
 +2010-04-30  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
 +      * minibuffer.el (tags-completion-at-point-function): Fix return value.
  
 -2010-08-26  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * simple.el (beginning-of-buffer, end-of-buffer): Doc fix
 -      (Bug#6907).
 +      * ido.el (ido-init-completion-maps): Remove C-v binding.
 +      (ido-minibuffer-setup): Don't set cua-inhibit-cua-keys (Bug#5765).
  
 -2010-08-23  Chris Foote <chris@foote.com.au>  (tiny change)
 +2010-04-29  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * progmodes/python.el (python-block-pairs): Allow use of "finally"
 -      with "else" (Bug#3991).
 +      * minibuffer.el (tags-completion-at-point-function): New function.
 +      (completion-at-point-functions): Use it.
  
 -2010-08-22  Leo  <sdl.web@gmail.com>
 +      * progmodes/etags.el (complete-tag): Revert last change.
  
 -      * net/rcirc.el (rcirc-add-or-remove): Accept a list of elements.
 -      (ignore, bright, dim, keyword): Split list of nicknames before
 -      passing to rcirc-add-or-remove (Bug#6894).
 +2010-04-29  Alan Mackenzie  <acm@muc.de>
  
 -2010-08-22  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/cc-mode.el (c-extend-region-for-CPP): Fix an
 +      off-by-one error (in end of macro position).
  
 -      * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix (Bug#6880).
 +2010-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-08-21  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +      * net/browse-url.el (browse-url-firefox-program): Use iceweasel if
 +      firefox is absent.  Don't autoload.
 +      (browse-url-galeon-program): Don't autoload.
  
 -      * whitespace.el: Fix slow cursor movement (Bug#6172).  Reported by
 -      Christoph Groth <cwg@falma.de> and Liu Xin <x_liu@neusoft.com>.
 -      New version 13.0.
 -      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp):
 -      Adjust initialization.
 -      (whitespace-bob-marker, whitespace-eob-marker)
 -      (whitespace-buffer-changed): New vars.
 -      (whitespace-cleanup, whitespace-color-on, whitespace-color-off)
 -      (whitespace-empty-at-bob-regexp, whitespace-empty-at-eob-regexp)
 -      (whitespace-post-command-hook, whitespace-display-char-on):
 -      Adjust code.
 -      (whitespace-looking-back, whitespace-buffer-changed): New funs.
 -      (whitespace-space-regexp, whitespace-tab-regexp): Eliminate funs.
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-21  Leo  <sdl.web@gmail.com>
 +      * bindings.el (complete-symbol): Move into minibuffer.el.
  
 -      Fix buffer-list rename&refresh after killing a buffer in ido.
 -      * lisp/ido.el: Revert Óscar's.
 -      (ido-kill-buffer-at-head): Exit the minibuffer with ido-exit=refresh.
 -      Remember the buffers at head, rather than their name.
 -      * lisp/iswitchb.el (iswitchb-kill-buffer): Re-make the list.
 +      * minibuffer.el (complete-tag): Move from etags.el.  If tags
 +      completion cannot be performed, return nil instead of signalling
 +      an error.
 +      (completion-at-point): Make it an alias for complete-symbol.
 +      (complete-symbol): Move from bindings.el, and replace with the
 +      body of completion-at-point.
  
 -2010-08-21  Kirk Kelsey  <kirk.kelsey@0x4b.net>  (tiny change)
 -            Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/etags.el (complete-tag): Move to minibuffer.el.
  
 -      * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
 -      extra backslash added to each line (bug#6890).
 +2010-04-28  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-08-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-remote-selinux-p): New defun.
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context): Use it.
  
 -      * subr.el (read-key): Don't echo keystrokes (bug#6883).
 +2010-04-28  Sam Steingold  <sds@gnu.org>
  
 -2010-08-21  Glenn Morris  <rgm@gnu.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format): Mark as
 +      `safe-local-variable' if the value is a string or a symbol with
 +      the property `bug-reference-url-format'.
  
 -      * menu-bar.el (menu-bar-games-menu): Add landmark.
 +2010-04-28  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-08-20  Glenn Morris  <rgm@gnu.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format):
 +      Revert 2010-04-27 change due to security risk.
  
 -      * align.el (align-regexp): Make group and spacing arguments
 -      use the interactive defaults when non-interactive.  (Bug#6698)
 +2010-04-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * mail/rmail.el (rmail-forward): Replace mail-text-start with its
 -      expansion, so as not to need sendmail.
 -      (mail-text-start): Remove declaration.
 -      (rmail-retry-failure): Require sendmail.
 +      Make it possible to locally disable a globally enabled mode.
 +      * simple.el (fundamental-mode): Run fundamental-mode-hook.
 +      * emacs-lisp/derived.el (define-derived-mode): Use fundamental-mode
 +      rather than kill-all-local-variables so it runs fundamental-mode-hook.
 +      * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
 +      Use fundamental-mode-hook to run MODE-enable-in-buffers earlier, so
 +      that subsequent hooks get a chance to disable it.
  
 -2010-08-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * subr.el (read-key): Don't hide the menu-bar entries (bug#6881).
 +      * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
 +      Avoid re-enabling a minor mode after the user turned the minor mode
 +      off if MODE-enable-in-buffers is run twice (typically once from
 +      fundamental-mode's after-change-major-mode-hook and a second time from
 +      run-mode-hook's own after-change-major-mode-hook).
  
 -2010-08-18  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/lisp.el (lisp-complete-symbol): Fail gracefully.
  
 -      * progmodes/flymake.el (flymake-start-syntax-check-process):
 -      Use `start-file-process' in order to let it run also on remote hosts.
 +2010-04-27  Sam Steingold  <sds@gnu.org>
  
 -2010-08-18  Kenichi Handa  <handa@m17n.org>
 +      * progmodes/bug-reference.el (bug-reference-url-format): Mark as
 +      `safe-local-variable' if the value is a string or a function, as
 +      documented and implemented on 2010-04-02.
  
 -      * files.el: Add `word-wrap' as safe local variable.
 +2010-04-27  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-08-18  Glenn Morris  <rgm@gnu.org>
 +      * ido.el (ido-buffer-internal): Bind `ido-use-virtual-buffers' to nil
 +      when method is 'kill.
  
 -      * woman.el (woman-translate): Case matters.  (Bug#6849)
 +2010-04-27  Agustín Martín  <agustin.martin@hispalinux.es>
  
 -2010-08-14  Chong Yidong  <cyd@stupidchicken.com>
 +      * textmodes/ispell.el (ispell-init-process): Fix personal dictionary
 +      condition in default directory check.
 +      (ispell-init-process,ispell-kill-ispell,kill-buffer-hook):
 +      Kill ispell process when killing its associated buffer.
  
 -      * simple.el (kill-region): Doc fix (Bug#6787).
 +2010-04-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-08-14  Glenn Morris  <rgm@gnu.org>
 +      * desktop.el (desktop-kill): ask-if-new: Ask if desktop file exists,
 +      but we aren't using it.
  
 -      * calendar/diary-lib.el (diary-header-line-format):
 -      Fit it to the window, not the frame.
 +2010-04-25  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-08-11  Andreas Schwab  <schwab@linux-m68k.org>
 +      * tool-bar.el (tool-bar-local-item-from-menu): Revert unintended
 +      checkin in 2010-04-23T16:26:11Z!monnier@iro.umontreal.ca.
  
 -      * subr.el (ignore-errors): Add debug declaration.
 +2010-04-24  Glenn Morris  <rgm@gnu.org>
  
 -2010-08-09  Geoff Gole  <geoffgole@gmail.com>  (tiny change)
 +      * emacs-lisp/authors.el (authors-obsolete-files-regexps):
 +      Ignore VCS-ignore files, and deleted nextstep preferences files.
 +      (authors-ignored-files): Ignore deleted cedet test files, and "*.el".
 +      (authors-ambiguous-files): New list.
 +      (authors-valid-file-names): Add some deleted files.
 +      (authors-renamed-files-alist): Add font-setting.el, edt-user.doc.
 +      (authors-disambiguate-file-name): New function.  (Bug#5501)
 +      (authors-canonical-file-name): Doc fix.
 +      Don't warn about obsolete files.
 +      (authors-canonical-file-name, authors-scan-el):
 +      Use authors-disambiguate-file-name.
  
 -      * whitespace.el (whitespace-color-off): Remove post-command-hook
 -      locally.
 +      * hfy-cmap.el (htmlfontify-load-rgb-file, hfy-fallback-colour-values):
 +      Add autoload cookies.
 +      (htmlfontify-unload-rgb-file, hfy-fallback-colour-values): Add docs.
 +      (generated-autoload-file): Set file-local value to "htmlfontify.el".
 +      * htmlfontify.el (caddr, cadddr): Remove fallback definitions.
 +      They have definitions / compiler macros in cl.el.
 +      (htmlfontify-load-rgb-file, hfy-fallback-colour-values):
 +      Replace manual autoloads with generated ones.
 +      (htmlfontify-unload-rgb-file): Remove autoload.
 +      * Makefile.in (autoloads): Ensure htmlfontify.el is writable.
  
 -2010-08-08  Johan Bockgård  <bojohan@gnu.org>
 +2010-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * replace.el (replace-highlight): Bind isearch-forward and
 -      isearch-error, ensuring that highlighting is updated if the user
 -      switches the search direction (Bug#6808).
 +      * emacs-lisp/bytecomp.el (byte-compile-set-default): New function.
 +      (byte-compile-setq-default): Optimize for the
 +      single-var case and don't call byte-compile-form in this case to avoid
 +      inf-loop with byte-compile-set-default.
  
 -      * isearch.el (isearch-lazy-highlight-forward): New var.
 -      (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search):
 -      (isearch-lazy-highlight-update): Use it.
 +      * progmodes/compile.el (compilation-start): Abbreviate default directory.
  
 -2010-08-06  Kenichi Handa  <handa@m17n.org>
 +2010-04-23  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * international/mule.el (define-charset): Store NAME as :base property.
 -      (ctext-non-standard-encodings-table): Pay attention to charset aliases.
 -      (ctext-pre-write-conversion): Sort ctext-standard-encodings by the
 -      current priority.  Force using the designation of the specific
 -      charset by adding `charset' text property.  Improve the whole
 -      algorithm.
 +      Implement SELINUX backends.
  
 -2010-08-05  Juanma Barranquero  <lekktu@gmail.com>
 +      * net/tramp.el (tramp-file-name-handler-alist):
 +      Add `file-selinux-context' and `set-file-selinux-context'.
 +      (tramp-handle-file-selinux-context)
 +      (tramp-handle-set-file-selinux-context): New defuns.
 +      (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
 +      Handle PRESERVE-SELINUX-CONTEXT.
  
 -      * emulation/pc-select.el (pc-selection-mode-hook)
 -      (copy-region-as-kill-nomark, beginning-of-buffer-mark)
 -      (pc-selection-mode): Fix typos in docstrings.
 +      * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
 +      Add `file-selinux-context' and `set-file-selinux-context'.
 +      (tramp-gvfs-handle-file-selinux-context)
 +      (tramp-gvfs-handle-set-file-selinux-context): New defuns.
 +      (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
  
 -2010-08-04  Kenichi Handa  <handa@m17n.org>
 +      * net/ange-ftp.el (ange-ftp-copy-file):
 +      * net/tramp-fish.el (tramp-fish-handle-copy-file):
 +      * net/tramp-imap.el (tramp-imap-handle-copy-file):
 +      * net/tramp-smb.el (tramp-smb-handle-copy-file):
 +      Add PRESERVE-SELINUX-CONTEXT.
  
 -      * language/cyrillic.el: Don't add "microsoft-cp1251" to
 -      ctext-non-standard-encodings-alist here.
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * international/mule.el (ctext-non-standard-encodings-alist):
 -      Add "koi8-r" and "microsoft-cp1251".
 -      (ctext-standard-encodings): New variable.
 -      (ctext-non-standard-encodings-table): List only elements for
 -      non-standard encodings.
 -      (ctext-pre-write-conversion): Adjust for the above change.
 -      Check ctext-standard-encodings.
 +      Synchronize with Tramp repository.
  
 -      * international/mule-conf.el (compound-text): Doc fix.
 -      (ctext-no-compositions): Doc fix.
 -      (compound-text-with-extensions): Doc fix.
 +      * net/tramp.el (with-connection-property, tramp-completion-mode-p)
 +      (tramp-action-process-alive, tramp-action-out-of-band)
 +      (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
 +      (tramp-exists-file-name-handler): Fix docstring.
 +      (with-progress-reporter): New defmacro.
 +      (tramp-do-copy-or-rename-file, tramp-handle-dired-compress-file)
 +      (tramp-maybe-open-connection): Use it.
  
 -2010-08-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-22  Noah Lavine  <noah549@gmail.com>  (tiny change)
  
 -      * simple.el (exchange-dot-and-mark): Mark obsolete, finally.
 +      Detect ssh 'ControlMaster' argument automatically in some cases.
  
 -2010-08-03  Juanma Barranquero  <lekktu@gmail.com>
 +      * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
 +      (tramp-default-method): Use it.
  
 -      * progmodes/which-func.el (which-func-format): Split help-echo text
 -      into lines, like other mode-line tooltips.
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * server.el (server-start): When using TCP sockets, force IPv4
 -      and use a literal 127.0.0.1 for localhost.  (Related to bug#6781.)
 +      * net/tramp.el (tramp-handle-copy-file): Add new optional
 +      parameter `preserve-selinux-context'.
 +      (tramp-file-name-for-operation): Add `set-file-selinux-context'.
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-22  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * bindings.el (complete-symbol): Run completion-at-point as a fallback.
 +      * net/tramp.el (tramp-completion-handle-file-name-all-completions):
 +      Ensure, that non remote files are still checked.  Oops.
  
 -2010-08-02  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * term.el (term-delimiter-argument-list): Reflow docstring.
 -      (term-read-input-ring, term-write-input-ring, term-send-input)
 -      (term-bol, term-erase-in-display, serial-supported-or-barf):
 -      Fix typos in docstrings.
 +      Fix Bug#5840.
  
 -2010-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * icomplete.el (icomplete-completions): Use `non-essential'.
  
 -      * bindings.el (function-key-map): Add a S-tab => backtab fallback.
 +      * net/tramp.el (tramp-connectable-p): New defun.
 +      (tramp-handle-expand-file-name)
 +      (tramp-completion-handle-file-name-all-completions)
 +      (tramp-completion-handle-file-name-completion): Use it.
  
 -2010-08-01  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * dabbrev.el (dabbrev-completion): Fix typo in docstring.
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Try and handle errors.
  
 -2010-08-01  MON KEY  <monkey@sandpframing.com>  (tiny change)
 +2010-04-21  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos):
 -      Fix typo in docstring (bug#6747).
 +      * vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
  
 -2010-07-30  Leo  <sdl.web@gmail.com>
 +      * tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
  
 -      * eshell/esh-io.el (eshell-get-target): Better detection of
 -      read-only file (Bug#6762).
 +      * loadup.el: Load dynamic-setting.el if feature dynamic-setting
 +      is present.
  
 -2010-07-30  Juanma Barranquero  <lekktu@gmail.com>
 +      * info.el (info-tool-bar-map): Add labels.
  
 -      * align.el (align-default-spacing): Doc fix.
 -      (align-region-heuristic, align-regexp): Fix typos in docstrings.
 +      * cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
  
 -2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 +      * cus-edit.el (custom-commands): Add labels for tool bar.
 +      (custom-buffer-create-internal, Custom-mode): Adjust for
 +      labels in custom-commands.
  
 -      * help-fns.el (find-lisp-object-file-name): Doc fix (bug#6494).
 +      * dynamic-setting.el: Renamed from font-setting.el.
  
 -2010-07-19  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-21  John Wiegley  <jwiegley@gmail.com>
  
 -      * time.el (display-time-day-and-date): Remove spurious * in docstring.
 -      (display-time-world-buffer-name, display-time-world-mode-map):
 -      Fix typos in docstrings.
 +      * ido.el (ido-init-completion-maps): For ido-switch-buffer, C-o
 +      toggles the use of virtual buffers.
 +      (ido-buffer-internal): Guard `ido-use-virtual-buffers' global value.
 +      (ido-toggle-virtual-buffers): New function.
  
 -2010-07-17  Shyam Karanatt  <shyam@swathanthran.in>  (tiny change)
 +2010-04-21  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * image-mode.el (image-display-size): New function.
 -      (image-forward-hscroll, image-next-line, image-eol, image-eob)
 -      (image-mode-fit-frame): Use it (Bug#6639).
 +      Use `define-derived-mode'; fix window selection; doc fixes.
 +      * play/tetris.el (tetris, tetris-update-speed-function)
 +      (tetris-tty-colors, tetris-x-colors, tetris-move-bottom)
 +      (tetris-move-left, tetris-move-right, tetris-rotate-prev)
 +      (tetris-rotate-next, tetris-end-game, tetris-start-game)
 +      (tetris-pause-game): Fix typos in docstrings.
 +      (tetris-mode-map, tetris-null-map):
 +      Move initialization into declaration.
 +      (tetris-mode): Define with `define-derived-mode';
 +      set show-trailing-whitespace to nil.
 +      (tetris): Prefer window already displaying the "*Tetris*" buffer.
  
 -2010-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-21  Karel Klíč  <kklic@redhat.com>
  
 -      * dired.el (dired-buffers-for-dir): Handle list values of
 -      dired-directory (Bug#6636).
 +      * files.el (backup-buffer): Handle SELinux context, and return it
 +      if a backup was made by renaming.
 +      (backup-buffer-copy): Set SELinux context to the target file.
 +      (basic-save-buffer): Set SELinux context of the newly written file.
 +      (basic-save-buffer-1): Now it also returns any SELinux context.
 +      (basic-save-buffer-2): Set SELinux context of the newly created file,
 +      and return it.
 +      * net/tramp.el (tramp-file-name-for-operation):
 +      Add file-selinux-context.
  
 -2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
 +2010-04-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * vc.el (vc-coding-system-inherit-eol): New defvar.
 -      (vc-coding-system-for-diff): Use it to decide whether to inherit
 -      from the file the EOL format for reading the diffs of that file.
 -      (Bug#4451)
 +      Make the log-edit comments use RFC822 format throughout.
  
 -2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 +      * vc.el (vc-checkin, vc-modify-change-comment):
 +      Adjust to new vc-start/finish-logentry.
 +      (vc-find-conflicted-file): New command.
 +      (vc-transfer-file): Adjust to new vc-checkin.
 +      (vc-next-action): Improve scoping.
  
 -      * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
 -      unibyte, so compressed attachments are not compressed again.
 +      * vc-hg.el (vc-hg-log-edit-mode): Remove.
 +      (vc-hg-checkin): Remove extra arg.  Use log-edit-extract-headers.
  
 -2010-07-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      * vc-git.el (vc-git-log-edit-mode): Remove.
 +      (vc-git-checkin): Remove extra arg.  Use log-edit-extract-headers.
 +      (vc-git-commits-coding-system): Rename from git-commits-coding-system.
  
 -      * xt-mouse.el (xterm-mouse-event-read): Fix for characters > 127
 -      now that unicode is used (Bug#6594).
 +      * vc-dispatcher.el (vc-log-edit): Shorten names for log-edit-show-files.
 +      (vc-start-logentry): Remove argument `extra'.
 +      (vc-finish-logentry): Remove extra args.
  
 -2010-07-14  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-bzr.el (vc-bzr-log-edit-mode): Remove.
 +      (vc-bzr-checkin): Remove extra arg.  Use log-edit-extract-headers.
 +      (vc-bzr-conflicted-files): New function.
  
 -      * simple.el (push-mark-command): Set the selection if
 -      select-active-regions is non-nil.
 +      * log-edit.el (log-edit-extra-flags)
 +      (log-edit-before-checkin-process): Remove.
 +      (log-edit-summary, log-edit-header, log-edit-unknown-header): New faces.
 +      (log-edit-headers-alist): New var.
 +      (log-edit-header-contents-regexp): New const.
 +      (log-edit-match-to-eoh): New function.
 +      (log-edit-font-lock-keywords): Use them.
 +      (log-edit): Insert a "Summary:" header as default.
 +      (log-edit-mode): Mark font-lock rules as case-insensitive.
 +      (log-edit-done): Cleanup headers.
 +      (log-view-process-buffer): Remove.
 +      (log-edit-extract-headers): New function to replace it.
  
 -2010-07-10  Glenn Morris  <rgm@gnu.org>
 +2010-04-20  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * calendar/calendar.el (calendar-week-end-day): New function.
 -      * calendar/cal-tex.el (cal-tex-cursor-month): Remove unused vars.
 -      Respect calendar-week-start-day.  (Bug#6606)
 -      (cal-tex-insert-day-names, cal-tex-insert-blank-days)
 -      (cal-tex-insert-blank-days-at-end): Respect calendar-week-start-day.
 -      (cal-tex-first-blank-p, cal-tex-last-blank-p): Simplify, and
 -      respect calendar-week-start-day.
 +      * subr.el (default-direction-reversed): Remove obsolescence info.
  
 -2010-07-10  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-20  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * simple.el (use-region-p): Doc fix (Bug#6607).
 +      * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with the
 +      windows/frames.
  
 -2010-07-07  Christoph Scholtes  <cschol2112@gmail.com>
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Complete around point.
 +      I.e. include text after point in the completion region.
 +      Also, return nil when we're not after/in a symbol.
  
 -      * progmodes/python.el (python-font-lock-keywords): Add Python 2.7
 -      builtins (BufferError, BytesWarning, WindowsError; callables
 -      bin, bytearray, bytes, format, memoryview, next, print; __package__).
 +      * international/mule-cmds.el (view-hello-file): Don't fiddle with the
 +      default enable-multibyte-characters.
  
 -2010-07-07  Glenn Morris  <rgm@gnu.org>
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * play/zone.el (zone-fall-through-ws): Fix next-line ->
 -      forward-line fallout.
 +      * international/mule.el: Help the user choose a valid coding-system.
 +      (read-buffer-file-coding-system): New function.
 +      (set-buffer-file-coding-system): Use it.  Prompt the user if the
 +      coding-system cannot encode all the chars.
  
 -2010-07-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-bzr.el: Use standard *vc* and *vc-diff* buffers.
 +      (vc-bzr-shelve-show, vc-bzr-shelve-apply)
 +      (vc-bzr-shelve-apply-and-keep, vc-bzr-shelve-snapshot):
 +      Don't use *vc-bzr-shelve*.
  
 -      * mouse.el (mouse-appearance-menu): Add docstring.
 +2010-04-19  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * help.el (describe-key): Print up-event using key-description.
 +      Fix the version number for added files.
 +      * vc-hg.el (vc-hg-working-revision): Check if the file is
 +      registered after hg parent fails (Bug#5961).
  
 -2010-07-03  Michael Albinus  <michael.albinus@gmx.de>
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      * net/zeroconf.el (zeroconf-resolve-service)
 -      (zeroconf-service-resolver-handler): Use `dbus-byte-array-to-string'.
 -      (zeroconf-publish-service): Use `dbus-string-to-byte-array'.
 +      * htmlfontify.el (htmlfontify-buffer)
 +      (htmlfontify-copy-and-link-dir): Autoload entry points.
  
 -2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
 +2010-04-19  Magnus Henoch  <magnus.henoch@gmail.com>
  
 -      * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
 +      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 +      name relative to the project root (Bug#5960).
  
 -2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      Avoid displaying files with a nil state in vc-dir.
 -      * vc-dir.el (vc-dir-update): Obey the noinsert argument in all
 -      cases that cause insertion.
 -      (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files
 -      with a nil state.
 +      * vc-git.el (vc-git-print-log): Doc fix.
  
 -2010-06-30  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-19  Óscar Fuentes  <ofv@wanadoo.es>
  
 -      * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
 +      * ido.el (ido-file-internal): Fix 2009-12-02 change.
  
 -2010-06-29  Leo  <sdl.web@gmail.com>
 +2010-04-19  Christoph  <cschol2112@googlemail.com>  (tiny change)
  
 -      * emacs-lisp/rx.el (rx): Doc fix.  (Bug#6537)
 +      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 +      default settings (Bug#5928).
  
 -2010-06-27  Oleksandr Gavenko  <gavenkoa@gmail.com>  (tiny change)
 +2010-04-19  Glenn Morris  <rgm@gnu.org>
  
 -      * generic-x.el (bat-generic-mode): Fix regexp for command line
 -      switches (Bug#5719).
 +      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 +      New function.
 +      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
  
 -2010-06-27  Masatake YAMATO  <yamato@redhat.com>
 +2010-04-19  Kenichi Handa  <handa@m17n.org>
  
 -      * htmlfontify.el (hfy-face-attr-for-class): Use append instead
 -      of nconc to avoid pure storage error (Bug#6239).
 +      * language/indian.el (malayalam-composable-pattern): Fix previous
 +      change (add U+0D4D "SIGN VIRAMA").
 +      (oriya-composable-pattern): Add U+0B30 and fix typo in the regexp.
 +      (tamil-composable-pattern): Fix typo in the regexp.
 +      (telugu-composable-pattern): Fix U+0C4D and typo in the regexp.
 +      (kannada-composable-pattern): Fix U+0CB0 and typo in the regexp.
 +      (malayalam-composable-pattern): Fix U+0D4D and typo in the regexp.
  
 -2010-06-27  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * bookmark.el (bookmark-bmenu-2-window, bookmark-bmenu-other-window)
 -      (bookmark-bmenu-other-window-with-mouse): Remove unnecessary
 -      bindings of bookmark-automatically-show-annotations (Bug#6515).
 +      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 +      paragraph-separate (Bug#5821).
  
 -2010-06-25  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-19  Juri Linkov  <juri@jurta.org>
  
 -      * arc-mode.el (archive-zip-extract): Don't quote the file name on
 -      MS-Windows and MS-DOS.  (Bug#6467, Bug#6144)
 +      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
  
 -2010-06-24  Štěpán Němec  <stepnem@gmail.com>  (tiny change)
 +      * info.el (Info-find-node-2): Comment out code that skips
 +      breadcrumbs line.
 +      (Info-mouse-follow-link): New command.
 +      (Info-link-keymap): New keymap.
 +      (Info-breadcrumbs): Rename from `Info-insert-breadcrumbs'.
 +      Return a string with links instead of inserting breadcrumbs
 +      to the Info buffer.
 +      (Info-fontify-node): Comment out code that inserts breadcrumbs.
 +      Instead of putting the `invisible' text property over the Info
 +      header, make an overlay over the Info header with the `invisible'
 +      property and `after-string' set to the string returned by
 +      `Info-breadcrumbs'.
  
 -      * comint.el (make-comint, make-comint-in-buffer): Mention return
 -      value in the docstrings.  (Bug#6498)
 +2010-04-19  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-06-24  Yoni Rabkin  <yoni@rabkins.net>
 +      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 +      Reported by monkey@sandpframing.com.
  
 -      * bs.el (bs-mode-font-lock-keywords): Remove "by" from Dired pattern,
 -      since it is not present when using some non-default switches.
 +2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-23  Karl Fogel  <kfogel@red-bean.com>
 +      * tmm.el (tmm-prompt): Remove obsolete call to x-popup-menu.
 +      (tmm-get-keymap): Add key-binding shortcuts now that they're not
 +      available in the "keyseq cache" any more.
  
 -      * simple.el (compose-mail): Fix doc string to refer to
 -      `compose-mail-user-agent-warnings', instead of to the
 -      nonexistent `compose-mail-check-user-agent'.
 +      * custom.el (defcustom): Add edebug spec.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -      Fix vc-annotate for renamed files when using Git.
 -      * vc-git.el (vc-git-find-revision): Deal with empty results from
 -      ls-files.  Doe not pass the object as a file name to cat-file, it
 -      is not a file name.
 -      (vc-git-annotate-command): Pass the file name using -- to avoid
 -      ambiguity with the revision.
 -      (vc-git-previous-revision): Pass a relative file name.
 +      Test for special mode-class in view-buffer instead of view-file (bug#5513).
  
 -2010-06-22  Glenn Morris  <rgm@gnu.org>
 +      * view.el (view-file, view-buffer): Move test for special mode-class
 +      from view-file to view-buffer.
  
 -      * progmodes/js.el (js-mode-map): Use standard capitalization and
 -      ellipses for menu entries.
 +      * tar-mode.el (tar-extract): Turn if's into one cond
 +      like in arc-mode.el.
  
 -      * wid-edit.el (widget-complete): Doc fix.
 +2010-04-18  Juri Linkov  <juri@jurta.org>
  
 -2010-06-22  Jürgen Hötzel  <juergen@hoetzel.info>  (tiny change)
 +      Add 7z archive format support (bug#5475).
  
 -      * wid-edit.el (widget-complete): Fix typo in 2009-12-02 change.
 +      * arc-mode.el (archive-zip-extract): Try to find 7z executable.
 +      (archive-7z-extract): New defcustom.
 +      (archive-find-type): Add magic string for 7z.
 +      (archive-extract-by-stdout): Add new optional arg `stderr-file'.
 +      If `stderr-file' is non-nil, use `(t stderr-file)' for the
 +      `buffer' arg of `call-process'.
 +      (archive-zip-extract): Check `archive-zip-extract' for "7z" and
 +      call the function `archive-7z-extract' with the variable
 +      `archive-7z-extract' let-bound to `archive-zip-extract'.
 +      (archive-7z-summarize, archive-7z-extract): New functions.
  
 -2010-06-22  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * international/mule.el (auto-coding-alist):
 +      * files.el (auto-mode-alist): Add 7z file extension.
  
 -      Fix annotating other revisions for renamed files in vc-annotate.
 -      * vc-annotate.el (vc-annotate): Add an optional argument for the
 -      VC backend.  Use it when non-nil.
 -      (vc-annotate-warp-revision): Pass the VC backend to vc-annotate
 -      (Bug#6487).
 +2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Fix vc-annotate-show-changeset-diff-revision-at-line for git.
 -      * vc-annotate.el (vc-annotate-show-diff-revision-at-line-internal):
 -      Do not pass the file name to the 'previous-revision call when we
 -      don't want a file diff.  (Bug#6489)
 +      * loadup.el: Setup hash-cons for pure data.
  
 -2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +      Fix duplicate entries in cedet's loaddefs.el files.
 +      * emacs-lisp/autoload.el (autoload-file-load-name): Be more clever.
 +      Should make most file-local generated-autoload-file unnecessary.
 +      (print-readably): Silence warnings.
 +      (autoload-find-destination): Take load-name as an arg to make sure
 +      it's the same as the one that will be in the file.
 +      (autoload-generate-file-autoloads): Adjust to above changes.
 +      Try to make the dataflow a bit simpler.
  
 -      Fix finding revisions for renamed files in vc-annotate.
 -      * vc.el (vc-find-revision): Add an optional argument for
 -      the VC backend.  Use it when non-nil.
 -      * vc-annotate.el (vc-annotate-find-revision-at-line): Pass the VC
 -      backend to vc-find-revision.  (Bug#6487)
 +      * cvs-status.el (cvs-refontify): Remove unused.
  
 -2010-06-21  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-18  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -      Fix reading file names in Git annotate buffers.
 -      * vc-git.el (vc-git-annotate-extract-revision-at-line):
 -      Remove trailing whitespace.  Suggested by Eric Hanchrow.  (Bug#6481)
 +      * calc/calc.el (calc-mode-map): Bind "O" to `calc-missing-key'.
  
 -2010-06-20  Alan Mackenzie  <acm@muc.de>
 +      * calc/calc-bin.el (calc-radix): Have the "O" option turn on
 +      twos-complement mode.
  
 -      * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
 -      in file local variables, set it first.
 +2010-04-17  Jay Belanger  <jay.p.belanger@gmail.com>
  
 -2010-06-19  Glenn Morris  <rgm@gnu.org>
 +      * calc/calc-ext.el (calc-init-extensions): Add keybinding for
 +      'calc-option'.  Add `calc-option-prefix-help' to calc-help autoloads.
 +      (calc-inverse): Add "Option" to message, as appropriate.
 +      (calc-hyperbolic): Add "Option" to message, as appropriate.
 +      (calc-option, calc-is-option): New functions.
  
 -      * descr-text.el (describe-char-unicode-data): Insert separating
 -      space when needed.  (Bug#6422)
 +      * calc/calc-help.el (calc-full-help): Add `calc-option-help'.
 +      (calc-option-prefix-help): New function.
  
 -      * progmodes/idlwave.el (idlwave-action-and-binding):
 -      Fix typo in 2009-12-03 change.  (Bug#6450)
 +      * calc/calc-misc.el (calc-help): Add "Option" entry.
  
 -2010-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * calc/calc.el (calc-local-var-list): Add `calc-option-flag'.
 +      (calc-option-flag): New variable.
 +      (calc-do): Set `calc-option-flag to nil.
 +      (calc-set-mode-line): Add "Opt " as appropriate.
  
 -      * subr.el (read-quoted-char): Fix up last change (bug#6290).
 +2010-04-16  Juri Linkov  <juri@jurta.org>
  
 -2010-06-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Move scrolling commands from simple.el to window.el
 +      because their primitives are implemented in window.c.
  
 -      * font-lock.el (font-lock-major-mode): Rename from
 -      font-lock-mode-major-mode to distinguish it from
 -      global-font-lock-mode's own font-lock-mode-major-mode (bug#6135).
 -      (font-lock-set-defaults):
 -      * font-core.el (font-lock-default-function): Adjust users.
 -      (font-lock-mode): Don't set it at all.
 +      * simple.el (scroll-error-top-bottom)
 +      (scroll-up-command, scroll-down-command, scroll-up-line)
 +      (scroll-down-line, scroll-other-window-down)
 +      (beginning-of-buffer-other-window, end-of-buffer-other-window):
 +      * window.el (scroll-error-top-bottom)
 +      (scroll-up-command, scroll-down-command, scroll-up-line)
 +      (scroll-down-line, scroll-other-window-down)
 +      (beginning-of-buffer-other-window, end-of-buffer-other-window):
 +      Move from simple.el to window.el because their primitives are
 +      implemented in window.c.
  
 -2010-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-16  Juri Linkov  <juri@jurta.org>
  
 -      * vc-annotate.el (vc-annotate): Use vc-read-revision.
 +      * isearch.el (isearch-lookup-scroll-key): Check both
 +      `isearch-scroll' and `scroll-command' properties.
 +      (scroll-up, scroll-down): Remove `isearch-scroll' property.
  
 -2010-06-15  Glenn Morris  <rgm@gnu.org>
 +      * mwheel.el (mwheel-scroll): Remove `isearch-scroll' property.
  
 -      * calendar/appt.el (appt-time-msg-list): Doc fix.
 -      (appt-check): Let-bind appt-warn-time.
 -      (appt-add): Make the 3rd argument optional.
 -      Simplify argument names.  Doc fix.  Check for integer WARNTIME.
 -      Only add WARNTIME to the output list if non-nil.
 +      * simple.el (scroll-up-command, scroll-down-command)
 +      (scroll-up-line, scroll-down-line): Remove `isearch-scroll' property.
  
 -2010-06-15  Ivan Kanis  <apple@kanis.eu>
 +2010-04-15  Juri Linkov  <juri@jurta.org>
  
 -      * calendar/appt.el (appt-check): Let the 3rd element of
 -      appt-time-msg-list specify the warning time.
 -      (appt-add): Add new argument with the warning time.  (Bug#5176)
 +      * simple.el (scroll-up-command, scroll-down-command)
 +      (scroll-up-line, scroll-down-line): Put `scroll-command'
 +      property on the these symbols.  Remove them from
 +      `scroll-preserve-screen-position-commands'.
  
 -2010-06-12  Bob Rogers  <rogers-emacs@rgrjr.dyndns.org>  (tiny change)
 +      * mwheel.el (mwheel-scroll): Put `scroll-command' and
 +      `isearch-scroll' properties on the `mwheel-scroll' symbol.
 +      Remove it from `scroll-preserve-screen-position-commands'.
  
 -      * vc-svn.el (vc-svn-after-dir-status): Fix regexp for Subversions
 -      older than version 1.6.  (Bug#6361)
 +      * isearch.el (isearch-allow-scroll): Doc fix.
  
 -2010-06-12  Helmut Eller  <eller.helmut@gmail.com>
 +2010-04-15  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * emacs-lisp/cl-macs.el (destructuring-bind): Bind `bind-enquote',
 -      used by cl-do-arglist.  (Bug#6408)
 +      * net/tramp.el (tramp-error-with-buffer): Don't show the
 +      connection buffer when we are in completion mode.
 +      (tramp-file-name-handler): Catch the error for some operations
 +      when we are in completion mode.  This gives the user the chance to
 +      correct the file name in the minibuffer.
  
 -2010-06-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-15  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/advice.el (ad-compile-function):
 -      Define warning-suppress-types before we let-bind it (bug#6275).
 +      * progmodes/verilog-mode.el (verilog-forward-sexp): Avoid free variable.
  
 -      * vc-dispatcher.el: Rename mode-line-hook to vc-mode-line-hook;
 -      declare it, make it buffer-local and permanent-local (bug#6324).
 -      (vc-resynch-window): Adjust name.
 -      * vc-hooks.el (vc-find-file-hook): Adjust name.
 +2010-04-15  Juanma Barranquero  <lekktu@gmail.com>
  
 -2010-06-07  Jonathan Rockway  <jon@jrock.us>
 +      Simplify by using `define-derived-mode'.
 +      * info.el (Info-mode):
 +      * calendar/todo-mode.el (todo-mode):
 +      * play/gomoku.el (gomoku-mode): Define with `define-derived-mode'.
 +      (gomoku-mode-map): Move initialization into declaration.
  
 -      * net/rcirc.el: Add support for password authentication.
 -      (rcirc-server-alist): Add :password keyword.
 -      (rcirc): Ask for a password, or get it from the server's alist.
 -      (rcirc-connect): Add password argument.  Pass it to server.
 +2010-04-14  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-06-05  Juanma Barranquero  <lekktu@gmail.com>
 +      Fix Bug#5840.
 +      * ido.el (ido-file-name-all-completions-1):
 +      * minibuffer.el (minibuffer-completion-help):
 +      * net/tramp.el (tramp-completion-mode-p): Use `non-essential'.
  
 -      * net/dbus.el (dbus-register-method): Declare function.
 -      (dbus-handle-event, dbus-property-handler): Fix typos in docstrings.
 -      (dbus-introspect): Doc fix.
 -      (dbus-event-bus-name, dbus-introspect-get-interface)
 -      (dbus-introspect-get-argument): Reflow docstrings.
 +2010-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-06-04  Chong Yidong  <cyd@stupidchicken.com>
 +      * simple.el (non-essential): New var.
  
 -      * term/common-win.el (x-colors): Add "dark green" and "dark
 -      turquoise" (Bug#6332).
 +      Add a new field `location' to bookmarks for non-file bookmarks.
 +      * bookmark.el (bookmark-location): Use the new field, if present.
 +      (bookmark-insert-location): Undo last change, not needed any more.
 +      * man.el (Man-bookmark-make-record):
 +      * woman.el (woman-bookmark-make-record): Add `location' field.
  
 -2010-06-03  Glenn Morris  <rgm@gnu.org>
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -      * desktop.el (desktop-clear-preserve-buffers):
 -      Add "*Warnings*" buffer.  (Bug#6336)
 +      * simple.el (scroll-error-top-bottom): New defcustom.
 +      (scroll-up-command, scroll-down-command): Use it.  Doc fix.
  
 -2010-06-02  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * emulation/pc-select.el (pc-select-override-scroll-error):
 +      Obsolete in favor of `scroll-error-top-bottom'.
  
 -      * vc-dir.el (vc-dir-update): Remove entries with a nil state (bug#5539).
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -2010-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * tutorial.el (tutorial--default-keys): Rebind `C-v' to
 +      `scroll-up-command' and `M-v' to `scroll-down-command'.
  
 -      * vc-bzr.el (vc-bzr-revision-completion-table): Apply
 -      `file-directory-p' to the filename part rather than to the whole text.
 +      * emulation/cua-rect.el (cua--init-rectangles):
 +      * forms.el (forms--change-commands):
 +      * image-mode.el (image-mode-map):
 +      Remap scroll-down-command and scroll-up-command
 +      in addition to scroll-down and scroll-up.
  
 -2010-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-04-14  Juri Linkov  <juri@jurta.org>
  
 -      * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
 +      * mwheel.el (scroll-preserve-screen-position-commands):
 +      Add mwheel-scroll to this list of commands.
  
 -2010-05-31  Drew Adams  <drew.adams@oracle.com>
 +      * simple.el (scroll-preserve-screen-position-commands):
 +      Add scroll-up-command, scroll-down-command, scroll-up-line,
 +      scroll-down-line to this list of commands.
  
 -      * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
 +2010-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-05-31  Juanma Barranquero  <lekktu@gmail.com>
 +      * obsolete/complete.el: Move from lisp/complete.el.
  
 -      * subr.el (momentary-string-display): Just use read-event to read
 -      the exit event (Bug#6238).
 +      * pcomplete.el (pcomplete-here*): Fix mistaken change (bug#5935).
  
 -2010-05-29  Chong Yidong  <cyd@stupidchicken.com>
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Passing a nil argument
 +      to the minor mode function now turns the mode ON unconditionally.
  
 -      * ansi-color.el: Delete unused escape sequences (Bug#6085).
 -      (ansi-color-drop-regexp): New constant.
 -      (ansi-color-apply, ansi-color-filter-region)
 -      (ansi-color-apply-on-region): Delete unrecognized control sequences.
 -      (ansi-color-apply): Build string list before calling concat.
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2010-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +      * vc-dir.el (vc-dir-kill-line): New command.
 +      (vc-dir-mode-map): Bind it to C-k.
  
 -      * progmodes/verilog-mode.el (verilog-type-font-keywords):
 -      Use font-lock-constant-face, not obsolete font-lock-reference-face.
 +      * bookmark.el (bookmark-insert-location): Handle a nil filename.
 +
 +      * woman.el: Add bookmark declarations to silence the compiler.
 +      (bookmark-prop-get): Use `man-args' rather than `filename' as a first
 +      step to compatibility between man and woman bookmarks.
 +      Adjust for Man-default-bookmark-title renaming.
 +      (woman-bookmark-jump): Adjust accordingly.  Don't forget to autoload.
 +
 +      * man.el: Add bookmark declarations to silence the compiler.
 +      (Man-name-local-regexp): Make it match NAME as well.
 +      (Man-getpage-in-background): Return the buffer.
 +      (Man-notify-when-ready): Use `case'.
 +      (man-set-default-bookmark-title): Rename to Man-default-bookmark-title.
 +      Don't hardcode "NAME".  Simplify.
 +      (Man-bookmark-make-record): Use Man-arguments rather than buffer-name.
 +      Rename from Man-bookmark-make-record.
 +      (Man-bookmark-jump): Rename from man-bookmark-jump.  Simplify now that
 +      we have the actual man-args.  Use Man-getpage-in-background rather
 +      than `man' since the arg is already processed.  Let bookmark.el do the
 +      window handling.  Only wait for the relevant process.
 +      Don't forget to autoload.
 +
 +      * bookmark.el (bookmark-default-file): Use locate-user-emacs-file.
 +
 +2010-04-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * woman.el (woman-bookmark-make-record, woman-bookmark-jump):
 +      New functions.
 +      (woman-mode): Setup bookmark support.
  
 -2010-05-27  Masatake YAMATO  <yamato@redhat.com>
 +      * man.el (man-set-default-bookmark-title, man-bookmark-make-record)
 +      (man-bookmark-jump): New functions.
 +      (Man-mode): Setup bookmark support.
  
 -      * htmlfontify.el (hfy-face-resolve-face): New function.
 -      (hfy-face-to-style): Use it (Bug#6279).
 +2010-04-10  Jari Aalto  <jari.aalto@cante.net>
  
 -2010-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * comint.el (comint-password-prompt-regexp): Use regexp-opt, and
 +      recognize ssh-keygen prompt (Bug#2817).
  
 -      * epa.el (epa--select-keys): Don't explicitly delete the window since
 -      that can fail (e.g. sole window in frame).  Use dedication instead.
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-19  Uday S Reddy  <u.s.reddy@cs.bham.ac.uk>  (tiny change)
 +      * net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
  
 -      * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
 +2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
  
 -2010-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Synchronize with Tramp repository.
  
 -      * subr.el (read-quoted-char): Resolve modifiers after key
 -      remapping (bug#6212).
 +      * net/tramp.el (tramp-completion-function-alist)
 +      (tramp-file-name-regexp, tramp-chunksize)
 +      (tramp-local-coding-commands, tramp-remote-coding-commands):
 +      Fix docstring.
 +      (tramp-remote-process-environment): Use `format' instead of `concat'.
 +      (tramp-handle-directory-files-and-attributes)
 +      (tramp-get-remote-path): Use `copy-tree'.
 +      (tramp-handle-file-name-all-completions): Backward/ XEmacs
 +      compatibility: Use `completion-ignore-case' if
 +      `read-file-name-completion-ignore-case' does not exist.
 +      (tramp-do-copy-or-rename-file-directly): Do not use
 +      `tramp-handle-file-remote-p'.
 +      (tramp-do-copy-or-rename-file-out-of-band):
 +      Use `tramp-compat-delete-directory'.
 +      (tramp-do-copy-or-rename-file-out-of-band)
 +      (tramp-compute-multi-hops, tramp-maybe-open-connection):
 +      Use `format-spec-make'.
 +      (tramp-find-foreign-file-name-handler)
 +      (tramp-advice-make-auto-save-file-name)
 +      (tramp-set-auto-save-file-modes): Remove superfluous check for
 +      `stringp'.  This is done inside `tramp-tramp-file-p'.
 +      (tramp-debug-outline-regexp): New defconst.
 +      (tramp-get-debug-buffer): Use it.
 +      (tramp-check-for-regexp): Use (forward-line 1).
 +      (tramp-set-auto-save-file-modes): Adapt version check.
  
 -2010-05-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp-compat.el (tramp-advice-file-expand-wildcards):
 +      Wrap call of `featurep' for 2nd argument.
 +      (tramp-compat-make-temp-file): Simplify fallback implementation.
 +      (tramp-compat-copy-tree): Remove function.
 +      (tramp-compat-delete-directory): Provide implementation for older
 +      Emacsen.
  
 -      * tmm.el (tmm-prompt): Don't try to precompute bindings.
 -      (tmm-get-keymap): Compute shortcuts (bug#6171).
 +      * net/tramp-fish.el (tramp-fish-handle-directory-files-and-attributes):
 +      Do not use `tramp-fish-handle-file-attributes.
  
 -2010-05-10  Glenn Morris  <rgm@gnu.org>
 +      * net/trampver.el: Update release number.
  
 -      * desktop.el (desktop-save-buffer-p): Don't mistakenly include
 -      all dired buffers, even tramp ones.  (Bug#5755)  [Backport from trunk]
 +2010-04-10  Glenn Morris  <rgm@gnu.org>
  
 -2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Add missing :version tag.
  
 -      * Version 23.2 released.
 +2010-04-09  Sam Steingold  <sds@gnu.org>
  
 -2010-05-03  Chong Yidong  <cyd@stupidchicken.com>
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      Remove the "autoload" cookie.
  
 -      * international/mule.el (auto-coding-alist): Only purecopy
 -      car of each item, not the whole list (Bug#6083).
 +      * progmodes/bug-reference.el (turn-on-bug-reference-mode)
 +      (turn-on-bug-reference-prog-mode): Remove, `bug-reference-mode'
 +      and `bug-reference-prog-mode' can be used in hooks directly.
  
 -2010-05-02  Chong Yidong  <cyd@stupidchicken.com>
 +2010-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * progmodes/js.el (js-mode): Make paragraph variables local before
 -      calling c-setup-paragraph-variables (Bug#6071).
 +      Add --author support to git commit.
 +      * vc-git.el (vc-git-checkin): Pass extra-args to the commit command.
 +      (vc-git-log-edit-mode): New minor mode.
 +      (log-edit-mode, log-edit-extra-flags, log-edit-mode):
 +      New declarations.
  
 -2010-05-01  Eli Zaretskii  <eliz@gnu.org>
 +2010-04-09  Eric Raymond  <esr@snark.thyrsus.com>
  
 -      * composite.el (compose-region, reference-point-alist): Fix typos
 -      in the doc strings.
 +      * vc-hooks.el, vc-git.el: Improve documentation comments.
  
 -2010-04-28  Alexander Klimov  <alserkli@inbox.ru>  (tiny change)
 +2010-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * calc/calc-graph.el (calc-graph-plot): Use the proper form for
 -      gnuplot's "set" command.
 +      Fix some of the problems in defsubst* (bug#5728).
 +      * emacs-lisp/cl-macs.el (defsubst*): Don't substitute non-trivial args.
 +      (cl-defsubst-expand): Do the substitutions simultaneously (bug#5728).
  
 -2010-04-26  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Sam Steingold  <sds@gnu.org>
  
 -      * abbrev.el (last-abbrev-text): Doc fix.
 -      (abbrev-prefix-mark): Don't escape parenthesis.
 +      * progmodes/compile.el (compilation-save-buffers-predicate):
 +      New custom variable.
 +      (compile, recompile): Pass it to `save-some-buffers'.
  
 -2010-04-24  Andreas Schwab  <schwab@linux-m68k.org>
 +2010-04-07  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * composite.el (find-composition): Doc fix.
 +      * wid-edit.el (widget-choose): Move cursor to the second line of
 +      the buffer (Bug#5695).
  
 -2010-04-24  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * progmodes/sql.el (sql-electric-stuff): Fix typo in tag.
 -      (sql-oracle-program, sql-sqlite-options)
 -      (sql-query-placeholders-and-send): Doc fixes.
 -      (sql-set-product, sql-interactive-mode): Reflow docstrings.
 -      (sql-imenu-generic-expression, sql-buffer)
 -      (sql-mode-ansi-font-lock-keywords, sql-mode-oracle-font-lock-keywords)
 -      (sql-mode-postgres-font-lock-keywords, sql-mode-ms-font-lock-keywords)
 -      (sql-mode-sybase-font-lock-keywords)
 -      (sql-mode-informix-font-lock-keywords)
 -      (sql-mode-interbase-font-lock-keywords)
 -      (sql-mode-ingres-font-lock-keywords, sql-mode-solid-font-lock-keywords)
 -      (sql-mode-mysql-font-lock-keywords, sql-mode-sqlite-font-lock-keywords)
 -      (sql-mode-db2-font-lock-keywords, sql-mode-font-lock-keywords)
 -      (sql-product-feature, sql-highlight-product)
 -      (comint-line-beginning-position, sql-rename-buffer)
 -      (sql-toggle-pop-to-buffer-after-send-region)
 -      (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql, sql-solid)
 -      (sql-ingres, sql-ms, sql-postgres, sql-interbase, sql-db2, sql-linter):
 -      Fix typos in docstrings.
 +      Add new VC methods: vc-log-incoming and vc-log-outgoing.
 +      * vc.el (vc-print-log-setup-buttons): New function split out from
 +      vc-print-log-internal.
 +      (vc-log-internal-common): New function, a parametrized version of
 +      vc-print-log-internal.
 +      (vc-print-log-internal): Just call vc-log-internal-common with the
 +      right arguments.
 +      (vc-incoming-outgoing-internal):
 +      (vc-log-incoming, vc-log-outgoing): New functions.
 +      (vc-log-view-type): New permanent local variable.
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing.
  
 -      * info.el (Info-fontify-node): Put Info-breadcrumbs to the `display'
 -      property instead of `invisible' and `after-string' (bug#5998).
 +      * vc-bzr.el (vc-bzr-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.
 +      (vc-bzr-log-incoming, vc-bzr-log-outgoing): New functions.
  
 -2010-04-23  Juri Linkov  <juri@jurta.org>
 +      * vc-git.el (vc-git-log-outgoing): New function.
 +      (vc-git-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.
  
 -      * image-mode.el (image-mode-as-text): Fix typo in docstring.
 +      * vc-hg.el (vc-hg-log-view-mode): Use vc-log-view-type instead
 +      of the dynamic bound vc-short-log.  Highlight the tag.
 +      (vc-hg-log-incoming, vc-hg-log-outgoing): New functions.
 +      (vc-hg-outgoing, vc-hg-incoming, vc-hg-outgoing-mode):
 +      (vc-hg-incoming-mode): Remove.
 +      (vc-hg-extra-menu-map): Do not bind vc-hg-incoming and vc-hg-outgoing.
  
 -2010-04-23  Juanma Barranquero  <lekktu@gmail.com>
 +2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
  
 -      * filecache.el (file-cache-add-directory-list)
 -      (file-cache-add-directory-recursively): Fix typos in docstrings.
 +      Fix default-directory for vc-root-diff.
 +      * vc.el (vc-root-diff): Bind default-directory to the root
 +      directory for the diff command.
  
 -2010-04-22  Kenichi Handa  <handa@m17n.org>
 +2010-04-07  Michael McNamara  <mac@mail.brushroad.com>
 +
 +      * progmodes/verilog-mode.el (verilog-forward-sexp):
 +      (verilog-calc-1): Support "disable fork" and "fork wait" multi
 +      word keywords, suggested by Steve Pearlmutter.
 +      (verilog-pretty-declarations): Support lineup of declarations in
 +      port lists.
 +      (verilog-skip-backward-comments, verilog-skip-forward-comment-p):
 +      fix bug for /* / comments.
 +      (verilog-backward-syntactic-ws, verilog-forward-syntactic-ws):
 +      Speed up and simplfy as this is never called with a bound.
 +      (verilog-pretty-declarations): Enhance to line up declarations
 +      inside a parameter list, suggested by Alan Morgan.
 +      (verilog-pretty-expr): Tune assignment regular expression match
 +      string for corner cases; also use markers instead of character
 +      number as indent changes the later.
 +
 +2010-04-07  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      * progmodes/verilog-mode.el (verilog-type-keywords): Fix pulldown
 +      as missing keyword.
 +      (verilog-read-sub-decls-line): Fix comments in AUTO_TEMPLATE
 +      causing truncation of AUTOWIRE signals.  Reported by Bruce Tennant.
 +      (verilog-auto-inst, verilog-auto-inst-port): Add vl_mbits for
 +      AUTO_TEMPLATEs needing multiple array bits.  Suggested by Bruce
 +      Tennant.
 +      (verilog-keywords):
 +      (verilog-1800-2005-keywords, verilog-1800-2009-keywords): Add IEEE
 +      1800-2009 keywords, including "global.".
 +
 +2010-04-06  John Wiegley  <jwiegley@gmail.com>
 +
 +      * ido.el (ido-add-virtual-buffers-to-list): Fix duplicated names
 +      appearing in buffer list (if a live buffer name matched a recentf
 +      file basename).  Should use uniquify to offer a real solution.
 +
 +2010-04-06  John Wiegley  <jwiegley@gmail.com>
 +
 +      * ido.el (ido-use-virtual-buffers, ido-virtual): Move a ChangeLog
 +      comment to code, and add a :version tag.
 +      (ido-virtual-buffers): Move defvar to fix byte-compiler warning.
 +
 +2010-04-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      Enable recentf-mode if using virtual buffers.
 +      * ido.el (recentf-list): Declare for byte-compiler.
 +      (ido-virtual-buffers): Move up to silence byte-compiler.  Add docstring.
 +      (ido-make-buffer-list): Simplify.
 +      (ido-add-virtual-buffers-to-list): Simplify.  Enable recentf-mode.
  
 -      * language/indian.el (gurmukhi-composable-pattern): Fix typo.
 -      (gujarati-composable-pattern): Fix typo.
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -2010-04-20  Kenichi Handa  <handa@m17n.org>
 +      Scrolling commands which scroll a line instead of full screen.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -      * language/indian.el (oriya-composable-pattern)
 -      (tamil-composable-pattern, malayalam-composable-pattern):
 -      Add two-part vowels to "v" (vowel sign).
 +      * simple.el (scroll-up-line, scroll-down-line): New commands.
 +      Put property isearch-scroll=t on them.
  
 -2010-04-20  Chong Yidong  <cyd@stupidchicken.com>
 +      * emulation/ws-mode.el (scroll-down-line, scroll-up-line):
 +      Remove commands.
  
 -      * files.el (copy-directory): Handle symlinks (Bug#5982).
 +2010-04-05  Juri Linkov  <juri@jurta.org>
  
 -      * progmodes/compile.el (compilation-next-error-function):
 -      Revert 2009-10-12 change (Bug#5983).
 +      Scrolling commands which do not signal errors at top/bottom.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01452.html
  
 -2010-04-20  Dan Nicolaescu  <dann@ics.uci.edu>
 +      * simple.el (scroll-up-command, scroll-down-command): New commands.
 +      Put property isearch-scroll=t on them.
  
 -      * vc-hg.el (vc-hg-state): Use HGRCPATH, not HGRC.
 -      (vc-hg-working-revision): Likewise.  Use hg parents, not hg parent
 -      (Bug#5846).
 +      * bindings.el (global-map): Rebind [prior] from `scroll-down' to
 +      `scroll-down-command' and [next] from `scroll-up' to
 +      `scroll-up-command'.
  
 -2010-04-20  Glenn Morris  <rgm@gnu.org>
 +      * emulation/cua-base.el: Put property CUA=move on
 +      `scroll-up-command' and `scroll-down-command'.
 +      (cua--init-keymaps): Remap `scroll-up-command' to `cua-scroll-up'
 +      and `scroll-down-command' to `cua-scroll-down'.
  
 -      * emacs-lisp/lisp.el (lisp-completion-at-point): Give it a doc string.
 +2010-04-05  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * minibuffer.el (completion-at-point): Doc fix.
 +      * help.el (describe-mode): Return nil.
  
 -2010-04-17  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-04-04  John Wiegley  <jwiegley@gmail.com>
  
 -      Fix the version number for added files.
 -      * vc-hg.el (vc-hg-working-revision): Check if the file is
 -      registered after hg parent fails (Bug#5961).
 +      * ido.el (ido-use-virtual-buffers): New variable to indicate
 +      whether "virtual buffer" support is enabled for IDO.
 +      (ido-virtual): Face used to indicate virtual buffers in the list.
 +      (ido-buffer-internal): If a buffer is chosen, and no such buffer
 +      exists, but a virtual buffer of that name does (which would be why
 +      it was in the list), recreate the buffer by reopening the file.
 +      (ido-make-buffer-list): If virtual buffers are being used, call
 +      `ido-add-virtual-buffers-to-list' before the make list hook.
 +      (ido-virtual-buffers): New variable which contains a copy of the
 +      current contents of the `recentf-list', albeit pared down for the
 +      sake of speed, and with proper faces applied.
 +      (ido-add-virtual-buffers-to-list): Using the `recentf-list',
 +      create a list of "virtual buffers" to present to the user in
 +      addition to the currently open set.  Note that this logic could
 +      get rather slow if that list is too large.  With the default
 +      `recentf-max-saved-items' of 200, there is little speed penalty.
  
 -2010-04-17  Glenn Morris  <rgm@gnu.org>
 +2010-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * htmlfontify.el (htmlfontify-buffer)
 -      (htmlfontify-copy-and-link-dir): Autoload entry points.
 +      * font-lock.el: Require CL when compiling.
 +      (font-lock-turn-on-thing-lock): Use `case'.
  
 -2010-04-17  Magnus Henoch  <magnus.henoch@gmail.com>
 +2010-04-03  Eli Zaretskii  <eliz@gnu.org>
  
 -      * vc-hg.el (vc-hg-annotate-extract-revision-at-line): Expand file
 -      name relative to the project root (Bug#5960).
 +      * emacs-lisp/authors.el (authors-fixed-entries): Add entry for Eli
 +      Zaretskii.
  
 -2010-04-16  Glenn Morris  <rgm@gnu.org>
 +2010-04-02  Juri Linkov  <juri@jurta.org>
  
 -      * vc-git.el (vc-git-print-log): Doc fix.
 +      * ehelp.el (electric-help-orig-major-mode):
 +      New buffer-local variable.
 +      (electric-help-mode): Set it to original major-mode.  Doc fix.
 +      (with-electric-help): Use `electric-help-orig-major-mode' instead
 +      of (default-value 'major-mode).  Doc fix.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00069.html
  
 -2010-04-14  Óscar Fuentes  <ofv@wanadoo.es>
 +2010-04-02  Sam Steingold  <sds@gnu.org>
  
 -      * ido.el (ido-file-internal): Fix 2009-12-02 change.
 +      * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling
 +      `vc-hg-command' with a list of flags.
  
 -2010-04-14  Christoph  <cschol2112@googlemail.com>  (tiny change)
 +      * progmodes/bug-reference.el (bug-reference-bug-regexp):
 +      Also accept "patch" and "RFE".
 +      (bug-reference-fontify): `bug-reference-url-format' can also be a
 +      function to be able to handle the bug kind.
 +      (turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode): Add.
  
 -      * progmodes/grep.el (grep-compute-defaults): Fix handling of host
 -      default settings (Bug#5928).
 +2010-04-02  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2010-04-10  Glenn Morris  <rgm@gnu.org>
 +      * tmm.el (tmm-get-keymap): Check with symbolp before passing
 +      value to fboundp, it may not be a symbol.
  
 -      * progmodes/fortran.el (fortran-match-and-skip-declaration):
 -      New function.
 -      (fortran-font-lock-keywords-3): Use it.  (Bug#1385)
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
 -2010-04-07  Kenichi Handa  <handa@m17n.org>
 +      * cus-edit.el (custom-buffer-sort-alphabetically): Update :version.
  
 -      * language/indian.el (malayalam-composable-pattern): Fix previous
 -      change (add U+0D4D "SIGN VIRAMA").
 -      (oriya-composable-pattern): Add U+0B30 and fix typo in the regexp.
 -      (tamil-composable-pattern): Fix typo in the regexp.
 -      (telugu-composable-pattern): Fix U+0C4D and typo in the regexp.
 -      (kannada-composable-pattern): Fix U+0CB0 and typo in the regexp.
 -      (malayalam-composable-pattern): Fix U+0D4D and typo in the regexp.
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -2010-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +      * simple.el (next-line, previous-line): Re-throw a signal
 +      with `signal' instead of using `ding'.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01432.html
  
 -      * textmodes/tex-mode.el (latex-mode): Revert 2008-03-03 change to
 -      paragraph-separate (Bug#5821).
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -2010-04-05  Juri Linkov  <juri@jurta.org>
 +      * simple.el (keyboard-escape-quit): Raise deselecting the active
 +      region higher than exiting the minibuffer.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00904.html
  
 -      Put breadcrumbs on overlay instead of inserting to buffer (bug#5809).
 +2010-03-31  Juri Linkov  <juri@jurta.org>
  
 -      * info.el (Info-find-node-2): Comment out code that skips
 -      breadcrumbs line.
 -      (Info-mouse-follow-link): New command.
 -      (Info-link-keymap): New keymap.
 -      (Info-breadcrumbs): Rename from `Info-insert-breadcrumbs'.
 -      Return a string with links instead of inserting breadcrumbs
 -      to the Info buffer.
 -      (Info-fontify-node): Comment out code that inserts breadcrumbs.
 -      Instead of putting the `invisible' text property over the Info
 -      header, make an overlay over the Info header with the `invisible'
 -      property and `after-string' set to the string returned by
 -      `Info-breadcrumbs'.
 +      * image.el (image-animated-p): Use `image-metadata' instead of
 +      `image-extension-data'.  Get GIF extenstion data from metadata
 +      property `extension-data'.
  
 -2010-04-03  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * help.el (help-window-setup-finish): Doc fix (Bug#5830).
 -      Reported by monkey@sandpframing.com.
 +      * simple.el (append-to-buffer): Simplify.
  
 -2010-03-30  Tomas Abrahamsson  <tab@lysator.liu.se>
 +2010-03-31  Tomas Abrahamsson  <tab@lysator.liu.se>
  
        * textmodes/artist.el (artist-mode): Fix typo in docstring.
        Reported by Alex Schröder <kensanata@gmail.com>.  (Bug#5807)
  
 -2010-03-30  Kenichi Handa  <handa@m17n.org>
 +2010-03-31  Kenichi Handa  <handa@m17n.org>
  
        * language/sinhala.el (composition-function-table): Fix regexp for
        the new Unicode specification.
        (telugu-composable-pattern): New variables to cope with the new
        Unicode specification.  Use them in composition-function-table.
  
 -2010-03-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Make tmm-menubar work for the Buffers menu again (bug#5726).
        * tmm.el (tmm-prompt): Also handle keymap entries in the form of
        vectors rather than cons cells, as used in menu-bar-update-buffers.
  
 -2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * progmodes/js.el (js-auto-indent-flag, js-mode-map)
        (js-insert-and-indent): Revert 2009-08-15 change, restoring
  
        * mail/sendmail.el (mail-default-directory): Doc fix.
  
 -2010-03-27  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * mail/sendmail.el (mail-default-directory): Doc fix.
  
 -2010-03-27  Eli Zaretskii  <eliz@gnu.org>
 +2010-03-31  Eli Zaretskii  <eliz@gnu.org>
  
        * subr.el (version-regexp-alist, version-to-list)
        (version-list-<, version-list-=, version-list-<=)
        (version-list-not-zero, version<, version<=, version=): Doc fix.
        (Bug#5744).
  
 -2010-03-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 -            Nick Roberts  <nickrob@snap.net.nz>
 -
 -      * progmodes/gdb-ui.el (gdb-apple-test): New function.
 -      (gdb-init-1): Use it.
 -
 -2010-02-10  Dan Nicolaescu  <dann@ics.uci.edu>
 +2010-02-31  Dan Nicolaescu  <dann@ics.uci.edu>
  
        * vc.el (vc-root-diff): Doc fix.
  
 -2010-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * vc.el (vc-print-log, vc-print-root-log): Doc fix.
  
        * simple.el (append-to-buffer): Fix last change.
  
 -2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-31  Chong Yidong  <cyd@stupidchicken.com>
  
        * simple.el (append-to-buffer): Ensure that point is preserved if
        BUFFER is the current buffer.  Suggested by YAMAMOTO Mitsuharu.
        (Bug#5749)
  
 +2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (auto-mode-case-fold): Change default to t.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * dired-x.el (dired-omit-mode): Doc fix.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines): Move occur-engine related
 +      functions `occur-accumulate-lines' and `occur-engine-add-prefix'
 +      to be located after `occur-engine'.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      Make occur handle multi-line matches cleanly with context.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01280.html
 +
 +      * replace.el (occur-accumulate-lines): Add optional arg `pt'.
 +      (occur-engine): Add local variables `ret', `prev-after-lines',
 +      `prev-lines'.  Use more arguments for `occur-context-lines'.
 +      Set first elem of its returned list to `data', and the second elem
 +      to `prev-after-lines'.  Don't print the separator line.
 +      In the end, print remaining context after-lines.
 +      (occur-context-lines): Add new arguments `begpt', `endpt',
 +      `lines', `prev-lines', `prev-after-lines'.  Rewrite to combine
 +      after-lines of the previous match with before-lines of the
 +      current match and not overlap them.  Return a list with two
 +      values: the output line and the list of context after-lines.
 +
 +2010-03-30  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines): Fix a bug where the first
 +      context line at the beginning of the buffer was missing.
 +
 +2010-03-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el: Make bidi-display-reordering safe variable for boolean
 +      values.
 +
 +2010-03-29  Phil Hagelberg  <phil@evri.com>
 +            Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * subr.el: Extend progress reporters to perform "spinning".
 +      (progress-reporter-update, progress-reporter-do-update):
 +      Handle non-numeric value arguments.
 +      (progress-reporter--pulse-characters): New var.
 +
 +2010-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * progmodes/compile.el (compilation-start): Fix regexp detection
 +      of initial cd command (Bug#5771).
 +
 +2010-03-28  Stefan Guath  <stefan@automata.se>  (tiny change)
 +
 +      * find-dired.el (find-dired): Use read-directory-name (Bug#5777).
 +
 +2010-03-27  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      Restore GDB/MI fuctionality removed by 2009-12-29T07:15:34Z!nickrob@snap.net.nz.
 +      * progmodes/gdb-mi.el: Restore.
 +      * progmodes/gdb-ui.el: Remove.
 +      * progmodes/gud.el: Re-accommodate for gdb-mi.el.
 +
 +2010-03-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * desktop.el (desktop-save-buffer-p): Don't mistakenly include
 +      all dired buffers, even tramp ones.  (Bug#5755)
 +
 +2010-03-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add "union tags" in mpc.el.
 +      * mpc.el: Remove backward compatibility code.
 +      (mpc-browser-tags): Change default.
 +      (mpc--find-memoize-union-tags): New var.
 +      (mpc-cmd-flush, mpc-cmd-special-tag-p): New fun.
 +      (mpc-cmd-find): Handle the case where the playlist does not exist.
 +      Handle union-tags.
 +      (mpc-cmd-list): Use mpc-cmd-special-tag-p.  Handle union-tags.
 +      (mpc-cmd-add): Use mpc-cmd-flush.
 +      (mpc-tagbrowser-tag-name): New fun.
 +      (mpc-tagbrowser-buf): Use it.
 +      (mpc-songs-refresh): Use cond.  Move to point-min as a fallback.
 +
  2010-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 +      Misc cleanup.
 +      * progmodes/make-mode.el (makefile-bsdmake-rule-action-regex):
 +      Use replace-regexp-in-string.
 +      (makefile-mode-abbrev-table): Merge defvar and define-abbrev-table.
 +      (makefile-imake-mode-syntax-table): Move init into defvar.
 +      (makefile-mode): Use define-derived-mode.
 +
        * progmodes/make-mode.el (makefile-rule-action-regex): Backtrack less.
        (makefile-make-font-lock-keywords): Adjust rule since submatch 1 may
        not be present any more.
        * faces.el (set-face-attribute): Fix typo in docstring.
        (face-valid-attribute-values): Reflow docstring.
  
 -2010-03-23  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752).
  
 -2010-03-21  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * indent.el (indent-for-tab-command): Doc fix.
  
 -2010-03-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-03-24  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-engine.el (c-remove-stale-state-cache):
 +      Fix off-by-one error.  Fixes bug #5747.
 +
 +2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * image-dired.el (image-dired-display-thumbs): Fix typo in docstring.
        (image-dired-read-comment): Doc fix.
        (reftex-cite-punctuation, reftex-search-unrecursed-path-first)
        (reftex-highlight-selection): Fix typos in docstrings.
  
 -2010-03-19  Juanma Barranquero  <lekktu@gmail.com>
 +2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * minibuffer.el (completion-in-region-functions): Fix docstring typos.
  
 -2010-03-18  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * mail/rmail.el (rmail-highlight-face): Restore option deleted
        2008-02-13 without comment; mark it obsolete.
        (rmail-highlight-headers): Use rmail-highlight-face once more.
  
 -2010-03-16  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-24  Chong Yidong  <cyd@stupidchicken.com>
  
        * woman.el (woman2-process-escapes): Only consume the newline if
        the filler character is on a line by itself (Bug#5729).
  
 -2010-03-16  Kenichi Handa  <handa@m17n.org>
 +2010-03-24  Kenichi Handa  <handa@m17n.org>
  
        * language/indian.el (devanagari-composable-pattern): Add more
        consonants.
  
 -2010-03-14  Michael Albinus  <michael.albinus@gmx.de>
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/trampver.el: Update release number.
  
 -2010-03-13  Glenn Morris  <rgm@gnu.org>
 -
 -      * Makefile.in (ELCFILES): Add cedet/semantic/imenu.el.
 -
 -2010-03-13  Michael Albinus  <michael.albinus@gmx.de>
 +2010-03-24  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-find-executable):
        Use `tramp-get-connection-buffer'.  Make the regexp for checking
        (tramp-open-connection-setup-interactive-shell): Remove workaround
        for OpenSolaris bug, it is not needed anymore.
  
 -2010-03-12  Glenn Morris  <rgm@gnu.org>
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie.  (Bug#4427)
  
 -2010-03-11  Wilson Snyder  <wsnyder@wsnyder.org>
 +2010-03-24  Wilson Snyder  <wsnyder@wsnyder.org>
  
        * files.el (auto-mode-alist): Accept more verilog file patterns.
  
 +2010-03-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-dir.el (vc-dir-headers): Abbreviate the working dir.
 +
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc-bzr.el (vc-bzr-log-edit-mode): Add --fixes support to
 +      log-edit-before-checkin-process.
 +
 +      * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
 +
 +      * vc.el, vc-bzr.el, vc-hg.el (log-edit-mode): Declare.
 +
 +      * vc-dispatcher.el (vc-start-logentry): Doc fix.
 +      (log-view-process-buffer, log-edit-extra-flags): Declare.
 +
 +      * log-edit.el (log-edit-before-checkin-process): Doc fix.
 +
 +2010-03-23  Sam Steingold  <sds@gnu.org>
 +
 +      Fix bug#5620: recalculate all markers on compilation buffer
 +      modifications, not on file modifications.
 +      * progmodes/compile.el (compilation-buffer-modtime): New buffer-local
 +      variable: the buffer modification time, for buffers not associated with
 +      files.
 +      (compilation-mode): Create it.
 +      (compilation-filter): Update it.
 +      (compilation-next-error-function): Use it instead of
 +      `visited-file-modtime' for timestamp.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      Implement Occur multi-line matches.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01044.html
 +
 +      * replace.el (occur): Doc fix.
 +      (occur-engine): Set `begpt' to the beginning of the first line.
 +      Set `endpt' to the end of the last match line.  At first, count
 +      line numbers between `origpt' and `begpt'.  Split out code from
 +      `out-line' variable to new let-bindings `match-prefix' and
 +      `match-str'.  In `out-line' add non-numeric prefix to all
 +      non-first lines of multi-line matches.  Finally, count lines
 +      between `begpt' and `endpt' and add to `lines'.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el (occur-accumulate-lines, occur-engine):
 +      Use `occur-engine-line' instead of duplicate code.
 +      (occur-engine-line): New function created from duplicate code
 +      in `occur-accumulate-lines' and `occur-engine'.
 +
 +      * replace.el (occur-engine-line): Add optional arg `keep-props'.
 +      (occur-accumulate-lines, occur-engine): Add arg `keep-props'.
 +
 +2010-03-23  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el: Remove TODO tasks.
 +
 +      * info.el (Info-finder-find-node): Add node "all"
 +      with all package info.  Handle a list of multiple keywords
 +      separated by comma.
 +      (info-finder): In interactive use with a prefix argument,
 +      use `completing-read-multiple' to read a list of keywords
 +      separated by comma.
 +
 +2010-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add a new completion style `substring'.
 +      * minibuffer.el (completion-basic--pattern): New function.
 +      (completion-basic-try-completion, completion-basic-all-completions):
 +      Use it.
 +      (completion-substring--all-completions)
 +      (completion-substring-try-completion)
 +      (completion-substring-all-completions): New functions.
 +      (completion-styles-alist): New style `substring'.
 +
 +2010-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Get rid of .elc files after removal of the corresponding .el.
 +      * Makefile.in (compile-clean): New target.
 +      (compile-main): Use it.
 +
 +2010-03-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * Makefile.in (compile-main): cd to $(lisp) in a sub-shell, so we
 +      don't do make there.  When compiling with separate object dir, there
 +      is no Makefile there.
 +
 +2010-03-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Get rid of the ELCFILES abomination, again.
 +      * Makefile.in (update-elclist, ELCFILES, compile-last): Remove.
 +      (all, compile): Don't call compile-last.
 +      (compile-main): Build the "elcfiles" list dynamically.
 +      (compile-targets): New (internal) target.
 +
 +2010-03-21  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (top_srcdir): Define.
 +      (abs_top_builddir): Define.
 +      (srcdir): Don't append `/..'.
 +      (EMACS): Use ${abs_top_builddir}.
 +      (all, compile, compile-always, compile-last): Don't set emacswd.
 +      (update-subdirs, update-authors): Use $(top_srcdir) instead of
 +      $(srcdir).
 +      (lisp): Use $(srcdir) instead of @srcdir@.
 +
 +2010-03-21  Juri Linkov  <juri@jurta.org>
 +
 +      Fix message of multi-line occur regexps and multi-buffer header lines.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00457.html
 +
 +      * replace.el (occur-1): Don't display regexp if it is longer
 +      than window-width.  Use `query-replace-descr' to display regexp.
 +      (occur-engine): Don't display regexp in the buffer header for
 +      multi-buffer occur.  Display a separate header line with total
 +      match count and regexp for multi-buffer occur.
 +      Use `query-replace-descr' to display regexp.
 +
 +2010-03-20  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/secrets.el: Fix parenthesis.
 +      (secrets-enabled): Fix parenthesis.
 +
 +2010-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use more relative file and directory names.
 +      * Makefile.in (EMACS): Arrange for it to work when we chdir.
 +      (setwins, setwins_almost, setwins_for_subdirs):
 +      Don't `cd'; output relative names.
 +      (all, compile, compile-always, compile-last): Set emacswd.
 +      (custom-deps, finder-data, autoloads, update-subdirs, compile-last):
 +      Just cd to the lisp source dir so we can use relative file names.
 +
 +      * outline.el (hide-sublevels): Unfix the paren non-typo! (bug#5738).
 +
 +2010-03-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * textmodes/rst.el: Use faces for font-lock customization, and make the
 +      old -face variables obsolete.
 +      (rst-block, rst-external, rst-definition, rst-directive, rst-comment)
 +      (rst-emphasis1, rst-emphasis2, rst-literal, rst-reference): New faces.
 +      (rst-block-face, rst-external-face, rst-definition-face)
 +      (rst-directive-face, rst-comment-face, rst-emphasis1-face)
 +      (rst-emphasis2-face, rst-literal-face, rst-reference-face):
 +      Make obsolete.
 +      (rst-font-lock-keywords-function): Update for above changes.
 +
 +2010-03-20  Juri Linkov  <juri@jurta.org>
 +
 +      * s-region.el:
 +      * obsolete/s-region.el: Move to obsolete.
 +
 +2010-03-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * vc-dispatcher.el (vc-do-command): Remove reference to `vc-path'.
 +
 +2010-03-19  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc-hooks.el (vc-path): Remove variable and obsolete declaration.
 +
 +2010-03-19  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add special markup processing for commit logs.
 +      * log-edit.el (log-edit-extra-flags): New variable.
 +      (log-edit): Add new argument MODE.  Use that mode when non-nil
 +      instead of the log-view-mode.
 +      (log-view-process-buffer): New function.
 +
 +      * vc.el: Document that the checkin method takes optional
 +      arguments.  Document new backend specific method: log-view-mode.
 +      (vc-default-log-edit-mode): New function.
 +      (vc-checkin): Use a backend specific log-view-mode.
 +      Pass extra arguments to the checkin method.
 +      (vc-modify-change-comment): Pass a dummy extra argument.
 +
 +      * vc-dispatcher.el (vc-log-edit): Add a mode argument, pass it to
 +      log-edit.
 +      (vc-start-logentry): Add a mode argument, pass it to vc-log-edit.
 +      (vc-finish-logentry): Process the log buffer before passing it
 +      down.  Pass log-edit-extra-flags.
 +
 +      * vc-bzr.el (vc-bzr-checkin): Pass extra arguments to the commit
 +      command.
 +      (log-edit-extra-flags, log-edit-before-checkin-process):
 +      New declarations.
 +
 +      * vc-hg.el (vc-hg-checkin): Pass extra arguments to the commit
 +      command.
 +      (log-edit-extra-flags, log-edit-before-checkin-process):
 +      New declarations.
 +      (vc-hg-log-edit-mode): New derived mode.
 +
 +      * vc-arch.el (vc-arch-checkin):
 +      * vc-cvs.el (vc-cvs-checkin):
 +      * vc-git.el (vc-git-checkin):
 +      * vc-mtn.el (vc-mtn-checkin):
 +      * vc-rcs.el (vc-rcs-checkin):
 +      * vc-sccs.el (vc-sccs-checkin):
 +      * vc-svn.el (vc-svn-checkin): Add an optional ignored argument.
 +
 +2010-03-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * outline.el (hide-sublevels): Don't hide trailing newline (and fix
 +      parent typo).
 +
 +2010-03-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * password-cache.el (password-cache, password-cache-expiry): Autoload.
 +
 +2010-03-18  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/autoload.el (autoload-rubric): Doc fix.
 +
 +      * replace.el (query-replace-history): Give it a doc string.
 +      (map-query-replace-regexp): Use query-replace-from-history-variable
 +      and query-replace-to-history-variable.
 +
 +      * mail/hashcash.el (declare-function): Remove duplicate definition.
 +
 +      * mail/emacsbug.el (report-emacs-bug-pretest-address):
 +      Make it an obsolete alias for report-emacs-bug-address.
 +      (message-strip-special-text-properties): Declare.
 +      (report-emacs-bug): Remove test for a pretest bug address.
 +      Combine message-mode-specific code.
 +
 +      * mail/supercite.el: Don't require sendmail.
 +      (mh-in-header-p): Declare rather than using with-no-warnings.
 +      (sc-no-blank-line-or-header): Use rfc822-goto-eoh rather than
 +      mail-header-end.  Don't bind mysterious variable `kill-lines-magic'.
 +
 +      * calendar/cal-french.el: Convert to utf-8.
 +
 +      * files.el (interpreter-mode-alist): Use emacs-lisp-mode for
 +      Emacs scripts.
 +
 +2010-03-16  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/secrets.el (secrets-enabled): New variable.  Use it instead
 +      of a subfeature.
 +
 +2010-03-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/secrets.el (top): Register the D-Bus signals only when the
 +      service "org.freedesktop.secrets" can be pinged.
 +      Provide subfeature `enabled'.
 +
 +2010-03-14  Juri Linkov  <juri@jurta.org>
 +
 +      Add finder unknown keywords.
 +
 +      * finder.el (finder-unknown-keywords): New function.
 +
 +      * info.el (Info-finder-find-node): Use `finder-unknown-keywords'
 +      to create a Finder node with unknown keywords.
 +
 +2010-03-14  Juri Linkov  <juri@jurta.org>
 +
 +      * finder.el (finder-compile-keywords): Replace `princ' with
 +      `prin1' on a list of symbols interned from keyword strings.
 +
 +      * emacs-lisp/lisp-mnt.el (lm-keywords-list): If `keywords' contains
 +      a comma, then split keywords using a comma and optional whitespace.
 +      Otherwise, split by whitespace.
 +
 +      * complete.el:
 +      * face-remap.el:
 +      * log-view.el:
 +      * net/hmac-def.el:
 +      * net/hmac-md5.el:
 +      * net/netrc.el:
 +      * progmodes/mixal-mode.el: Fix keywords.
 +
 +2010-03-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * Makefile.in (ELCFILES): Add net/secrets.elc.
 +
 +      * net/secrets.el: New file.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * facemenu.el (list-colors-display, list-colors-print): New arg
 +      callback.  Use it to allow selecting colors.
 +
 +      * wid-edit.el (widget-image-insert): Insert image prop even if the
 +      current display is non-graphic.
 +      (widget-field-value-set): New fun.
 +      (editable-field): Use it.
 +      (widget-field-value-get): Clean up unused var.
 +      (widget-color-value-create, widget-color--choose-action):
 +      New funs.  Allow using list-colors-display to choose color.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el: Resort topmost custom groups.
 +      (custom-buffer-sort-alphabetically): Default to t.
 +      (customize-apropos): Use apropos-parse-pattern.
 +      (custom-search-field): New var.
 +      (custom-buffer-create-internal): Add custom-apropos search field.
 +      (custom-add-parent-links): Don't display parent doc.
 +      (custom-group-value-create): Don't sort top-level custom group.
 +      (custom-magic-value-create): Show visibility button before option name.
 +
 +      (custom-variable-state): New fun, from custom-variable-state-set.
 +      (custom-variable-state-set): Use it.
 +      (custom-group-value-create): Hide options with standard values
 +      using the :hidden-states property.  Use progress reporter.
 +
 +      (custom-show): Simplify.
 +      (custom-visibility): Disable images by default.
 +      (custom-variable): New property :hidden-states.
 +      (custom-variable-value-create): Enable images for
 +      custom-visibility widgets.  Use :hidden-states property to
 +      determine initial visibility.
 +
 +      * wid-edit.el (widget-image-find): Give images center ascent.
 +      (visibility): Add :on-image and :off-image properties.
 +      (widget-visibility-value-create): Use them.
 +
 +2010-03-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * cus-edit.el (processes): Remove from development group.
 +      (oop, hypermedia): Delete group.
 +      (comm): Promote to top-level group.
 +
 +      * net/browse-url.el (browse-url):
 +      * net/xesam.el (xesam):
 +      * net/tramp.el (tramp):
 +      * net/goto-addr.el (goto-address):
 +      * net/ange-ftp.el (ange-ftp): Put in comm group.
 +
 +      * view.el (view): Remove from editing group.
 +
 +      * uniquify.el (uniquify): Put in files group.
 +
 +      * net/browse-url.el (browse-url):
 +      * ps-print.el (postscript): Put in external group.
 +
 +      * cus-edit.el (outlines):
 +      * textmodes/text-mode.el (text-mode-hook):
 +      * textmodes/table.el (table):
 +      * textmodes/picture.el (picture):
 +      * outline.el (outlines): Put in wp group.
 +
 +      * nxml/nxml-mode.el (nxml): Remove from wp group.
 +
 +      * net/tramp-imap.el (tramp-imap): Put in tramp group.
 +
 +      * mail/metamail.el (metamail): Remove from hypermedia group.
 +
 +      * cus-edit.el (abbrev):
 +      * whitespace.el (whitespace):
 +      * vcursor.el (vcursor):
 +      * reveal.el (reveal):
 +      * hl-line.el (hl-line): Put in convenience group.
 +
 +      * epg-config.el (epg): Put in data group.
 +
 +      * emulation/pc-select.el (pc-select): Put in emulations group.
 +
 +      * calculator.el (calculator): Put in applications group.
 +
 +2010-03-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add .dir-locals.el support for file-less buffers.
 +      * files.el (hack-local-variables): Split out code to apply local
 +      variable settings ...
 +      (hack-local-variables-apply): ... here.  New function.
 +      (hack-dir-local-variables): Use the default directory for when the
 +      buffer does not have an associated file.
 +      (hack-dir-local-variables-non-file-buffer): New function.
 +      * diff-mode.el (diff-mode):
 +      * vc-annotate.el (vc-annotate-mode):
 +      * vc-dir.el (vc-dir-mode):
 +      * log-edit.el (log-edit-mode):
 +      * log-view.el (log-view-mode): Call hack-dir-local-variables-non-file-buffer.
 +
 +2010-03-12  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Add support for shelving snapshots and for showing shelves.
 +      * vc-bzr.el (vc-bzr-shelve-show, vc-bzr-shelve-show-at-point)
 +      (vc-bzr-shelve-apply-and-keep-at-point, vc-bzr-shelve-snapshot):
 +      New functions.
 +      (vc-bzr-shelve-map, vc-bzr-shelve-menu-map)
 +      (vc-bzr-extra-menu-map): Map them.
 +
 +2010-03-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * cus-edit.el (customize-changed-options-previous-release):
 +      Bump to 23.1.
 +
 +      * image.el (image-animate-max-time): Fix :version tag.
 +
 +2010-03-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Branch for 23.2.
 +
 +2010-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc-git.el (vc-git-revision-table): Include remote branches.
 +
 +2010-03-10  Kim F. Storm  <storm@cua.dk>
 +
 +      Animated image API.
 +      http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00211.html
 +
 +      * image.el (image-animate-max-time): New defcustom.
 +      (image-animated-types): New defconst.
 +      (create-animated-image, image-animate-timer)
 +      (image-animate-start, image-animate-stop, image-animate-timeout)
 +      (image-animated-p): New functions.
 +
 +      * image-mode.el (image-toggle-display-image):
 +      Replace `create-image' with `create-animated-image'.
 +
  2010-03-09  Miles Bader  <miles@gnu.org>
  
        * vc-git.el (vc-git-print-log): Use "tformat:" for shortlog,
        * files.el (hack-local-variables-filter): For eval forms, also
        check safe-local-variable-p (Bug#5636).
  
 -2010-02-24  Eduard Wiebe  <usenet@pusto.de>
 -
 -      * javascript.el (wisent-javascript-jv-expand-tag): Avoid c(ad)ddr
 -      and use c(ad)r of cddr (Bug#5640).
 -
  2010-02-22  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Protect
  2010-02-03  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/ange-ftp.el (ange-ftp-insert-directory): Parse directory
 -      also in case of (and (not full) (not wildcard)).  This is needed,
 +      also in case of (and (not full) (not wildcard)).  This is needed
        when dired is called with a list of files, which are not in
        `default-directory'.  (Bug#5478)
  
  
        * vc-bzr.el (vc-bzr-revision-table): New function.
  
 -2010-01-25  Eric Hanchrow  <eric.hanchrow@gmail.com>  (tiny change)
 +2010-01-25  Eric Hanchrow  <eric.hanchrow@gmail.com>
  
        * vc-git.el (vc-git-dir-status-goto-stage): Pass --relative to the
        diff-index command.  This requires at least git-1.5.5.  (Bug#1589).
  
  2010-01-02  Karl Fogel  <kfogel@red-bean.com>
  
 -      * bookmark.el (bookmark-bmenu-any-marks): New function
 +      * bookmark.el (bookmark-bmenu-any-marks): New function.
        (bookmark-bmenu-save): Clear buffer modification if no marks.
  
  2010-01-02  Karl Fogel  <kfogel@red-bean.com>
  
  2009-12-17  Juri Linkov  <juri@jurta.org>
  
 -      Make `dired-diff' more safe.  (Bug#5225)
 +      Make `dired-diff' safer.  (Bug#5225)
  
        * dired-aux.el (dired-diff): Signal an error when `file' equals to
        `current' or when `file' is a directory of the `current' file.
  
  2009-12-09  Vivek Dasmohapatra  <vivek@etla.org>
  
 -      Drop some properties to avoid surprises.
 +      Drop some properties to avoid surprises (bug#5002).
        * htmlfontify.el (hfy-ignored-properties): New defcustom.
        (hfy-fontify-buffer): Use it.
  
        * Makefile.in (ELCFILES): Adapt to subword.el move.
  
  2009-11-21  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 -          Stefan Monnier  <monnier@iro.umontreal.ca>
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * bookmark.el (bookmark-bmenu-bookmark-column): Remove var.
        (bookmark-bmenu-list): Save name on `bookmark-name-prop' text-prop.
        (tar-header-block-tokenize): Decode the username and groupname.
        (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
  
 +2009-10-17  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
 +      contains multibyte characters, choose first applicable coding
 +      system automatically.
 +
  2009-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * international/mule-cmds.el (select-safe-coding-system): If the file
        * term/w32-win.el (setup-default-fontset, set-fontset-font):
        Remove unused declarations.
  
 +2009-09-30  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/eieio.el (boolean-p): Delete.
 +
  2009-09-30  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el".
  
        * net/tramp-imap.el: New package.
  
 +2009-09-28  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/chart.el:
 +      * emacs-lisp/eieio-base.el:
 +      * emacs-lisp/eieio-comp.el:
 +      * emacs-lisp/eieio-custom.el:
 +      * emacs-lisp/eieio-datadebug.el:
 +      * emacs-lisp/eieio-opt.el:
 +      * emacs-lisp/eieio-speedbar.el:
 +      * emacs-lisp/eieio.el: New files.
 +
  2009-09-27  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
  
        * whitespace.el (whitespace-trailing-regexp)
  
        * textmodes/fill.el: Convert to utf-8 encoding.
        (fill-french-nobreak-p): Remove redundant » and « inherited from our
 -      pre-unicode days.
 +      pre-Unicode days.
  
        * add-log.el (change-log-fill-forward-paragraph): New function.
        (change-log-mode): Use it so fill-region DTRT.
        indent buffer only if called interactively (Bug#4452).
  
  2009-09-19  Juanma Barranquero  <lekktu@gmail.com>
 -          Eli Zaretskii  <eliz@gnu.org>
 +            Eli Zaretskii  <eliz@gnu.org>
  
        This fixes bug#4197 (merged to bug#865, though not identical).
        * server.el (server-auth-dir): Add docstring note about FAT32.
        Don't call substitute-in-file-name on diary-file.
  
  2009-09-03  Eduard Wiebe  <usenet@pusto.de>
 -          Stefan Monnier  <monnier@iro.umontreal.ca>
 +            Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mail/footnote.el (footnote-prefix): Make it a defcustom.
        (footnote-mode-map): Move initialization into the declaration.
        * progmodes/hideshow.el (hs-special-modes-alist): Add js-mode entry.
  
  2009-08-14  Daniel Colascione  <dan.colascione@gmail.com>
 -          Karl Landstrom  <karl.landstrom@brgeight.se>
 +            Karl Landstrom  <karl.landstrom@brgeight.se>
  
        * progmodes/js.el: New file.
  
        XZ is the successor to LZMA: <http://tukaani.org/xz/>
  
  2009-06-22  Dmitry Dzhus  <dima@sphinx.net.ru>
 -          Nick Roberts  <nickrob@snap.net.nz>
 +            Nick Roberts  <nickrob@snap.net.nz>
  
        * progmodes/gdb-mi.el: Pull further modified changes from Dmitry's
        repository (http://sphinx.net.ru/hg/gdb-mi/).
@@@ -22353,7 -12694,7 +22375,7 @@@ See ChangeLog.14 for earlier changes
  ;; coding: utf-8
  ;; End:
  
 -  Copyright (C) 2009, 2010, 2011  Free Software Foundation, Inc.
 +  Copyright (C) 2009-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
diff --combined lisp/files.el
index fdbfe13b6713b3abe9fc82be23cf2b3606f99fac,88063aed2b91ad1ddf362d51d7fbb789e9f3d01b..014469ed8fc90850d9179fd4945094452e8b0fb8
@@@ -1,9 -1,10 +1,9 @@@
  ;;; files.el --- file input and output commands for Emacs
  
 -;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996,
 -;;   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
 -;;   2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +;; Copyright (C) 1985-1987, 1992-2011 Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -116,14 -117,13 +116,14 @@@ This variable is relevant only if `back
    :type 'boolean
    :group 'backup)
  
 -(defcustom backup-by-copying-when-mismatch nil
 +(defcustom backup-by-copying-when-mismatch t
    "Non-nil means create backups by copying if this preserves owner or group.
  Renaming may still be used (subject to control of other variables)
  when it would not result in changing the owner or group of the file;
  that is, for files which are owned by you and whose group matches
  the default for a new file created there by you.
  This variable is relevant only if `backup-by-copying' is nil."
 +  :version "24.1"
    :type 'boolean
    :group 'backup)
  (put 'backup-by-copying-when-mismatch 'permanent-local t)
@@@ -191,6 -191,17 +191,6 @@@ If the buffer is visiting a new file, t
    "Non-nil if visited file was read-only when visited.")
  (make-variable-buffer-local 'buffer-file-read-only)
  
 -(defcustom temporary-file-directory
 -  (file-name-as-directory
 -   (cond ((memq system-type '(ms-dos windows-nt))
 -        (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
 -       (t
 -        (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp"))))
 -  "The directory for writing temporary files."
 -  :group 'files
 -  :initialize 'custom-initialize-delay
 -  :type 'directory)
 -
  (defcustom small-temporary-file-directory
    (if (eq system-type 'ms-dos) (getenv "TMPDIR"))
    "The directory for writing small temporary files.
@@@ -567,9 -578,6 +567,9 @@@ Runs the usual ange-ftp hook, but only 
          (inhibit-file-name-operation op))
        (apply op args))))
  
 +(declare-function dos-convert-standard-filename "dos-fns.el" (filename))
 +(declare-function w32-convert-standard-filename "w32-fns.el" (filename))
 +
  (defun convert-standard-filename (filename)
    "Convert a standard file's name to something suitable for the OS.
  This means to guarantee valid names and perhaps to canonicalize
@@@ -587,20 -595,15 +587,20 @@@ and also turn slashes into backslashes 
  `w32-shell-dos-semantics').
  
  See Info node `(elisp)Standard File Names' for more details."
 -  (if (eq system-type 'cygwin)
 -      (let ((name (copy-sequence filename))
 -          (start 0))
 -      ;; Replace invalid filename characters with !
 -      (while (string-match "[?*:<>|\"\000-\037]" name start)
 -             (aset name (match-beginning 0) ?!)
 -        (setq start (match-end 0)))
 -      name)
 -    filename))
 +  (cond
 +   ((eq system-type 'cygwin)
 +    (let ((name (copy-sequence filename))
 +        (start 0))
 +      ;; Replace invalid filename characters with !
 +      (while (string-match "[?*:<>|\"\000-\037]" name start)
 +      (aset name (match-beginning 0) ?!)
 +      (setq start (match-end 0)))
 +      name))
 +   ((eq system-type 'windows-nt)
 +    (w32-convert-standard-filename filename))
 +   ((eq system-type 'ms-dos)
 +    (dos-convert-standard-filename filename))
 +   (t filename)))
  
  (defun read-directory-name (prompt &optional dir default-dirname mustmatch initial)
    "Read directory name, prompting with PROMPT and completing in directory DIR.
@@@ -681,37 -684,26 +681,37 @@@ that list of directories (separated by 
  `path-separator') when resolving a relative directory name.
  The path separator is colon in GNU and GNU-like systems."
    (interactive
 -   (list (read-directory-name "Change default directory: "
 -                       default-directory default-directory
 -                       (and (member cd-path '(nil ("./")))
 -                            (null (getenv "CDPATH"))))))
 -  (if (file-name-absolute-p dir)
 -      (cd-absolute (expand-file-name dir))
 -    (if (null cd-path)
 -      (let ((trypath (parse-colon-path (getenv "CDPATH"))))
 -        (setq cd-path (or trypath (list "./")))))
 -    (if (not (catch 'found
 -             (mapc
 -              (function (lambda (x)
 -                          (let ((f (expand-file-name (concat x dir))))
 -                            (if (file-directory-p f)
 -                                (progn
 -                                  (cd-absolute f)
 -                                  (throw 'found t))))))
 -              cd-path)
 -             nil))
 -      (error "No such directory found via CDPATH environment variable"))))
 +   (list
 +    ;; FIXME: There's a subtle bug in the completion below.  Seems linked
 +    ;; to a fundamental difficulty of implementing `predicate' correctly.
 +    ;; The manifestation is that TAB may list non-directories in the case where
 +    ;; those files also correspond to valid directories (if your cd-path is (A/
 +    ;; B/) and you have A/a a file and B/a a directory, then both `a' and `a/'
 +    ;; will be listed as valid completions).
 +    ;; This is because `a' (listed because of A/a) is indeed a valid choice
 +    ;; (which will lead to the use of B/a).
 +    (minibuffer-with-setup-hook
 +        (lambda ()
 +          (setq minibuffer-completion-table
 +                (apply-partially #'locate-file-completion-table
 +                                 cd-path nil))
 +          (setq minibuffer-completion-predicate
 +                (lambda (dir)
 +                  (locate-file dir cd-path nil
 +                               (lambda (f) (and (file-directory-p f) 'dir-ok))))))
 +      (unless cd-path
 +        (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
 +                          (list "./"))))
 +      (read-directory-name "Change default directory: "
 +                           default-directory default-directory
 +                           t))))
 +  (unless cd-path
 +    (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
 +                      (list "./"))))
 +  (cd-absolute
 +   (or (locate-file dir cd-path nil
 +                    (lambda (f) (and (file-directory-p f) 'dir-ok)))
 +       (error "No such directory found via CDPATH environment variable"))))
  
  (defun load-file (file)
    "Load the Lisp file named FILE."
@@@ -731,12 -723,9 +731,12 @@@ If SUFFIXES is non-nil, it should be a 
  file name when searching.  If SUFFIXES is nil, it is equivalent to '(\"\").
  Use '(\"/\") to disable PATH search, but still try the suffixes in SUFFIXES.
  If non-nil, PREDICATE is used instead of `file-readable-p'.
 +
 +This function will normally skip directories, so if you want it to find
 +directories, make sure the PREDICATE function returns `dir-ok' for them.
 +
  PREDICATE can also be an integer to pass to the `access' system call,
  in which case file-name handlers are ignored.  This usage is deprecated.
 -
  For compatibility, PREDICATE can also be one of the symbols
  `executable', `readable', `writable', or `exists', or a list of
  one or more of those symbols."
               (let ((x (file-name-directory suffix)))
                 (if x (1- (length x)) (length suffix))))))
     (t
 -    (let ((names nil)
 +    (let ((names '())
 +          ;; If we have files like "foo.el" and "foo.elc", we could load one of
 +          ;; them with "foo.el", "foo.elc", or "foo", where just "foo" is the
 +          ;; preferred way.  So if we list all 3, that gives a lot of redundant
 +          ;; entries for the poor soul looking just for "foo".  OTOH, sometimes
 +          ;; the user does want to pay attention to the extension.  We try to
 +          ;; diffuse this tension by stripping the suffix, except when the
 +          ;; result is a single element (i.e. usually we only list "foo" unless
 +          ;; it's the only remaining element in the list, in which case we do
 +          ;; list "foo", "foo.elc" and "foo.el").
 +          (fullnames '())
          (suffix (concat (regexp-opt suffixes t) "\\'"))
          (string-dir (file-name-directory string))
            (string-file (file-name-nondirectory string)))
        (dolist (dir dirs)
 -      (unless dir
 -        (setq dir default-directory))
 -      (if string-dir (setq dir (expand-file-name string-dir dir)))
 -      (when (file-directory-p dir)
 -        (dolist (file (file-name-all-completions
 -                       string-file dir))
 -          (push file names)
 -          (when (string-match suffix file)
 -            (setq file (substring file 0 (match-beginning 0)))
 -              (push file names)))))
 +        (unless dir
 +          (setq dir default-directory))
 +        (if string-dir (setq dir (expand-file-name string-dir dir)))
 +        (when (file-directory-p dir)
 +          (dolist (file (file-name-all-completions
 +                         string-file dir))
 +            (if (not (string-match suffix file))
 +                (push file names)
 +              (push file fullnames)
 +              (push (substring file 0 (match-beginning 0)) names)))))
 +      ;; Switching from names to names+fullnames creates a non-monotonicity
 +      ;; which can cause problems with things like partial-completion.
 +      ;; To minimize the problem, filter out completion-regexp-list, so that
 +      ;; M-x load-library RET t/x.e TAB finds some files.  Also remove elements
 +      ;; from `names' which only matched `string' when they still had
 +      ;; their suffix.
 +      (setq names (all-completions string names))
 +      ;; Remove duplicates of the first element, so that we can easily check
 +      ;; if `names' really only contains a single element.
 +      (when (cdr names) (setcdr names (delete (car names) (cdr names))))
 +      (unless (cdr names)
 +        ;; There's no more than one matching non-suffixed element, so expand
 +        ;; the list by adding the suffixed elements as well.
 +        (setq names (nconc names fullnames)))
        (completion-table-with-context
         string-dir names string-file pred action)))))
  
@@@ -941,36 -906,6 +941,36 @@@ to that remote system
        (funcall handler 'file-remote-p file identification connected)
        nil)))
  
 +(defcustom remote-file-name-inhibit-cache 10
 +  "Whether to use the remote file-name cache for read access.
 +
 +When `nil', always use the cached values.
 +When `t', never use them.
 +A number means use them for that amount of seconds since they were
 +cached.
 +
 +File attributes of remote files are cached for better performance.
 +If they are changed out of Emacs' control, the cached values
 +become invalid, and must be invalidated.
 +
 +In case a remote file is checked regularly, it might be
 +reasonable to let-bind this variable to a value less then the
 +time period between two checks.
 +Example:
 +
 +  \(defun display-time-file-nonempty-p \(file)
 +    \(let \(\(remote-file-name-inhibit-cache \(- display-time-interval 5)))
 +      \(and \(file-exists-p file)
 +           \(< 0 \(nth 7 \(file-attributes \(file-chase-links file)))))))"
 +  :group 'files
 +  :version "24.1"
 +  :type `(choice
 +        (const   :tag "Do not inhibit file name cache" nil)
 +        (const   :tag "Do not use file name cache" t)
 +        (integer :tag "Do not use file name cache"
 +                 :format "Do not use file name cache older then %v seconds"
 +                 :value 10)))
 +
  (defun file-local-copy (file)
    "Copy the file FILE into a temporary file on this machine.
  Returns the name of the local copy, or nil, if FILE is directly
@@@ -1571,7 -1506,7 +1571,7 @@@ killed.
      (error "Aborted"))
    (when (and (buffer-modified-p) buffer-file-name)
      (if (yes-or-no-p (format "Buffer %s is modified; save it first? "
 -                             (buffer-name)))
 +                           (buffer-name)))
          (save-buffer)
        (unless (yes-or-no-p "Kill and replace the buffer without saving it? ")
          (error "Aborted"))))
@@@ -1773,11 -1708,12 +1773,11 @@@ When nil, never request confirmation.
    "If file SIZE larger than `large-file-warning-threshold', allow user to abort.
  OP-TYPE specifies the file operation being performed (for message to user)."
    (when (and large-file-warning-threshold size
 -         (> size large-file-warning-threshold)
 -         (not (y-or-n-p
 -               (format "File %s is large (%dMB), really %s? "
 -                       (file-name-nondirectory filename)
 -                       (/ size 1048576) op-type))))
 -        (error "Aborted")))
 +           (> size large-file-warning-threshold)
 +           (not (y-or-n-p (format "File %s is large (%dMB), really %s? "
 +                                  (file-name-nondirectory filename)
 +                                  (/ size 1048576) op-type))))
 +    (error "Aborted")))
  
  (defun find-file-noselect (filename &optional nowarn rawfile wildcards)
    "Read file FILENAME into a buffer and return the buffer.
@@@ -2072,7 -2008,8 +2072,8 @@@ Don't call it from programs!  Use `inse
  
  (defvar find-file-literally nil
    "Non-nil if this buffer was made by `find-file-literally' or equivalent.
- This is a permanent local.")
+ This has the `permanent-local' property, which takes effect if you
+ make the variable buffer-local.")
  (put 'find-file-literally 'permanent-local t)
  
  (defun find-file-literally (filename)
@@@ -2227,7 -2164,7 +2228,7 @@@ in that case, this function acts as if 
    (if (fboundp 'ucs-set-table-for-input) ; don't lose when building
        (ucs-set-table-for-input)))
  
 -(defcustom auto-mode-case-fold nil
 +(defcustom auto-mode-case-fold t
    "Non-nil means to try second pass through `auto-mode-alist'.
  This means that if the first case-sensitive search through the alist fails
  to find a matching major mode, a second case-insensitive search is made.
@@@ -2246,16 -2183,7 +2247,16 @@@ since only a single case-insensitive se
     (lambda (elt)
       (cons (purecopy (car elt)) (cdr elt)))
     `(;; do this first, so that .html.pl is Polish html, not Perl
 -     ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mode)
 +     ("\\.[sx]?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mode)
 +     ("\\.svgz?\\'" . image-mode)
 +     ("\\.svgz?\\'" . xml-mode)
 +     ("\\.x[bp]m\\'" . image-mode)
 +     ("\\.x[bp]m\\'" . c-mode)
 +     ("\\.p[bpgn]m\\'" . image-mode)
 +     ("\\.tiff?\\'" . image-mode)
 +     ("\\.gif\\'" . image-mode)
 +     ("\\.png\\'" . image-mode)
 +     ("\\.jpe?g\\'" . image-mode)
       ("\\.te?xt\\'" . text-mode)
       ("\\.[tT]e[xX]\\'" . tex-mode)
       ("\\.ins\\'" . tex-mode)         ;Installation files for TeX packages.
       ("\\.te?xi\\'" . texinfo-mode)
       ("\\.[sS]\\'" . asm-mode)
       ("\\.asm\\'" . asm-mode)
 +     ("\\.css\\'" . css-mode)
 +     ("\\.mixal\\'" . mixal-mode)
 +     ("\\.gcov\\'" . compilation-mode)
 +     ;; Besides .gdbinit, gdb documents other names to be usable for init
 +     ;; files, cross-debuggers can use something like
 +     ;; .PROCESSORNAME-gdbinit so that the host and target gdbinit files
 +     ;; don't interfere with each other.
 +     ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode)
       ("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
       ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
       ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
       ("\\.cl[so]\\'" . latex-mode)            ;LaTeX 2e class option
       ("\\.bbl\\'" . latex-mode)
       ("\\.bib\\'" . bibtex-mode)
 +     ("\\.bst\\'" . bibtex-style-mode)
       ("\\.sql\\'" . sql-mode)
       ("\\.m[4c]\\'" . m4-mode)
       ("\\.mf\\'" . metafont-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\\|rar\\|\
 -ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'" . archive-mode)
 +arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\
 +ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
       ("\\.\\(sx[dmicw]\\|od[fgpst]\\|oxt\\)\\'" . archive-mode) ;OpenOffice.org
       ("\\.\\(deb\\|[oi]pk\\)\\'" . archive-mode) ; Debian/Opkg packages.
       ;; Mailer puts message to be edited in
       ;; /tmp/Re.... or Message
       ("\\`/tmp/Re" . text-mode)
       ("/Message[0-9]*\\'" . text-mode)
 -     ("\\.zone\\'" . zone-mode)
       ;; some news reader is reported to use this
       ("\\`/tmp/fol/" . text-mode)
       ("\\.oak\\'" . scheme-mode)
       ("[:/]_emacs\\'" . emacs-lisp-mode)
       ("/crontab\\.X*[0-9]+\\'" . shell-script-mode)
       ("\\.ml\\'" . lisp-mode)
 +     ;; Linux-2.6.9 uses some different suffix for linker scripts:
 +     ;; "ld", "lds", "lds.S", "lds.in", "ld.script", and "ld.script.balo".
 +     ;; eCos uses "ld" and "ldi".  Netbsd uses "ldscript.*".
 +     ("\\.ld[si]?\\'" . ld-script-mode)
 +     ("ld\\.?script\\'" . ld-script-mode)
 +     ;; .xs is also used for ld scripts, but seems to be more commonly
 +     ;; associated with Perl .xs files (C with Perl bindings).  (Bug#7071)
 +     ("\\.xs\\'" . c-mode)
 +     ;; Explained in binutils ld/genscripts.sh.  Eg:
 +     ;; A .x script file is the default script.
 +     ;; A .xr script is for linking without relocation (-r flag).  Etc.
 +     ("\\.x[abdsru]?[cnw]?\\'" . ld-script-mode)
 +     ("\\.zone\\'" . dns-mode)
 +     ("\\.soa\\'" . dns-mode)
       ;; Common Lisp ASDF package system.
       ("\\.asd\\'" . lisp-mode)
       ("\\.\\(asn\\|mib\\|smi\\)\\'" . snmp-mode)
       ("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)
       ("\\.\\(dif\\|pat\\)\\'" . diff-mode) ; for MSDOG
       ("\\.[eE]?[pP][sS]\\'" . ps-mode)
 -     ("\\.\\(?:PDF\\|DVI\\|pdf\\|dvi\\)\\'" . doc-view-mode)
 +     ("\\.\\(?:PDF\\|DVI\\|OD[FGPST]\\|DOCX?\\|XLSX?\\|PPTX?\\|pdf\\|dvi\\|od[fgpst]\\|docx?\\|xlsx?\\|pptx?\\)\\'" . doc-view-mode-maybe)
       ("configure\\.\\(ac\\|in\\)\\'" . autoconf-mode)
       ("\\.s\\(v\\|iv\\|ieve\\)\\'" . sieve-mode)
       ("BROWSE\\'" . ebrowse-tree-mode)
       ("#\\*mail\\*" . mail-mode)
       ("\\.g\\'" . antlr-mode)
       ("\\.ses\\'" . ses-mode)
 -     ("\\.\\(soa\\|zone\\)\\'" . dns-mode)
       ("\\.docbook\\'" . sgml-mode)
       ("\\.com\\'" . dcl-mode)
       ("/config\\.\\(?:bat\\|log\\)\\'" . fundamental-mode)
@@@ -2503,8 -2410,7 +2504,8 @@@ and `magic-mode-alist', which determine
       ("pg" . text-mode)
       ("make" . makefile-gmake-mode)           ; Debian uses this
       ("guile" . scheme-mode)
 -     ("clisp" . lisp-mode)))
 +     ("clisp" . lisp-mode)
 +     ("emacs" . emacs-lisp-mode)))
    "Alist mapping interpreter names to major modes.
  This is used for files whose first lines match `auto-mode-interpreter-regexp'.
  Each element looks like (INTERPRETER . MODE).
@@@ -2867,19 -2773,15 +2868,19 @@@ asking you for confirmation.
  
  (mapc (lambda (pair)
        (put (car pair) 'safe-local-variable (cdr pair)))
 -      '((buffer-read-only     . booleanp)   ;; C source code
 -      (default-directory    . stringp)    ;; C source code
 -      (fill-column          . integerp)   ;; C source code
 -      (indent-tabs-mode     . booleanp)   ;; C source code
 -      (left-margin          . integerp)   ;; C source code
 -      (no-update-autoloads  . booleanp)
 -      (tab-width            . integerp)   ;; C source code
 -      (truncate-lines       . booleanp)   ;; C source code
 -      (word-wrap            . booleanp))) ;; C source code
 +      '((buffer-read-only        . booleanp)   ;; C source code
 +      (default-directory       . stringp)    ;; C source code
 +      (fill-column             . integerp)   ;; C source code
 +      (indent-tabs-mode        . booleanp)   ;; C source code
 +      (left-margin             . integerp)   ;; C source code
 +      (no-update-autoloads     . booleanp)
 +      (tab-width               . integerp)   ;; C source code
 +      (truncate-lines          . booleanp)   ;; C source code
 +      (word-wrap               . booleanp) ;; C source code
 +      (bidi-display-reordering . booleanp))) ;; C source code
 +
 +(put 'bidi-paragraph-direction 'safe-local-variable
 +     (lambda (v) (memq v '(nil right-to-left left-to-right))))
  
  (put 'c-set-style 'safe-local-eval-function t)
  
@@@ -2920,80 -2822,91 +2921,80 @@@ DIR-NAME is a directory name if these s
  directory-local variables, or nil otherwise."
    (if noninteractive
        nil
 -    (let ((name (or dir-name
 -                  (if buffer-file-name
 -                      (file-name-nondirectory buffer-file-name)
 -                    (concat "buffer " (buffer-name)))))
 -        (offer-save (and (eq enable-local-variables t) unsafe-vars))
 -        prompt char)
 -      (save-window-excursion
 -      (let ((buf (get-buffer-create "*Local Variables*")))
 -        (pop-to-buffer buf)
 -        (set (make-local-variable 'cursor-type) nil)
 -        (erase-buffer)
 -        (if unsafe-vars
 -            (insert "The local variables list in " name
 -                    "\ncontains values that may not be safe (*)"
 -                    (if risky-vars
 -                        ", and variables that are risky (**)."
 -                      "."))
 -          (if risky-vars
 -              (insert "The local variables list in " name
 -                      "\ncontains variables that are risky (**).")
 -            (insert "A local variables list is specified in " name ".")))
 -        (insert "\n\nDo you want to apply it?  You can type
 +    (save-window-excursion
 +      (let* ((name (or dir-name
 +                     (if buffer-file-name
 +                         (file-name-nondirectory buffer-file-name)
 +                       (concat "buffer " (buffer-name)))))
 +           (offer-save (and (eq enable-local-variables t)
 +                            unsafe-vars))
 +           (exit-chars
 +            (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g)))
 +           (buf (pop-to-buffer "*Local Variables*"))
 +           prompt char)
 +      (set (make-local-variable 'cursor-type) nil)
 +      (erase-buffer)
 +      (cond
 +       (unsafe-vars
 +        (insert "The local variables list in " name
 +                "\ncontains values that may not be safe (*)"
 +                (if risky-vars
 +                    ", and variables that are risky (**)."
 +                  ".")))
 +       (risky-vars
 +        (insert "The local variables list in " name
 +                "\ncontains variables that are risky (**)."))
 +       (t
 +        (insert "A local variables list is specified in " name ".")))
 +      (insert "\n\nDo you want to apply it?  You can type
  y  -- to apply the local variables list.
  n  -- to ignore the local variables list.")
 -        (if offer-save
 -            (insert "
 +      (if offer-save
 +          (insert "
  !  -- to apply the local variables list, and permanently mark these
        values (*) as safe (in the future, they will be set automatically.)\n\n")
 -          (insert "\n\n"))
 -        (dolist (elt all-vars)
 -          (cond ((member elt unsafe-vars)
 -                 (insert "  * "))
 -                ((member elt risky-vars)
 -                 (insert " ** "))
 -                (t
 -                 (insert "    ")))
 -          (princ (car elt) buf)
 -          (insert " : ")
 -            ;; Make strings with embedded whitespace easier to read.
 -            (let ((print-escape-newlines t))
 -              (prin1 (cdr elt) buf))
 -          (insert "\n"))
 -        (setq prompt
 -              (format "Please type %s%s: "
 -                      (if offer-save "y, n, or !" "y or n")
 -                      (if (< (line-number-at-pos) (window-body-height))
 -                          ""
 -                        ", or C-v to scroll")))
 -        (goto-char (point-min))
 -        (let ((cursor-in-echo-area t)
 -              (executing-kbd-macro executing-kbd-macro)
 -              (exit-chars
 -               (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g)))
 -              done)
 -          (while (not done)
 -            (message "%s" prompt)
 -            (setq char (read-event))
 -            (if (numberp char)
 -                (cond ((eq char ?\C-v)
 -                       (condition-case nil
 -                           (scroll-up)
 -                         (error (goto-char (point-min)))))
 -                      ;; read-event returns -1 if we are in a kbd
 -                      ;; macro and there are no more events in the
 -                      ;; macro.  In that case, attempt to get an
 -                      ;; event interactively.
 -                      ((and executing-kbd-macro (= char -1))
 -                       (setq executing-kbd-macro nil))
 -                      (t (setq done (memq (downcase char) exit-chars)))))))
 -        (setq char (downcase char))
 -        (when (and offer-save (= char ?!) unsafe-vars)
 -          (dolist (elt unsafe-vars)
 -            (add-to-list 'safe-local-variable-values elt))
 -          ;; When this is called from desktop-restore-file-buffer,
 -          ;; coding-system-for-read may be non-nil.  Reset it before
 -          ;; writing to .emacs.
 -          (if (or custom-file user-init-file)
 -              (let ((coding-system-for-read nil))
 -                (customize-save-variable
 -                 'safe-local-variable-values
 -                 safe-local-variable-values))))
 -        (kill-buffer buf)
 -        (or (= char ?!)
 -            (= char ?\s)
 -            (= char ?y)))))))
 +        (insert "\n\n"))
 +      (dolist (elt all-vars)
 +        (cond ((member elt unsafe-vars)
 +               (insert "  * "))
 +              ((member elt risky-vars)
 +               (insert " ** "))
 +              (t
 +               (insert "    ")))
 +        (princ (car elt) buf)
 +        (insert " : ")
 +        ;; Make strings with embedded whitespace easier to read.
 +        (let ((print-escape-newlines t))
 +          (prin1 (cdr elt) buf))
 +        (insert "\n"))
 +      (setq prompt
 +            (format "Please type %s%s: "
 +                    (if offer-save "y, n, or !" "y or n")
 +                    (if (< (line-number-at-pos) (window-body-height))
 +                        ""
 +                      (push ?\C-v exit-chars)
 +                      ", or C-v to scroll")))
 +      (goto-char (point-min))
 +      (while (null char)
 +        (setq char (read-char-choice prompt exit-chars t))
 +        (when (eq char ?\C-v)
 +          (condition-case nil
 +              (scroll-up)
 +            (error (goto-char (point-min))))
 +          (setq char nil)))
 +      (kill-buffer buf)
 +      (when (and offer-save (= char ?!) unsafe-vars)
 +        (dolist (elt unsafe-vars)
 +          (add-to-list 'safe-local-variable-values elt))
 +        ;; When this is called from desktop-restore-file-buffer,
 +        ;; coding-system-for-read may be non-nil.  Reset it before
 +        ;; writing to .emacs.
 +        (if (or custom-file user-init-file)
 +            (let ((coding-system-for-read nil))
 +              (customize-save-variable
 +               'safe-local-variable-values
 +               safe-local-variable-values))))
 +      (memq char '(?! ?\s ?y))))))
  
  (defun hack-local-variables-prop-line (&optional mode-only)
    "Return local variables specified in the -*- line.
@@@ -3207,17 -3120,14 +3208,17 @@@ is specified, returning t if it is spec
          ;; Otherwise, set the variables.
          (enable-local-variables
           (hack-local-variables-filter result nil)
 -         (when file-local-variables-alist
 -           ;; Any 'evals must run in the Right sequence.
 -           (setq file-local-variables-alist
 -                 (nreverse file-local-variables-alist))
 -           (run-hooks 'before-hack-local-variables-hook)
 -           (dolist (elt file-local-variables-alist)
 -             (hack-one-local-variable (car elt) (cdr elt))))
 -         (run-hooks 'hack-local-variables-hook)))))
 +         (hack-local-variables-apply)))))
 +
 +(defun hack-local-variables-apply ()
 +  (when file-local-variables-alist
 +    ;; Any 'evals must run in the Right sequence.
 +    (setq file-local-variables-alist
 +        (nreverse file-local-variables-alist))
 +    (run-hooks 'before-hack-local-variables-hook)
 +    (dolist (elt file-local-variables-alist)
 +      (hack-one-local-variable (car elt) (cdr elt))))
 +  (run-hooks 'hack-local-variables-hook))
  
  (defun safe-local-variable-p (sym val)
    "Non-nil if SYM is safe as a file-local variable with value VAL.
@@@ -3375,29 -3285,22 +3376,29 @@@ ROOT is the root directory of the proje
  Return the new variables list."
    (let* ((file-name (buffer-file-name))
         (sub-file-name (if file-name
 +                            ;; FIXME: Why not use file-relative-name?
                            (substring file-name (length root)))))
 -    (dolist (entry class-variables variables)
 -      (let ((key (car entry)))
 -      (cond
 -       ((stringp key)
 -        ;; Don't include this in the previous condition, because we
 -        ;; want to filter all strings before the next condition.
 -        (when (and sub-file-name
 -                   (>= (length sub-file-name) (length key))
 -                   (string= key (substring sub-file-name 0 (length key))))
 -          (setq variables (dir-locals-collect-variables
 -                           (cdr entry) root variables))))
 -       ((or (not key)
 -            (derived-mode-p key))
 -        (setq variables (dir-locals-collect-mode-variables
 -                         (cdr entry) variables))))))))
 +    (condition-case err
 +        (dolist (entry class-variables variables)
 +          (let ((key (car entry)))
 +            (cond
 +             ((stringp key)
 +              ;; Don't include this in the previous condition, because we
 +              ;; want to filter all strings before the next condition.
 +              (when (and sub-file-name
 +                         (>= (length sub-file-name) (length key))
 +                         (string-prefix-p key sub-file-name))
 +                (setq variables (dir-locals-collect-variables
 +                                 (cdr entry) root variables))))
 +             ((or (not key)
 +                  (derived-mode-p key))
 +              (setq variables (dir-locals-collect-mode-variables
 +                               (cdr entry) variables))))))
 +      (error
 +       ;; The file's content might be invalid (e.g. have a merge conflict), but
 +       ;; that shouldn't prevent the user from opening the file.
 +       (message ".dir-locals error: %s" (error-message-string err))
 +       nil))))
  
  (defun dir-locals-set-directory-class (directory class &optional mtime)
    "Declare that the DIRECTORY root is an instance of CLASS.
@@@ -3521,16 -3424,15 +3522,16 @@@ is found.  Returns the new class name.
  Store the directory-local variables in `dir-local-variables-alist'
  and `file-local-variables-alist', without applying them."
    (when (and enable-local-variables
 -           (buffer-file-name)
 -           (not (file-remote-p (buffer-file-name))))
 +           (not (file-remote-p (or (buffer-file-name) default-directory))))
      ;; Find the variables file.
 -    (let ((variables-file (dir-locals-find-file (buffer-file-name)))
 +    (let ((variables-file (dir-locals-find-file (or (buffer-file-name) default-directory)))
          (class nil)
          (dir-name nil))
        (cond
         ((stringp variables-file)
 -      (setq dir-name (file-name-directory (buffer-file-name)))
 +      (setq dir-name (if (buffer-file-name)
 +                           (file-name-directory (buffer-file-name))
 +                         default-directory))
        (setq class (dir-locals-read-from-file variables-file)))
         ((consp variables-file)
        (setq dir-name (nth 0 variables-file))
              (push elt dir-local-variables-alist))
            (hack-local-variables-filter variables dir-name)))))))
  
 +(defun hack-dir-local-variables-non-file-buffer ()
 +  (hack-dir-local-variables)
 +  (hack-local-variables-apply))
 +
  \f
  (defcustom change-major-mode-with-file-name t
    "Non-nil means \\[write-file] should set the major mode from the file name.
@@@ -3597,7 -3495,7 +3598,7 @@@ the old visited file has been renamed t
        (and buffer (not (eq buffer (current-buffer)))
           (not no-query)
           (not (y-or-n-p (format "A buffer is visiting %s; proceed? "
 -                                  filename)))
 +                                filename)))
           (error "Aborted")))
      (or (equal filename buffer-file-name)
        (progn
@@@ -3730,13 -3628,10 +3731,13 @@@ variable `make-backup-files'.  If it's 
  no longer accessible under its old name.
  
  The value is non-nil after a backup was made by renaming.
 -It has the form (MODES . BACKUPNAME).
 +It has the form (MODES SELINUXCONTEXT BACKUPNAME).
  MODES is the result of `file-modes' on the original
  file; this means that the caller, after saving the buffer, should change
  the modes of the new file to agree with the old modes.
 +SELINUXCONTEXT is the result of `file-selinux-context' on the original
 +file; this means that the caller, after saving the buffer, should change
 +the SELinux context of the new file to agree with the old context.
  BACKUPNAME is the backup file name, which is the old file renamed."
    (if (and make-backup-files (not backup-inhibited)
           (not buffer-backed-up)
                            (or delete-old-versions
                                (y-or-n-p (format "Delete excess backup versions of %s? "
                                                  real-file-name)))))
 -                    (modes (file-modes buffer-file-name)))
 +                    (modes (file-modes buffer-file-name))
 +                    (context (file-selinux-context buffer-file-name)))
                  ;; Actually write the back up file.
                  (condition-case ()
                      (if (or file-precious-flag
                                                   (<= (nth 2 attr) backup-by-copying-when-privileged-mismatch)))
                                          (or (nth 9 attr)
                                              (not (file-ownership-preserved-p real-file-name)))))))
 -                        (backup-buffer-copy real-file-name backupname modes)
 +                        (backup-buffer-copy real-file-name backupname modes context)
                        ;; rename-file should delete old backup.
                        (rename-file real-file-name backupname t)
 -                      (setq setmodes (cons modes backupname)))
 +                      (setq setmodes (list modes context backupname)))
                    (file-error
                     ;; If trouble writing the backup, write it in
                     ;; .emacs.d/%backup%.
                     (message "Cannot write backup file; backing up in %s"
                              backupname)
                     (sleep-for 1)
 -                   (backup-buffer-copy real-file-name backupname modes)))
 +                   (backup-buffer-copy real-file-name backupname modes context)))
                  (setq buffer-backed-up t)
                  ;; Now delete the old versions, if desired.
                  (if delete-old-versions
                  setmodes)
            (file-error nil))))))
  
 -(defun backup-buffer-copy (from-name to-name modes)
 +(defun backup-buffer-copy (from-name to-name modes context)
    (let ((umask (default-file-modes)))
      (unwind-protect
        (progn
        ;; Reset the umask.
        (set-default-file-modes umask)))
    (and modes
 -       (set-file-modes to-name (logand modes #o1777))))
 +       (set-file-modes to-name (logand modes #o1777)))
 +  (and context
 +       (set-file-selinux-context to-name context)))
 +
 +(defvar file-name-version-regexp
 +  "\\(?:~\\|\\.~[-[:alnum:]:#@^._]+~\\)"
 +  "Regular expression matching the backup/version part of a file name.
 +Used by `file-name-sans-versions'.")
  
  (defun file-name-sans-versions (name &optional keep-backup-version)
    "Return file NAME sans backup versions or strings.
  This is a separate procedure so your site-init or startup file can
  redefine it.
  If the optional argument KEEP-BACKUP-VERSION is non-nil,
 -we do not remove backup version numbers, only true file version numbers."
 +we do not remove backup version numbers, only true file version numbers.
 +See also `file-name-version-regexp'."
    (let ((handler (find-file-name-handler name 'file-name-sans-versions)))
      (if handler
        (funcall handler 'file-name-sans-versions name keep-backup-version)
        (substring name 0
 -               (if keep-backup-version
 -                   (length name)
 -                 (or (string-match "\\.~[-[:alnum:]:#@^._]+~\\'" name)
 -                     (string-match "~\\'" name)
 -                     (length name)))))))
 +               (unless keep-backup-version
 +                   (string-match (concat file-name-version-regexp "\\'")
 +                                 name))))))
  
  (defun file-ownership-preserved-p (file)
    "Return t if deleting FILE and rewriting it would preserve the owner."
@@@ -4323,11 -4211,7 +4324,11 @@@ Before and after saving the buffer, thi
      ;; In an indirect buffer, save its base buffer instead.
      (if (buffer-base-buffer)
        (set-buffer (buffer-base-buffer)))
 -    (if (buffer-modified-p)
 +    (if (or (buffer-modified-p)
 +          ;; handle the case when no modification has been made but
 +          ;; the file disappeared since visited
 +          (and buffer-file-name
 +               (not (file-exists-p buffer-file-name))))
        (let ((recent-save (recent-auto-save-p))
              setmodes)
          ;; If buffer has no file name, ask user for one.
          (or (verify-visited-file-modtime (current-buffer))
              (not (file-exists-p buffer-file-name))
              (yes-or-no-p
 -             (format "%s has changed since visited or saved.  Save anyway? "
 -                     (file-name-nondirectory buffer-file-name)))
 +             (format
 +              "%s has changed since visited or saved.  Save anyway? "
 +              (file-name-nondirectory buffer-file-name)))
              (error "Save not confirmed"))
          (save-restriction
            (widen)
                  (nthcdr 10 (file-attributes buffer-file-name)))
            (if setmodes
                (condition-case ()
 -                  (set-file-modes buffer-file-name (car setmodes))
 +                  (progn
 +                    (set-file-modes buffer-file-name (car setmodes))
 +                    (set-file-selinux-context buffer-file-name (nth 1 setmodes)))
                  (error nil))))
          ;; If the auto-save file was recent before this command,
          ;; delete it now.
  ;; This does the "real job" of writing a buffer into its visited file
  ;; and making a backup file.  This is what is normally done
  ;; but inhibited if one of write-file-functions returns non-nil.
 -;; It returns a value (MODES . BACKUPNAME), like backup-buffer.
 +;; It returns a value (MODES SELINUXCONTEXT BACKUPNAME), like backup-buffer.
  (defun basic-save-buffer-1 ()
    (prog1
        (if save-buffer-coding-system
        (setq buffer-file-coding-system-explicit
            (cons last-coding-system-used nil)))))
  
 -;; This returns a value (MODES . BACKUPNAME), like backup-buffer.
 +;; This returns a value (MODES SELINUXCONTEXT BACKUPNAME), like backup-buffer.
  (defun basic-save-buffer-2 ()
    (let (tempsetmodes setmodes)
      (if (not (file-writable-p buffer-file-name))
            (if (not (file-exists-p buffer-file-name))
                (error "Directory %s write-protected" dir)
              (if (yes-or-no-p
 -                 (format "File %s is write-protected; try to save anyway? "
 -                         (file-name-nondirectory
 -                          buffer-file-name)))
 +                 (format
 +                  "File %s is write-protected; try to save anyway? "
 +                  (file-name-nondirectory
 +                   buffer-file-name)))
                  (setq tempsetmodes t)
                (error "Attempt to save to a file which you aren't allowed to write"))))))
      (or buffer-backed-up
            ;; Since we have created an entirely new file,
            ;; make sure it gets the right permission bits set.
            (setq setmodes (or setmodes
 -                             (cons (or (file-modes buffer-file-name)
 +                             (list (or (file-modes buffer-file-name)
                                         (logand ?\666 umask))
 +                                   (file-selinux-context buffer-file-name)
                                     buffer-file-name)))
            ;; We succeeded in writing the temp file,
            ;; so rename it.
        ;; (setmodes is set) because that says we're superseding.
        (cond ((and tempsetmodes (not setmodes))
               ;; Change the mode back, after writing.
 -             (setq setmodes (cons (file-modes buffer-file-name) buffer-file-name))
 -             (set-file-modes buffer-file-name (logior (car setmodes) 128))))
 +             (setq setmodes (list (file-modes buffer-file-name)
 +                                  (file-selinux-context buffer-file-name)
 +                                  buffer-file-name))
 +             (set-file-modes buffer-file-name (logior (car setmodes) 128))
 +             (set-file-selinux-context buffer-file-name (nth 1 setmodes)))))
        (let (success)
          (unwind-protect
              (progn
            ;; the backup by renaming, undo the backing-up.
            (and setmodes (not success)
                 (progn
 -                 (rename-file (cdr setmodes) buffer-file-name t)
 -                 (setq buffer-backed-up nil)))))))
 +                 (rename-file (nth 2 setmodes) buffer-file-name t)
 +                 (setq buffer-backed-up nil))))))
      setmodes))
  
 -(defun diff-buffer-with-file (&optional buffer)
 -  "View the differences between BUFFER and its associated file.
 -This requires the external program `diff' to be in your `exec-path'."
 -  (interactive "bBuffer: ")
 -  (with-current-buffer (get-buffer (or buffer (current-buffer)))
 -    (if (and buffer-file-name
 -           (file-exists-p buffer-file-name))
 -      (let ((tempfile (make-temp-file "buffer-content-")))
 -        (unwind-protect
 -            (progn
 -              (write-region nil nil tempfile nil 'nomessage)
 -              (diff buffer-file-name tempfile nil t)
 -              (sit-for 0))
 -          (when (file-exists-p tempfile)
 -            (delete-file tempfile))))
 -      (message "Buffer %s has no associated file on disc" (buffer-name))
 -      ;; Display that message for 1 second so that user can read it
 -      ;; in the minibuffer.
 -      (sit-for 1)))
 -  ;; return always nil, so that save-buffers-kill-emacs will not move
 -  ;; over to the next unsaved buffer when calling `d'.
 -  nil)
 +(declare-function diff-no-select "diff"
 +                (old new &optional switches no-async buf))
  
  (defvar save-some-buffers-action-alist
    `((?\C-r
      (?d ,(lambda (buf)
             (if (null (buffer-file-name buf))
                 (message "Not applicable: no file")
 -             (save-window-excursion (diff-buffer-with-file buf))
 -             (if (not enable-recursive-minibuffers)
 -                 (progn (display-buffer (get-buffer-create "*Diff*"))
 -                        (setq other-window-scroll-buffer "*Diff*"))
 -               (view-buffer (get-buffer-create "*Diff*")
 -                            (lambda (_) (exit-recursive-edit)))
 -               (recursive-edit)))
 +             (require 'diff)            ;for diff-no-select.
 +             (let ((diffbuf (diff-no-select (buffer-file-name buf) buf
 +                                            nil 'noasync)))
 +               (if (not enable-recursive-minibuffers)
 +                   (progn (display-buffer diffbuf)
 +                          (setq other-window-scroll-buffer diffbuf))
 +                 (view-buffer diffbuf (lambda (_) (exit-recursive-edit)))
 +                 (recursive-edit))))
             ;; Return nil to ask about BUF again.
             nil)
        ,(purecopy "view changes in this buffer")))
@@@ -4627,7 -4522,8 +4628,7 @@@ change the additional actions you can t
           (progn
             (if (or arg
                     (eq save-abbrevs 'silently)
 -                   (y-or-n-p (format "Save abbrevs in %s? "
 -                                     abbrev-file-name)))
 +                   (y-or-n-p (format "Save abbrevs in %s? " abbrev-file-name)))
                 (write-abbrev-file nil))
             ;; Don't keep bothering user if he says no.
             (setq abbrevs-changed nil)
@@@ -4741,17 -4637,16 +4742,17 @@@ or multiple mail buffers, etc.
        (force-mode-line-update))))
  
  (defun make-directory (dir &optional parents)
 -  "Create the directory DIR and any nonexistent parent dirs.
 -If DIR already exists as a directory, signal an error, unless PARENTS is set.
 +  "Create the directory DIR and optionally any nonexistent parent dirs.
 +If DIR already exists as a directory, signal an error, unless
 +PARENTS is non-nil.
  
 -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.
 +Interactively, the default choice of directory to create is the
 +current buffer's default directory.  That is useful when you have
 +visited a file in a nonexistent directory.
  
 -Noninteractively, the second (optional) argument PARENTS says whether
 -to create parent directories if they don't exist.  Interactively,
 -this happens by default."
 +Noninteractively, the second (optional) argument PARENTS, if
 +non-nil, says whether to create parent directories that don't
 +exist.  Interactively, this happens by default."
    (interactive
     (list (read-file-name "Make directory: " default-directory default-directory
                         nil nil)
    "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
    "Regexp matching any file name except \".\" and \"..\".")
  
 -(defun delete-directory (directory &optional recursive)
 +(defun delete-directory (directory &optional recursive trash)
    "Delete the directory named DIRECTORY.  Does not follow symlinks.
 -If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
 +If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well.
 +TRASH non-nil means to trash the directory instead, provided
 +`delete-by-moving-to-trash' is non-nil.
 +
 +When called interactively, TRASH is t if no prefix argument is
 +given.  With a prefix argument, TRASH is nil."
    (interactive
 -   (let ((dir (expand-file-name
 -             (read-file-name
 -              "Delete directory: "
 -              default-directory default-directory nil nil))))
 +   (let* ((trashing (and delete-by-moving-to-trash
 +                       (null current-prefix-arg)))
 +        (dir (expand-file-name
 +              (read-file-name
 +               (if trashing
 +                   "Move directory to trash: "
 +                 "Delete directory: ")
 +               default-directory default-directory nil nil))))
       (list dir
           (if (directory-files dir nil directory-files-no-dot-files-regexp)
               (y-or-n-p
 -              (format "Directory `%s' is not empty, really delete? " dir))
 -           nil))))
 +              (format "Directory `%s' is not empty, really %s? "
 +                      dir (if trashing "trash" "delete")))
 +           nil)
 +         (null current-prefix-arg))))
    ;; If default-directory is a remote directory, make sure we find its
    ;; delete-directory handler.
    (setq directory (directory-file-name (expand-file-name directory)))
      (cond
       (handler
        (funcall handler 'delete-directory directory recursive))
 -     (delete-by-moving-to-trash
 +     ((and delete-by-moving-to-trash trash)
        ;; Only move non-empty dir to trash if recursive deletion was
        ;; requested.  This mimics the non-`delete-by-moving-to-trash'
        ;; case, where the operation fails in delete-directory-internal.
                  ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
                  ;; but more efficient
                  (if (eq t (car (file-attributes file)))
 -                    (delete-directory file recursive)
 -                  (delete-file file)))
 +                    (delete-directory file recursive nil)
 +                  (delete-file file nil)))
                ;; We do not want to delete "." and "..".
                (directory-files
                 directory 'full directory-files-no-dot-files-regexp)))
        (delete-directory-internal directory)))))
  
 -(defun copy-directory (directory newname &optional keep-time parents)
 +(defun copy-directory (directory newname &optional keep-time parents copy-contents)
    "Copy DIRECTORY to NEWNAME.  Both args must be strings.
  This function always sets the file modes of the output files to match
  the corresponding input file.
@@@ -4852,12 -4736,7 +4853,12 @@@ A prefix arg makes KEEP-TIME non-nil
  
  Noninteractively, the last argument PARENTS says whether to
  create parent directories if they don't exist.  Interactively,
 -this happens by default."
 +this happens by default.
 +
 +If NEWNAME names an existing directory, copy DIRECTORY as a
 +subdirectory there.  However, if called from Lisp with a non-nil
 +optional argument COPY-CONTENTS, copy the contents of DIRECTORY
 +directly into NEWNAME instead."
    (interactive
     (let ((dir (read-directory-name
               "Copy directory: " default-directory default-directory t nil)))
           (read-file-name
            (format "Copy directory %s to: " dir)
            default-directory default-directory nil nil)
 -         current-prefix-arg t)))
 +         current-prefix-arg t nil)))
    ;; If default-directory is a remote directory, make sure we find its
    ;; copy-directory handler.
    (let ((handler (or (find-file-name-handler directory 'copy-directory)
        ;; Compute target name.
        (setq directory (directory-file-name (expand-file-name directory))
            newname   (directory-file-name (expand-file-name newname)))
 -      (if (not (file-directory-p newname)) (make-directory newname parents))
 +
 +      (cond ((not (file-directory-p newname))
 +           ;; If NEWNAME is not an existing directory, create it;
 +           ;; that is where we will copy the files of DIRECTORY.
 +           (make-directory newname parents))
 +          ;; If NEWNAME is an existing directory and COPY-CONTENTS
 +          ;; is nil, copy into NEWNAME/[DIRECTORY-BASENAME].
 +          ((not copy-contents)
 +           (setq newname (expand-file-name
 +                          (file-name-nondirectory
 +                           (directory-file-name directory))
 +                          newname))
 +           (and (file-exists-p newname)
 +                (not (file-directory-p newname))
 +                (error "Cannot overwrite non-directory %s with a directory"
 +                       newname))
 +           (make-directory newname t)))
  
        ;; Copy recursively.
 -      (mapc
 -       (lambda (file)
 -       (let ((target (expand-file-name
 -                      (file-name-nondirectory file) newname))
 -             (attrs (file-attributes file)))
 -         (cond ((file-directory-p file)
 -                (copy-directory file target keep-time parents))
 -               ((stringp (car attrs)) ; Symbolic link
 -                (make-symbolic-link (car attrs) target t))
 -               (t
 -                (copy-file file target t keep-time)))))
 -       ;; We do not want to copy "." and "..".
 -       (directory-files       directory 'full directory-files-no-dot-files-regexp))
 +      (dolist (file
 +             ;; We do not want to copy "." and "..".
 +             (directory-files directory 'full
 +                              directory-files-no-dot-files-regexp))
 +      (if (file-directory-p file)
 +          (copy-directory file newname keep-time parents)
 +        (let ((target (expand-file-name (file-name-nondirectory file) newname))
 +              (attrs (file-attributes file)))
 +          (if (stringp (car attrs)) ; Symbolic link
 +              (make-symbolic-link (car attrs) target t)
 +            (copy-file file target t keep-time)))))
  
        ;; Set directory attributes.
        (set-file-modes newname (file-modes directory))
@@@ -5260,10 -5125,10 +5261,10 @@@ This command is used in the special Dir
  
  (defun kill-buffer-ask (buffer)
    "Kill BUFFER if confirmed."
 -  (when (yes-or-no-p
 -         (format "Buffer %s %s.  Kill? " (buffer-name buffer)
 -                 (if (buffer-modified-p buffer)
 -                     "HAS BEEN EDITED" "is unmodified")))
 +  (when (yes-or-no-p (format "Buffer %s %s.  Kill? "
 +                           (buffer-name buffer)
 +                           (if (buffer-modified-p buffer)
 +                               "HAS BEEN EDITED" "is unmodified")))
      (kill-buffer buffer)))
  
  (defun kill-some-buffers (&optional list)
@@@ -5295,6 -5160,30 +5296,6 @@@ The optional second argument indicates 
          (kill-buffer-ask buffer)))))
  
  \f
 -(defun auto-save-mode (arg)
 -  "Toggle auto-saving of contents of current buffer.
 -With prefix argument ARG, turn auto-saving on if positive, else off."
 -  (interactive "P")
 -  (setq buffer-auto-save-file-name
 -        (and (if (null arg)
 -               (or (not buffer-auto-save-file-name)
 -                   ;; If auto-save is off because buffer has shrunk,
 -                   ;; then toggling should turn it on.
 -                   (< buffer-saved-size 0))
 -             (or (eq arg t) (listp arg) (and (integerp arg) (> arg 0))))
 -           (if (and buffer-file-name auto-save-visited-file-name
 -                    (not buffer-read-only))
 -               buffer-file-name
 -             (make-auto-save-file-name))))
 -  ;; If -1 was stored here, to temporarily turn off saving,
 -  ;; turn it back on.
 -  (and (< buffer-saved-size 0)
 -       (setq buffer-saved-size 0))
 -  (if (called-interactively-p 'interactive)
 -      (message "Auto-save %s (in this buffer)"
 -             (if buffer-auto-save-file-name "on" "off")))
 -  buffer-auto-save-file-name)
 -
  (defun rename-auto-save-file ()
    "Adjust current buffer's auto save file name for current conditions.
  Also rename any existing auto save file, if it was made in this session."
@@@ -5658,14 -5547,12 +5659,14 @@@ preference to the program given by thi
  
  (defun get-free-disk-space (dir)
    "Return the amount of free space on directory DIR's file system.
 -The result is a string that gives the number of free 1KB blocks,
 -or nil if the system call or the program which retrieve the information
 -fail.  It returns also nil when DIR is a remote directory.
 -
 -This function calls `file-system-info' if it is available, or invokes the
 -program specified by `directory-free-space-program' if that is non-nil."
 +The return value is a string describing the amount of free
 +space (normally, the number of free 1KB blocks).
 +
 +This function calls `file-system-info' if it is available, or
 +invokes the program specified by `directory-free-space-program'
 +and `directory-free-space-args'.  If the system call or program
 +is unsuccessful, or if DIR is a remote directory, this function
 +returns nil."
    (unless (file-remote-p dir)
      ;; Try to find the number of free blocks.  Non-Posix systems don't
      ;; always have df, but might have an equivalent system call.
                                         directory-free-space-args
                                         dir)
                           0)))
 -          ;; Usual format is a header line followed by a line of
 -          ;; numbers.
 +          ;; Assume that the "available" column is before the
 +          ;; "capacity" column.  Find the "%" and scan backward.
            (goto-char (point-min))
            (forward-line 1)
 -          (if (not (eobp))
 -              (progn
 -                ;; Move to the end of the "available blocks" number.
 -                (skip-chars-forward "^ \t")
 -                (forward-word 3)
 -                ;; Copy it into AVAILABLE.
 -                (let ((end (point)))
 -                  (forward-word -1)
 -                  (buffer-substring (point) end))))))))))
 +          (when (re-search-forward
 +                 "[[:space:]]+[^[:space:]]+%[^%]*$"
 +                 (line-end-position) t)
 +            (goto-char (match-beginning 0))
 +            (let ((endpt (point)))
 +              (skip-chars-backward "^[:space:]")
 +              (buffer-substring-no-properties (point) endpt)))))))))
  
  ;; The following expression replaces `dired-move-to-filename-regexp'.
  (defvar directory-listing-before-filename-regexp
@@@ -6484,4 -6373,5 +6485,4 @@@ Otherwise, trash FILENAME using the fre
  (define-key ctl-x-5-map "r" 'find-file-read-only-other-frame)
  (define-key ctl-x-5-map "\C-o" 'display-buffer-other-frame)
  
 -;; arch-tag: bc68d3ea-19ca-468b-aac6-3a4a7766101f
  ;;; files.el ends here
diff --combined lisp/gnus/ChangeLog
index 576cec2ca827e3c526b5b2dab21abc8c87669b43,1b2ef3e167e5d0ff5598f3fca0d00bbfb1e33a88..52c72ec86062ddac8bf0ecc23df56cd437c74ce3
 -2011-02-18  Glenn Morris  <rgm@gnu.org>
++2011-02-19  Glenn Morris  <rgm@gnu.org>
+       * gnus.el (gnus-meta): Doc fix.
 -2011-02-17  Chong Yidong  <cyd@stupidchicken.com>
++2011-02-19  Chong Yidong  <cyd@stupidchicken.com>
+       * nnfolder.el (nnfolder-save-buffer): Don't let-bind copyright-update,
+       in case it's not yet loaded.
 +2011-02-19  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-parse-copied-articles): Allow for "<foo> OK"
 +      outputs from the server.
 +
 +2011-02-18  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
 +
 +      * gnus-art.el (gnus-article-prepare): Run gnus-article-prepare-hook
 +      later so that bbdb can hook in easier.
 +
 +2011-02-18  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * auth-source.el (auth-source-search): Don't try to create credentials
 +      if the caller doesn't want that.
 +      (auth-source-search): If we don't find a match, don't bug out on
 +      non-bound variables.
 +      (auth-source-search): Only ask a single backend to create the
 +      credentials.
 +
 +      * nnimap.el (nnimap-log-command): Add a newline to the inhibited
 +      logging.
 +      (nnimap-credentials): Protect against auth-source-search returning nil.
 +      (nnimap-request-list): Protect against not being able to open the
 +      server.
 +
 +2011-02-17  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * auth-source.el (auth-source-search): Do a two-phase search, one with
 +      no :create to get the responses from all backends.
 +
 +      * nnimap.el (nnimap-open-connection-1): Delete duplicate server names
 +      when getting credentials.
 +
 +      * gnus-util.el (gnus-delete-duplicates): New function.
 +
 +2011-02-17  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * nnimap.el (nnimap-credentials): Instead of picking the first port as
 +      a creation default, pass the whole port list down.  It will be
 +      completed.
 +
 +      * auth-source.el (auth-source-search): Updated docs to talk about
 +      multiple creation choices.
 +      (auth-source-netrc-create): Accept a list as a value (from the search
 +      parameters) and do completion on that list.  Keep a separate netrc line
 +      with the password obscured for showing the user.
 +
 +      * nnimap.el (nnimap-open-connection-1): Make the `nnimap-address' the
 +      first choice to `auth-source-search' so it will be used for entry
 +      creation instead of the server's Gnus-specific name.
 +      (nnimap-credentials): Rely on the auth-source library to select which
 +      port is actually wanted in the new netrc entry, so don't override
 +      `auth-source-creation-defaults'.
 +
 +      * auth-source.el (auth-source-netrc-parse): Use :port instead of
 +      :protocol and accept a missing user, host, or port as a wildcard match.
 +      (auth-source-debug): Default to off.
 +
 +      (auth-source-netrc-search, auth-source-netrc-create)
 +      (auth-source-secrets-search, auth-source-secrets-create)
 +      (auth-source-user-or-password, auth-source-backend, auth-sources)
 +      (auth-source-backend-parse-parameters, auth-source-search): Use :port
 +      instead of :protocol.
 +
 +      * nnimap.el (nnimap-credentials): Pass a port default to
 +      `auth-source-search' in case an entry needs to be created.
 +      (nnimap-open-connection-1): Use :port instead of :protocol.
 +
 +2011-02-17  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * auth-source.el (auth-source-secrets-search): Use mm-delete-duplicates
 +      instead of delete-dups that is not available in XEmacs 21.4.
 +
 +2011-02-16  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-propagate-marks): Change default to t again, since
 +      nil means that nnimap doesn't get updated.
 +
 +2011-02-16  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-netrc-create): Return a synthetic search
 +      result when the user doesn't want to write to the file.
 +      (auth-source-netrc-search): Expect a synthetic result and proceed
 +      accordingly.
 +      (auth-source-cache-expiry): New variable to override
 +      `password-cache-expiry'.
 +      (auth-source-remember): Use it.
 +
 +      * nnimap.el (nnimap-credentials): Remove the `inhibit-create'
 +      parameter.  Create entry if necessary by using :create t.
 +      (nnimap-open-connection-1): Don't pass `inhibit-create'.
 +
 +2011-02-15  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-debug): Enable by default and don't
 +      mention the obsolete `auth-source-hide-passwords'.
 +      (auth-source-do-warn): New function to debug unconditionally.
 +      (auth-source-do-debug): Use it.
 +      (auth-source-backend-parse): Use it for invalid `auth-sources' entries
 +      and for Secrets API entries when the secrets.el library is not
 +      available.
 +
 +2011-02-14  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-propagate-marks): Default to nil.
 +      (gnus-summary-exit): Kill the correct article buffer on exit from a
 +      `C-d' group.
 +
 +      * gnus-start.el (gnus-use-backend-marks): Removed, since it duplicates
 +      gnus-propagate-marks.
 +
 +      * gnus-sum.el (gnus-summary-exit-no-update): Restore the group conf
 +      before killing the buffers so that a non-full window conf gets handled
 +      correctly.
 +      (gnus-summary-exit): Ditto.
 +      (gnus-summary-read-group-1): Ditto.
 +
 +      * nntp.el (nntp-retrieve-group-data-early): Reinstate the two-part
 +      async code again so that we can debug it properly.
 +
 +      * message.el (message-reply): Take an optional switch-buffer parameter
 +      so that Gnus window confs are respected better.
 +
 +2011-02-14  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-backend-parse-parameters): Don't rely on
 +      `plist-get' to accept non-list parameters (XEmacs issue).  Fix
 +      docstring.
 +      (auth-source-secrets-search): Use `delete-dups', `append mapcar', and
 +      `butlast' instead of `remove-duplicates', `mapcan', and `subseq'.
 +      (auth-sources, auth-source-backend-parse, auth-source-secrets-search):
 +      Login collection is "Login" and not "login".
 +
 +2011-02-14  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (article-update-date-lapsed): Don't bug out when updating
 +      multiple headers.
 +
 +      * nnimap.el (nnimap-inhibit-logging): New variable.
 +      (nnimap-log-command): Don't log login commands.
 +
 +      * auth-source.el (auth-source-netrc-search): The asserts seem to want
 +      to have more parameters.
 +
 +      * nnimap.el (nnimap-send-command): Mark the command time for each
 +      command, so that we don't get NOOPs stepping on our toes.
 +
 +      * gnus-art.el (article-date-ut): Get the date from the Date header on
 +      `t'.
 +
 +2011-02-14  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * auth-source.el (auth-source-search): Use copy-sequence instead of
 +      the cl.el copy-list.
 +
 +2011-02-13  Adam Sjøgren  <asjo@koldfront.dk>
 +
 +      * gnus-delay.el (gnus-delay-article) Fix number of seconds per day.
 +      Improve prompt.
 +
 +2011-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (gnus-article-mode-line-format): Remove the article
 +      washing status from the default format.  It isn't very informative.
 +
 +2011-02-13  Tassilo Horn  <tassilo@member.fsf.org>  (tiny change)
 +
 +      * nnimap.el (nnimap-request-accept-article, nnimap-process-quirk): Fix
 +      Gcc processing on imap.
 +
 +2011-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * message.el (message-bury): Don't pop up a new window when selected
 +      window is dedicated.
 +
 +2011-02-10  Antoine Levitt  <antoine.levitt@gmail.com>  (tiny change)
 +
 +      * gnus-sum.el (gnus-summary-save-parts): Use read-directory-name.
 +
 +2011-02-10  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * sieve-manage.el: Autoload `auth-source-search'.
 +      (sieve-sasl-auth): Use it.
 +
 +2011-02-09  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * nnimap.el: Autoload `auth-source-forget+'.
 +      (nnimap-open-connection-1): Use it if the connection fails.
 +
 +      * auth-source.el: Require `password-cache'.
 +      (auth-source-hide-passwords, auth-source-cache): Remove and mark
 +      obsolete.
 +      (auth-source-magic): Marker for `password-cache' keys.
 +      (auth-source-do-cache): Update docstring.
 +      (auth-source-search): Use and check cache.
 +      (auth-source-forget-all-cached, auth-source-remember)
 +      (auth-source-recall, auth-source-forget, auth-source-forget+)
 +      (auth-source-specmatchp): Caching support functions.
 +      (auth-source-forget-user-or-password, auth-source-forget-all-cached):
 +      Remove and obsolete.
 +      (auth-source-user-or-password): Remove caching to further discourage
 +      using it.  Always hide passwords.
 +
 +2011-02-09  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nntp.el (nntp-retrieve-group-data-early-disabled): Disable the async
 +      code for now, since it doesn't work for all users.
 +
 +2011-02-09  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-options): Make message-options really buffer
 +      local.
 +
 +2011-02-08  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * mail-source.el: Autoload `auth-source-search'.
 +      (mail-source-keyword-map): Note order matters.
 +      (mail-source-set-1): Get all the mail-source source values and
 +      defaults and search auth-source on those if needed.  This can all
 +      probably be simplified.
 +
 +      * nnimap.el: Autoload `auth-source-search'.
 +      (nnimap-credentials): Use it.
 +      (nnimap-open-connection-1): Ask for the virtual server and physical
 +      address in one shot.
 +
 +      * nntp.el: Autoload `auth-source-search'.
 +      (nntp-send-authinfo): Use it.  Note TODO.
 +
 +2011-02-08  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-tag-body): Add support for text attribute in body
 +      markups.
 +
 +      * message.el (message-options): Make message-options a local variable.
 +
 +2011-02-07  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-secrets-search)
 +      (auth-source-user-or-password): Use `append' instead of `nconc'.
 +      (auth-source-user-or-password): Build return list better and protect
 +      against nil :secret.
 +
 +2011-02-07  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-update-info): Refactor slightly.
 +      (nnimap-update-info): Tell Gnus whether there are any \Recent messages.
 +      (nnimap-update-info): Clean up slightly.
 +      (nnimap-quirk): Add quirk for Gmail IMAP which bugs out on NUL
 +      characters.
 +      (nnimap-process-quirk): Rename function to avoid collision.
 +      (nnimap-update-info): Fix macrology bug-out.
 +      (nnimap-update-info): Simplify split history test.
 +
 +2011-02-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * auth-source.el (top): Require 'eieio unconditionally.  Autoload
 +      `secrets-get-attributes' instead of `secrets-get-attribute'.
 +      (auth-source-secrets-search): Limit search when `max' is greater than
 +      number of results.
 +
 +2011-02-06  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nntp.el (nntp-finish-retrieve-group-infos): Protect against the first
 +      part not returning any data.
 +
 +      * proto-stream.el (open-protocol-stream): Document the return value.
 +
 +2011-02-06  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-secrets-search): Add examples.
 +
 +2011-02-06  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-setup-1): Handle message-generate-headers-first
 +      set to t.
 +
 +2011-02-06  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-sources): Allow for simpler defaults for Secrets
 +      API with a string "secrets:collection-name" and with 'default.
 +      (auth-source-backend-parse): Parse "secrets:collection-name" and
 +      'default.  Recurse on parses instead of repeating code.  Use the
 +      Secrets API is the source is not nil and 'ignore otherwise.  Emit a
 +      message when ignoring a source.
 +      (auth-source-search): List ignored search keys at the top level.
 +      (auth-source-netrc-create): Use `case' instead of `cond'.
 +      (auth-source-secrets-search): Created with TODOs.
 +      (auth-source-secrets-create): Created with TODOs.
 +      (auth-source-retrieve, auth-source-create, auth-source-delete)
 +      (auth-source-protocol-defaults, auth-source-user-or-password-imap)
 +      (auth-source-user-or-password-pop3, auth-source-user-or-password-ssh)
 +      (auth-source-user-or-password-sftp)
 +      (auth-source-user-or-password-smtp): Removed.
 +      (auth-source-user-or-password): Deprecated and modified to be a wrapper
 +      around `auth-source-search'.  Not tested thoroughly.
 +
 +2011-02-04  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el: Bring in assoc and eioeio libraries.
 +      (secrets-enabled): New variable to track the status of the Secrets API.
 +      (auth-source-backend): New EIOEIO class to represent a backend.
 +      (auth-source-creation-defaults): New variable to set prompt defaults
 +      during token creation (see the `auth-source-search' docstring for
 +      details).
 +      (auth-sources): Simplify to allow a simple string as a netrc backend
 +      spec.
 +      (auth-source-backend-parse): Parse a backend from an `auth-sources' spec.
 +      (auth-source-backend-parse-parameters): Fill in the backend parameters.
 +      (auth-source-search): Main auth-source API entry point.
 +      (auth-source-delete): Wrapper around `auth-source-search' for deletion.
 +      (auth-source-search-collection): Helper function for searching.
 +      (auth-source-netrc-parse, auth-source-netrc-normalize)
 +      (auth-source-netrc-search, auth-source-netrc-create): Netrc backend.
 +      Supports search, create, and delete.
 +      (auth-source-secrets-search, auth-source-secrets-create): Secrets API
 +      backend stubs.
 +      (auth-source-user-or-password): Call `auth-source-search' but it's not
 +      ready yet.
 +
 +2011-02-04  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-setup-1): Remove the read-only stuff, since it
 +      doesn't work under XEmacs, for some reason.
 +
 +      * gnus-sum.el (gnus-user-date): Rename back from
 +      gnus-summary-user-date since user code refers to it.
 +
 +      * shr.el (shr-render-td): Store the actual background colour used.
 +
 +      * message.el (message-setup-1): Don't bind the constant
 +      -forbidden-properties.
 +      (message-setup-1): Revert previous change, since it needs to bind the
 +      props to insert them.
 +      (message-resend): Allow removing the read-only separator line.
 +
 +2011-02-03  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-accept-article): Give an error message if
 +      the APPEND wasn't successful.
 +
 +2011-02-03  Adam Sjøgren  <asjo@koldfront.dk>
 +
 +      * gnus-start.el (gnus-get-unread-articles): Fix the call to methods
 +      that have no groups.
 +
 +2011-02-03  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-draft.el: Remove progn around gnus-draft-setup.
 +
 +2011-02-03  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): This function is never
 +      called with a nil `infos', so clean that up.
 +      (gnus-get-unread-articles): Request active files from primary/secondary
 +      methods that have no groups (yet).
 +
 +2011-02-03  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-setup-1): Always generate References first.
 +      (message-mail): Return the return value of message-setup, not always t.
 +      (message-setup-1): Insert mail-header-separator with read-only and
 +      intangible properties set.
 +
 +      * gnus.el (gnus-summary-line-format): Add missing semi-colon for
 +      user-date in docstring.
 +
 +      * gnus-art.el (gnus-article-jump-to-part): Remove useless sit-for.
 +
 +      * gnus.el (gnus-summary-line-format): Mention &user-date format in
 +      docstring.
 +
 +      * gnus.el (gnus-user-date-format-alist): Change default value. Use
 +      defcustom, with type and group. Move from gnus-util.el. Rename to
 +      gnus-summary-user-date-format-alist.
 +
 +2011-02-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * nnimap.el (gnus-fetch-headers): Declare.
 +
 +      * nnheader.el (gnus-range-add, gnus-remove-from-range): Autoload.
 +
 +2011-02-03  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-forward-make-body-digest-plain)
 +      (message-followup, message-reply): Clean up things noted by Stefan.
 +
 +      * gnus-art.el (gnus-article-setup-buffer): Stop the date timer if
 +      gnus-article-update-date-headers is nil.
 +      (gnus-article-date-headers): Rip out the old -treat-date-* stuff, since
 +      it didn't really work with defcustom.
 +      (article-update-date-lapsed): Make sure the window start doesn't move,
 +      either.
 +
 +2011-02-01  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-uu.el (mm-uu-type-alist): Add support for git format-patch diff
 +      format.
 +
 +      * mm-decode.el (mm-inline-media-tests): Do not check for diff-mode it's
 +      standard in Emacs nowadays.
 +
 +2011-02-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * message.el (message-expand-name): Don't trust the return value of
 +      bbdb-complete-name.
 +      (message-check-news-header-syntax): Remove unused var `start'.
 +      (message-idna-to-ascii-rhs-1): Remove unused vars `rhs' and `address'.
 +      (message-inhibit-body-encoding): Move to before first use.
 +      (mail-abbrev-mode-regexp, Expires, User-Agent, Lines, Distribution)
 +      (To, References, In-Reply-To, Newsgroups, Subject, Path, From)
 +      (Organization, Message-ID, Date, mh-previous-window-config):
 +      Defvar the vars using dynamic scoping.
 +
 +2011-02-01  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-render-td): Only do colours at the final rendering.
 +      Should be slightly faster.
 +      (shr-insert-table): Fix up TD background colours when doing the
 +      vertical padding.
 +
 +      * gnus-art.el (article-date-ut): Protect against articles with no Date
 +      header.
 +      (article-update-date-lapsed): Don't use current-column to find the
 +      horizontal position.  It's fragile in the presence of \003 characters.
 +
 +      * gnus-start.el (gnus-read-active-file-1): Remove dead parameter infos.
 +
 +2011-01-31  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (article-transform-date): Rewrite to still work when
 +      there are several rfc2822 parts.
 +      (article-transform-date): Fix infinite recursion.
 +      (article-date-ut): Replace infinitely many Date headers with a single
 +      one when called interactively.
 +
 +      * nnimap.el (nnimap-wait-for-response): Wait for results in a more
 +      secure manner.
 +
 +      * gnus-art.el (article-update-date-lapsed): Try to avoid having point
 +      move around by not using save-window-excursion.  It seems to work...
 +
 +2011-01-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (article-make-date-line): Work for user-defined format.
 +
 +2011-01-31  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nntp.el (nntp-retrieve-group-data-early)
 +      (nntp-finish-retrieve-group-infos): Implement the asynchronous data
 +      fetching functions.
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Read the active files
 +      thoroughly for all backends that have no known groups.  This should
 +      allow new nnml methods to retrieve mail.
 +
 +      * gnus-group.el (gnus-group-jump-to-group): Allow jumping to groups
 +      that Gnus doesn't know exists again.
 +
 +      * gnus-art.el (gnus-article-date-lapsed-new-header): Removed.
 +      (gnus-treat-date-ut): Ditto.
 +      (gnus-article-update-date-header): Renamed.
 +      (gnus-treat-date-local): Removed.
 +      (gnus-treat-date-english): Removed.
 +      (gnus-treat-date-lapsed): Removed.
 +      (gnus-treat-date-combined-lapsed): Removed.
 +      (gnus-treat-date-original): Removed.
 +      (gnus-treat-date-iso8601): Removed.
 +      (gnus-treat-date-user-defined): Removed.
 +      (gnus-article-date-headers): New variable to control all the date
 +      header options.
 +      (article-date-ut): Rewrite to allow using the new way to format date
 +      headers(s).
 +
 +2011-01-30  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnmail.el (nnmail-article-group): Check for a direct fancy split
 +      method.
 +      (nnmail-article-group): A better test for fanciness.
 +
 +      * nnimap.el (nnimap-request-head): Protect against not finding the
 +      article by Message-ID.
 +
 +2011-01-29  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (article-update-date-lapsed): Try a better way to really
 +      keep point at the "same place".
 +
 +2011-01-28  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-select-newsgroup): Don't try to alter the active
 +      data if the group is unactivated.
 +
 +2011-01-28  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-win.el: Remove dead function gnus-window-configuration-element.
 +      (gnus-all-windows-visible-p): Remove old compatibility code.
 +      (gnus-window-top-edge): Add docstring.
 +
 +      * gnus-group.el (gnus-group-jump-to-group): Set must match to t.
 +
 +2011-01-28  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-int.el (gnus-request-marks): Call *-request-marks instead of the
 +      older request-update-info.
 +
 +      * gnus-art.el (article-make-date-line): Limit the length a bit more.
 +
 +2011-01-28  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mml2015.el (mml2015-epg-sign, mml2015-epg-encrypt):
 +      Give mml2015-signers higher precedence over mml2015-sign-with-sender.
 +
 +2011-01-27  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-refresh-group): Refresh even non-visible
 +      groups.  This makes the nndraft:queue group pop up if it's not already
 +      there.
 +
 +      * gnus-sum.el (gnus-summary-read-group-1): Fix the "contains no
 +      messages" logic, which was reversed.
 +
 +      * gnus-art.el (article-update-date-lapsed): Ensure that point stays at
 +      the "same place" even if point is on the line being replaced.
 +      (article-update-date-lapsed): Allow updating both the combined lapsed
 +      and the lapsed headers.
 +      (article-update-date-lapsed): Skip past all the X-Sent/Date headers.
 +      (article-make-date-line): Limit the number of segments dynamically to
 +      avoid too-long lines.
 +
 +2011-01-27  Julien Danjou  <julien@danjou.info>
 +
 +      * mml2015.el (mml2015-epg-sign): Add and use mml2015-sign-with-sender.
 +      (mml2015-epg-encrypt): Use mml2015-sign-with-sender.
 +
 +2011-01-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-expand-newlines, shr-previous-newline-padding-width):
 +      Use plist-get instead of the cl function getf.
 +
 +2011-01-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-util.el (float-time): Get rid of compiler warning, again.
 +
 +2011-01-27  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-put-color): Special-case background colours: Do put them
 +      at the blank parts at the front of the lines.
 +
 +      * gnus-draft.el (gnus-draft-clear-marks): New function to be run as an
 +      exit hook to nix out all data on readedness on group exit.
 +
 +      * gnus-util.el (float-time): If float-time is bound, always use it on
 +      all Emacsen.  It's unclear why the subrp check was there.
 +      (time-date): Require to make some autoload issues on XEmacs go away.
 +
 +      * shr.el (shr-put-color): Don't do the box padding in tables, since
 +      they're already padded.
 +
 +2011-01-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (gnus-article-next-page): When the last line of the
 +      article is displayed, scroll down once more instead of going to the
 +      next article at once.
 +      (article-lapsed-string): Refactor out and allow specifying how many
 +      segments you want.
 +      (gnus-article-setup-buffer): Start updating the lapsed header directly.
 +      (gnus-article-update-lapsed-header): New variable.
 +
 +      * shr.el: Revert change that made headings use different-sized faces.
 +      The Emacs display engine isn't advanced enough that, for instance,
 +      tables can comfortably use differntly-sized faces.
 +
 +2011-01-25  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection-1): Store the actual stream type
 +      used.
 +      (nnimap-login): Prefer plain LOGIN if it's enabled (since it requires
 +      fewer round trips than CRAM-MD5, and it's less likely to be buggy), and
 +      we're using an encrypted connection.
 +
 +      * proto-stream.el: Alter the interface functions to also return the
 +      actual stream type used: network or tls.
 +
 +2011-01-25  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-view.el (mm-display-shell-script-inline): Fix typo in docstring.
 +      (mm-display-javascript-inline): New function.
 +
 +      * mm-decode.el (mm-inline-media-tests): Add application/javascript
 +      viewing function.
 +
 +2011-01-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-expand-newlines): Fix variable name.
 +
 +2011-01-25  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-expand-newlines): Make nested boxes work.
 +
 +2011-01-24  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-expand-newlines): Proof of concept implemantation of boxy
 +      backgrounds.
 +      (shr-expand-newlines): Switch to using overlays to enable kill'n'yank
 +      in a more sensible manner.
 +
 +2011-01-24  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * mml-smime.el (mml-smime-use): Make it a defcustom and default to 'epg
 +      if EPG is loaded.
 +
 +2011-01-24  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el: Use defface to create shr-tag-h[1-6] faces to fontify h[1-6]
 +      tags.
 +
 +2011-01-24  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (gnus-article-read-summary-keys): Don't call disabled
 +      commands.
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Don't move point around
 +      in the article buffer.
 +      (gnus-gravatar-insert): Use blank space from the current buffer to
 +      avoid breaking text properties.  This makes X-Sent updating work again.
 +
 +      * gravatar.el (gravatar-retrieve): Be silent when retrieving.
 +
 +2011-01-23  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-image-fetched): Kill the buffer anyway, and
 +      fix the bug in url-http.el instead.
 +
 +      * shr.el (shr-image-fetched): Ditto.
 +
 +      * shr.el (shr-image-fetched): Avoid having point move in the article
 +      buffer.
 +
 +      * gnus-html.el (gnus-html-image-fetched): Don't kill the temporary
 +      buffer after being called.  It's apparently being killed by url.el, and
 +      killing it made point move to end-of-buffer in a random buffer.
 +
 +      * shr.el (shr-image-fetched): Ditto.
 +
 +2011-01-23  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-decode.el (mm-inline-media-tests): Change text/org to text/x-org.
 +
 +      * mm-uu.el (mm-uu-org-src-code-block-extract): Change text/org to
 +      text/x-org.
 +
 +2011-01-22  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-move-article): Protect against backends
 +      (i.e., nnimap) returning nil as the article number.
 +
 +2011-01-22  Kazuhiro Ito  <kzhr@d1.dion.ne.jp>  (tiny change)
 +
 +      * flow-fill.el (fill-flowed): Make `delete-space' option correspond to
 +      "DelSp" parameter in RFC3676.
 +
 +2011-01-22  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-check-recipients): Display the encoded version of
 +      the bogus address if they differ.
 +
 +      * gnus-draft.el (gnus-group-send-queue): Really refresh the queue group
 +      after sending.
 +
 +      * gnus-agent.el (gnus-agent-send-mail): Ditto.
 +
 +      * gnus-group.el (gnus-group-refresh-group): New convenience function.
 +
 +      * gnus-draft.el (gnus-group-send-queue): Update the queue group in the
 +      group buffer after sending the queue.
 +
 +      * gnus-agent.el (gnus-agent-send-mail): Ditto.
 +
 +2011-01-22  Julien Danjou  <julien@danjou.info>
 +
 +      * mailcap.el (mailcap-mime-extensions): Rename text/org to text/x-org.
 +
 +2011-01-22  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-decode.el (mm-preferred-alternative-precedence): Don't bug out on
 +      nested related parts.
 +
 +      * nnfolder.el (nnfolder-request-expire-articles): Return the list of
 +      unexpired articles.  This fixes the regression that led expiry marks to
 +      disappear from nnfolder groups.
 +
 +2011-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-art.el (gnus-button-alist, gnus-button-handle-info-keystrokes):
 +      Don't confuse the "ret" of "retrograde" with RET.
 +
 +2011-01-21  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-art.el (gnus-mime-display-single): Use mm-display-inline rather
 +      than mm-insert-inline.
 +
 +2011-01-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-remove-images, gnus-article-show-images):
 +      Widen article buffer.
 +
 +2011-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * mm-util.el (mm-find-buffer-file-coding-system): Don't forget to kill
 +      the temp buffer.
 +      * message.el (message-mailer-swallows-blank-line): Use with-temp-buffer.
 +
 +2011-01-20  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-decode.el (mm-inline-media-tests): Add text/x-sh.
 +
 +      * gnus-art.el (gnus-mime-inline-part): Use mm-display-inline rather
 +      than mm-insert-inline to insert inline part: this respect
 +      mm-inline-media-tests displayers.
 +
 +      * mm-view.el (mm-display-shell-script-inline): New function.
 +
 +      * mm-decode.el (mm-inline-media-tests): Add x-shellscript and x-sh.
 +
 +      * mm-uu.el (mm-uu-type-alist): Add org block.
 +      (mm-uu-org-src-code-block-extract): New function.
 +
 +      * mm-view.el (mm-display-org-inline): New function.
 +
 +      * mm-decode.el (mm-automatic-display): Add text/org.
 +
 +      * mailcap.el (mailcap-mime-extensions): Add .org.
 +
 +2011-01-19  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-highlight): Remove argument passed to
 +      gnus-article-add-buttons.
 +
 +2011-01-19  Tom Rauchenwald  <sehnsucht.nach.unendlichkeit@quantentunnel.de>  (tiny change)
 +
 +      * spam.el (spam-spamassassin-register-with-sa-learn): Insert a full
 +      From header with a date and "nobody" as the sender.
 +
 +2011-01-19  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-art.el (gnus-article-add-buttons): Simplify condition.
 +      (gnus-button-push): Remove gnus-button-entry function, it fails heavily
 +      if you have the same regexp several times.
 +      (gnus-button-push): Fix matching when regexp is symbol.
 +
 +2011-01-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * message.el (message-mail): A compose-mail function should
 +      accept headers as strings.
 +
  2011-01-13  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * message.el (message-bury): Add special-case handling for Rmail.
 +      * message.el (message-tool-bar-gnome): Tweak tool-bar items.
 +      Add :vert-only tags.
 +      (message-mail): New arg RETURN-ACTION.
 +      (message-return-action): New var.
 +      (message-bury): Use it.
 +      (message-mode): Make it buffer-local.
 +      (message-send-and-exit): Always call message-bury.
 +
 +      * gnus-msg.el (gnus-msg-mail): New arg RETURN-ACTION.  Pass it to
 +      message-mail.
 +
 +2011-01-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-convert-partial-article): Protect against
 +      zero-length body parts.
 +
 +      * mm-decode.el (mm-preferred-alternative-precedence):
 +      Discourage showing empty parts.
 +
 +      * gnus-int.el (gnus-request-accept-article): Don't try to update marks
 +      and stuff if the backend didn't return the article number.  This fixes
 +      an Exchange-related nnimap bug.
 +
 +      * gnus-sum.el (gnus-summary-next-article): Remove hack to reselect
 +      group window, because it does the wrong thing when a separate frame
 +      displays the group buffer.
 +
 +      * proto-stream.el (open-protocol-stream): Protect against the low-level
 +      transport functions returning nil.
 +
 +2011-01-07  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mml2015.el (epg-sub-key-fingerprint): Autoload.
 +      (mml2015-epg-find-usable-secret-key): New function.
 +      (mml2015-epg-sign): Use mml2015-epg-find-usable-secret-key instead of
 +      mml2015-epg-find-usable-key (Bug#7797).
 +      (mml2015-epg-encrypt): Ditto.
 +
 +2011-01-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * flow-fill.el (fill-flowed-encode): Do encoding citation-aware.
 +
 +2011-01-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * sieve-manage.el (sieve-manage-open): Correctly set sieve-manage-port.
 +
 +      * sieve.el (sieve-open-server): Give a more explicit error if
 +      sieve-manage-open returns nil.  (Bug#7720)
 +
 +2011-01-02  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * gnus-msg.el (gnus-message-replyencrypt): Default to `t'.
 +
 +2011-01-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-login): Prefer AUTH=CRAM-MD5, if it's available.
 +      This avoids sending passwords in plain text over non-encrypted
 +      channels.
 +
 +      * shr.el (shr-rescale-image): Display all GIF images as animated images.
 +
 +      * nnimap.el (nnimap-login): Refactored out into own function, and
 +      implement CRAM-MD5.
 +      (nnimap-wait-for-line): Refactored out.
 +
 +      * mm-view.el (mml-smime): Require.
 +
 +2010-12-20  David Engster  <deng@eml.cc>
 +
 +      * mm-view.el (mm-view-pkcs7-decrypt): If mml-smime-use is set to 'epg,
 +      use EPG to decrypt S/MIME messages instead of openssl.
 +
 +2011-01-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-group): Avoid double SELECT on `M-g'.
 +
 +      * gnus-group.el (gnus-group-kill-group): Don't try to update the group
 +      status is the group clearly is unreachable.
 +
 +      * auth-source.el (auth-source-create): Add the optional second
 +      parameter to `local-variable-p' to be compatible with XEmacs.
 +
 +2011-01-02  Wang Diancheng  <dcwang@kingbase.com.cn>  (tiny change)
 +
 +      * nnml.el (nnml-request-article): Allow requesting by Message-ID to
 +      work when using a compressed nnml folder.
 +
 +2011-01-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-select-newsgroup): Don't propagate marks to
 +      backends after sanitising on entry, because this never makes sense:
 +      If the articles have gone missing, then the data no longer exists on
 +      the backend, and if they haven't, then Gnus is wrong, and shouldn't
 +      overwrite anything anyway.
 +
 +      * shr.el (shr-insert-document): Bind shr-width dynamically to
 +      window-width if it's nil.
 +
 +2010-12-30  Tassilo Horn  <tassilo@member.fsf.org>
 +
 +      * shr.el (shr-width, shr-insert-document): Allow nil as shr-width value
 +      with the meaning of using the full emacs window width for rendering.
 +
 +2010-12-27  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mml2015.el (mml2015-epg-sign, mml2015-epg-encrypt): Take care the
 +      case when sender is not given.
 +
 +2010-12-23  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): Set
 +      `mail-extr-ignore-realname-equals-mailbox-name' to nil when extracting
 +      the addresses, otherwise we might misplaced the gravatar.
 +
 +2010-12-21  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mml1991.el (pgg-sign-region, pgg-encrypt-region):
 +      * gnus-art.el (pgg-snarf-keys-region): Autoload since PGG is now
 +      obsolete in Emacs.
 +
 +2010-12-20  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-rescale-image): Revert last change.
 +
 +2010-12-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-delete-articles): New command.
 +
 +2010-12-17  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-mode): Make sure 'gnus-registry-install is bound.
 +
 +2010-12-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-get-newsgroup-headers): Revert the last change
 +      here, since it's up to the backends to do CRLF removal if their
 +      protocol has it.
 +
 +      * nnimap.el (nnimap-retrieve-headers): Remove CRLF from the headers.
 +
 +2010-12-17  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-rescale-image): Allow to resize images even if
 +      they are from file. Can also scale up.
 +
 +2010-12-17  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-sum.el (gnus-summary-refer-thread): Simplify code. Restore
 +      gnus-use-agent.
 +      (gnus-get-newsgroup-headers): Avoid unwanted spaces at eol.
 +
 +      * nnir.el (nnir-get-active): Ignore nnir-ignored-newsgroups if null.
 +
 +2010-12-17  Julien Danjou  <julien@danjou.info>
 +
 +      * gravatar.el (gravatar-retrieve-synchronously): New function.
 +      (gravatar-get-data): Make more robust.
 +
 +2010-12-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-wait-for-response): Fix the end-point calculation
 +      to really consider the last line.
 +
 +2010-12-16  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * auth-source.el (auth-source-gpg-encrypt-to): New variable to set the
 +      list of recipient keys, or use symmetric encryption if not a list.
 +      (auth-source-create): Use it to make `epa-file-encrypt-to' local for an
 +      EPA override, replacing the call to `netrc-store-data'.
 +
 +2010-12-16  Dan Davison  <dandavison7@gmail.com>  (tiny change)
 +
 +      * gnus-srvr.el: Avoid passing nil regexp argument to
 +      delete-matching-lines.
 +
 +2010-12-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Make sure the HTML
 +      fetching stops when Gnus exits.
 +
 +      * nnfolder.el (nnfolder-save-all-buffers): Refactor out into its own
 +      function.
 +      (nnfolder-request-expire-articles): Save all the buffers after doing
 +      expiry.
 +
 +      * nnmail.el (nnmail-expiry-target-group): Revert the "all articles are
 +      the last article", since that led to serious performance regressions
 +      when expiring nnml groups.
 +
 +2010-12-16  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Improve customizations.
 +
 +2010-12-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-subscribe-newsgroup): Notify the backend.
 +
 +      * gnus-group.el (gnus-group-kill-group): Notify the backend that the
 +      group has been killed.
 +      (gnus-group-yank-group): Ditto.
 +
 +      * gnus-srvr.el (gnus-browse-unsubscribe-group): Ditto.
 +
 +      * nnimap.el (nnimap-request-update-group-status): New function.
 +
 +      * gnus-int.el (gnus-request-update-group-status): New interface
 +      function.
 +
 +      * gnus-sum.el (gnus-summary-push-marks-to-backend): Fix the logic for
 +      copying read-ness to the backends.
 +
 +      * nnimap.el (nnimap-quirk): New function.
 +      (nnimap-retrieve-group-data-early): Use it.
 +      (nnimap-quirks): New alist.
 +
 +2010-12-16  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Set shr-start after deleting trailing space;
 +      don't delete it within indentation.
 +
 +2010-12-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-wait-for-response): Always look (at least) at the
 +      previous line.
 +
 +2010-12-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-retrieve-group-data-early): Fix the syntax of the
 +      QRESYNC command by deleting a superfluous space which broke Cyrus
 +      servers.  This change will break other servers that are buggy the other
 +      way around.
 +
 +2010-12-14  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * spam.el: Reindent and fix long lines.
 +      (spam-copy-or-move-routine): Exclude invalid move destinations.
 +
 +2010-12-14  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-mode): Don't install registry hooks if user hasn't
 +      installed the registry.
 +
 +2010-12-13  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-gmane): Better check for gmane groups: error out if
 +      groupname doesn't contain "gmane".
 +
 +2010-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-matches-options-n): Fix typo in last change.
 +      (gnus-1): Don't create the nndrafts group twice.
 +      (gnus-setup-news): There's no need to read the active file here, since
 +      that's done again later on a per-backend basis.
 +      (gnus-start-draft-setup): Make sure that the new group is started out
 +      empty.
 +
 +      * gnus-agent.el (gnus-agentize): Don't create the queue group
 +      automatically on startup.  It'll be created later, if needed.
 +
 +      * gnus-start.el (gnus-auto-subscribed-groups): Add nnimap to the list
 +      of automatically subscribed groups.
 +      (gnus-auto-subscribed-categories): New variable.
 +      (gnus-matches-options-n): Use it.
 +      (gnus-default-subscribed-newsgroups): Remove unused variable.
 +      (gnus-start-draft-setup): Message a bit less.
 +
 +2010-12-13  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-imap): Return article list in order of increasing
 +      UID.
 +
 +2010-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-enter-digest-group):
 +      Mention gnus-auto-select-on-ephemeral-exit.
 +
 +      * proto-stream.el (proto-stream-open-network-only): Fix the calling
 +      convention of the network-only option.
 +
 +2010-12-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * proto-stream.el (proto-stream-open-network-only): New function to
 +      have a way to specify non-STARTTLS upgrade connections.
 +
 +2010-12-10  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): Fix error when
 +      email address is nil.
 +
 +      * message.el (message-bogus-recipient-p): Set address to "" if nil.
 +
 +2010-12-10  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-request-expire-articles): Ignore expiry except for
 +      deletion.
 +      (nnir-run-imap): Only need to parse list once.
 +
 +2010-12-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-script): Ignore <script>.
 +      (shr-tag-label): Add <label> support.
 +
 +2010-12-09  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-ucs-to-char): Use eval-and-compile.
 +
 +      * shr.el (shr-image-displayer): Work for images lined side by side.
 +
 +2010-12-08  Robert Pluim  <rpluim@gmail.com>
 +
 +      * gnus-demon.el (gnus-demon-init): Call run-with-timer with an integer
 +      parameter, since XEmacs doesn't accept t as a parameter.
 +
 +2010-12-08  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-retrieve-headers): Use rassq when comparing article
 +      ids.
 +      (nnir-run-gmane): Simplify groupspec formatting.
 +      (nnir-request-expire-articles): New function.
 +
 +2010-12-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-parse-flags): Tweak VANISHED regexp to avoid regexp
 +      overflow, possibly.
 +
 +      * shr.el (shr-tag-table-1): Use bg/gfcolor specs on tables.
 +      (shr-render-td): Handle td style="" better.
 +      (shr-tag-table): Use the color from the style sheet.
 +      (shr-render-td): Make sure we copy over all the overlays, too.
 +
 +2010-12-07  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-gmane): Restore sub-optimal test for gmane server.
 +      (nnir-request-article): Improve article retrieval.
 +
 +2010-12-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-extra-numeric-entities): New variable.
 +
 +      * mm-url.el (mm-url-decode-entities):
 +      * mm-decode.el (mm-shr): Use it to decode extra numeric entities.
 +
 +2010-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * message.el: Use completion-at-point.
 +      (message-completion-function): New fun, extracted from message-tab.
 +      (message-mode): Use it for completion-at-point-functions.
 +      (message-tab): Use it and completion-at-point.
 +
 +2010-12-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-find-fill-point): Don't break a line after a kinsoku-bol
 +      character if a non-breakable character follows.
 +
 +2010-12-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * proto-stream.el (proto-stream-open-tls): Return nil if we don't get
 +      any stream.
 +
 +      * shr.el (shr-tag-font): Colorize the region.
 +      (shr-tag-body): Ditto.
 +      (shr-tag-font): Actually let the styles be inherited instead of
 +      overwriting them.
 +      (shr-tag-font): Get the background color right.
 +      (shr-tag-style): Ignore all <style> tags for the moment.
 +
 +      * gnus-int.el (gnus-request-thread): Rework to take a header instead of
 +      a Message-ID to avoid having nnimap depend on gnus-sum.
 +
 +      * shr.el (shr-descend): Only colorize something if we have a node that
 +      sets colors.
 +
 +2010-12-06  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-render-td): Render td content with shr-descend, so style
 +      will be applied to <td> too.
 +      (shr-colorize-region): Colorize region even if we only have a background.
 +      (shr-tag-body): Fix color and background color inheritance.
 +      Do not recolorize after shr-generic.
 +      (shr-tag-font): Let shr-generic colorize via inheritance.
 +
 +2010-12-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-find-fill-point): Don't regard apostrophe as kinsoku-bol.
 +
 +2010-12-06  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-request-move-article): Remove obsolete code.
 +
 +2010-12-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-macroexpand-all): Use eval-and-compile.
 +
 +2010-12-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-respool-article): The completion function
 +      expects a list instead of an alist.
 +
 +      * nntp.el (nntp-snarf-error-message): nnheader-report takes a format
 +      string as the parameter.
 +
 +      * gnus.el (gnus-valid-select-methods): Allow nnimap to respool.
 +
 +      * shr.el (shr-stylesheet): New dynamic variable for cascading the
 +      styles.
 +      (shr-colorize-region): New function.
 +      (shr-insert-background-overlay): Remove.
 +      (shr-render-td): Background setting should be taken care of on a higher
 +      level.
 +      (shr-tag-body): Use post-hoc colorizations.
 +      (shr-tag-body): Set up a style sheet based on bgcolor/fgcolor.
 +      (shr-put-color-1): Don't overwrite old colors.
 +      (shr-colorize-region): When the background color isn't explicit, use
 +      a fixed background.
 +
 +      * gnus-util.el (gnus-output-to-mail): Require nnmail before using
 +      nnmail variables.
 +
 +2010-12-05  Bjørn Mork  <bjorn@mork.no>
 +
 +      * nnimap.el (nnimap-process-expiry-targets): Avoid downloading articles
 +      unless necessary.
 +
 +2010-12-05  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-gmane): Use more careful test for gmane nntp
 +      server.
 +
 +2010-12-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-put-image): Use widget instead of local maps
 +      so that TAB works.
 +
 +      * gnus-sum.el (gnus-summary-show-article): Reverse the meanings of `C-u
 +      C-u g' and `C-u g' so that `C-u g' does what it traditionally did.
 +
 +      * shr.el (shr-urlify): Show the URL before the title to avoid
 +      misleading URLs.
 +
 +2010-12-04  Adam Sjøgren  <asjo@koldfront.dk>
 +
 +      * shr.el (shr-urlify): Display the title in <a> tags.
 +
 +2010-12-04  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-categorize): Replace mapcar with mapc.
 +
 +2010-12-03  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Rearrange code to allow macros to be autoloaded by
 +      gnus-sum.el.
 +      (nnir-retrieve-headers-override-function): Make this variable
 +      customizable.
 +      (nnir-retrieve-headers): Remove obsolete subject-mangling code.
 +
 +      * gnus-sum.el (nnir-article-group,nnir-article-rsv): Autoload macros
 +      from nnir.el.
 +
 +2010-12-03  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-demon.el (gnus-demon-init): Fix time computing when time is nil.
 +
 +2010-12-03  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-macroexpand-all): Don't modify argument;
 +      allow optional argument `environment'.
 +
 +2010-12-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * mm-extern.el (message-goto-body): Update declaration.
 +
 +2010-12-03  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-macroexpand-all): New function.
 +
 +      * gnus-sum.el (gnus-summary-line-format-alist): Use gnus-macroexpand-all
 +      instead of macroexpand-all that is unavailable in XEmacs.
 +
 +2010-12-02  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-summary-line-format): New variable.
 +      (nnir-mode): Use it.
 +      (nnir-artlist-*,nnir-aritem-*): Reimplement as macros.
 +      (nnir-article-ids): Reimplement as defsubst.
 +      (nnir-retrieve-headers): Don't mangle the subject header.
 +      (nnir-run-imap): Use 100 as RSV score.
 +      (nnir-run-find-grep): Fix for full server searching.
 +      (nnir-run-gmane): Better restriction to gmane groups.
 +
 +      * gnus-sum.el (gnus-summary-line-format-alist): Add specs for nnir
 +      summary buffers.
 +
 +2010-12-02  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-win.el (gnus-configure-frame): Remove old compatibility code.
 +
 +      * gnus-msg.el: Mark gnus-outgoing-message-group as obsolete.
 +
 +      * gnus-win.el (gnus-configure-windows): Remove Gnus 3.x setting
 +      support.
 +
 +2010-12-01  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Update to handle the registry better.
 +      (autoload): Silence byte-compiler.
 +      (nnir-open-server): Add a hook for nnir groups.
 +      (nnir-request-move-article): Don't mangle the header. Better to use
 +      formating variables (which will be added in the future).
 +      (nnir-registry-action): Update the registry using the original article
 +      group name.
 +      (nnir-mode): Install nnir-specific hooks for updating the registry.
 +
 +      * gnus-sum.el
 +      (gnus-article-original-subject,gnus-newsgroup-original-name):
 +      Remove obsolete variables.
 +      (gnus-summary-move-article): Remove use of obsolete variables.
 +      (gnus-summary-local-variables): Make move and delete hooks local to
 +      summary buffers.
 +
 +2010-12-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * rtree.el: New file.
 +
 +2010-12-01  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-user-organization): Do not use
 +      gnus-local-organization.
 +
 +      * gnus.el: Remove gnus-local-organization.
 +
 +      * gnus-msg.el: Remove nastygram thing.
 +
 +2010-12-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * nnmaildir.el (nnmaildir-request-set-mark): Add article to add-mark
 +      funcall.
 +
 +2010-12-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Allow LWSP in the middle of
 +      names.
 +
 +      * shr.el (shr-find-fill-point): Don't break line between kinsoku-bol
 +      characters.
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Delete unnecessary binding
 +      to t of inhibit-read-only since it is inside gnus-with-article-headers.
 +      Suggested by Štěpán Němec <stepnem@gmail.com>.
 +      (gnus-gravatar-transform-address): Use mail-extract-address-components
 +      that supports non-ASCII names rather than mail-header-parse-addresses.
 +
 +2010-11-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * proto-stream.el (open-protocol-stream): All starttls connections are
 +      handled by the network handler.
 +
 +2010-11-30  Julien Danjou  <julien@danjou.info>
 +
 +      * nnimap.el (nnimap-open-connection-1): Use gnus-string-match-p.
 +      (nnimap-open-connection-1): Fix PREAUTH.
 +
 +      * gnus-gravatar.el (gnus-gravatar-size): Set gnus-gravatar-size to nil.
 +
 +2010-11-30  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-char-breakable-p, shr-char-nospace-p)
 +      (shr-char-kinsoku-bol-p, shr-char-kinsoku-eol-p): New macros.
 +      (shr-insert): Use them.
 +      (shr-find-fill-point): Work better for kinsoku chars and apostrophes.
 +
 +2010-11-29  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-request-move-article): Bail out if original group
 +      doesn't support article moves.
 +      (nnir-get-active): Improve active list retrieval.
 +
 +2010-11-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-find-fill-point): Don't break before apostrophes.
 +
 +2010-11-29  Binjo  <binjo.cn@gmail.com>  (tiny change)
 +
 +      * nnimap.el (nnimap-open-connection-1): w32 open-network-stream doesn't
 +      seem to accept strings-with-numbers as port numbers,
 +
 +2010-11-29  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-sum.el (gnus-summary-delete-article): If delete fails don't
 +      change the registry.
 +
 +2010-11-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnir.el (nnir-run-gmane): Use mm-delete-duplicates instead of
 +      delete-dups that is not available in XEmacs 21.4.
 +
 +      * mm-util.el (mm-delete-duplicates): Add comment.
 +
 +2010-11-28  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-ignored-newsgroups): New variable.
 +      (nnir-get-active): Use it.
 +
 +2010-11-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * proto-stream.el (proto-stream-open-network): Add some comments.
 +
 +      * nntp.el (nntp-open-connection): Provide a :success condition.
 +
 +      * nnimap.el (nnimap-open-connection-1): Ditto.
 +
 +      * proto-stream.el (proto-stream-open-network): See what the response to
 +      the STARTTLS command is.
 +
 +      * nnimap.el (nnimap-open-connection-1): Always upgrade to STARTTLS (for
 +      backwards compatibility).
 +      (nnimap-open-connection-1): Really respect nnimap-server-port.
 +
 +      * proto-stream.el (proto-stream-open-network): When doing opportunistic
 +      TLS upgrades we don't really care about the identity of the peer.
 +      (proto-stream-open-network): Force starttls.el to use gnutls-cli, since
 +      that what we've checked for.
 +      (proto-stream-always-use-starttls): Only default to t if
 +      open-gnutls-stream exists.
 +      (proto-stream-open-network): If STARTTLS failed, then just open a
 +      normal connection.
 +      (proto-stream-open-network): Wait until the greeting before doing
 +      STARTTLS.
 +
 +      * nntp.el (nntp-open-connection): Report what the connection error is.
 +
 +      * proto-stream.el (open-protocol-stream): Rename from
 +      open-proto-stream.
 +
 +2010-11-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-stream): Change default to `undecided'.
 +      (nnimap-open-connection): If `nnimap-stream' is `undecided', try ssl
 +      first, and then network.
 +      (nnimap-open-connection-1): Respect nnimap-server-port.
 +      (nnimap-open-connection): Be more backwards-compatible.
 +
 +      * proto-stream.el (proto-stream-always-use-starttls): New variable.
 +      (proto-stream-open-starttls): De-duplicate the starttls code.
 +      (proto-stream-open-starttls): Folded back into the main function.
 +      (proto-stream-open-network): Fix typo in the gnutls path.
 +      (proto-stream-command): Refactor out.
 +
 +      * nntp.el (nntp-open-connection): Fix the STARTTLS command syntax.
 +
 +      * proto-stream.el (proto-stream-open-starttls): Actually implement the
 +      starttls.el STARTTLS.
 +
 +      * color.el (color-lab->srgb): Fix function call name.
 +
 +      * proto-stream.el (proto-stream-open-tls): Delete output from openssl
 +      if we're using tls.el.
 +      (proto-stream-open-network): If we don't have gnutls-cli or gnutls
 +      built in, then don't try to establish a STARTTLS connection.
 +
 +      * nntp.el (nntp-open-connection): Switch on STARTTLS on supported
 +      servers.
 +
 +      * proto-stream.el (open-proto-stream): Use network, not stream.
 +      (open-proto-stream): Add a way to specify what the end of a command is.
 +
 +      * nntp.el (nntp-open-connection): Use proto-streams for the relevant
 +      connections types.
 +      (nntp-open-network-stream): Remove.
 +      (nntp-open-ssl-stream): Remove.
 +      (nntp-open-tls-stream): Remove.
 +      (nntp-ssl-program): Remove.
 +
 +      * nnimap.el (nnimap-open-connection): Check for "OK" from the greeting.
 +
 +2010-11-27  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Fix typos.
 +      (nnir-retrieve-headers-override-function): Rename variable to reflect
 +      new semantics.
 +      (nnir-article-group, nnir-article-number, nnir-article-rsv): New helper
 +      macros.
 +      (nnir-request-article, nnir-request-move-article): Use them.
 +      (nnir-categorize): New function.
 +      (nnir-run-query): Use it.
 +      (nnir-retrieve-headers): Rewrite to batch header retrieval.
 +      (nnir-run-gmane): nnir-retrieve-headers now returns the headers already
 +      sorted.
 +      (nnir-group-full-name): Use gnus-group-full-name instead.
 +      (nnir-artlist-artitem-group, nnir-artlist-artitem-number)
 +      (nnir-artlist-artitem-rsv, nnir-sort-groups-by-server): Obsolete.
 +
 +2010-11-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): Fix typo in STARTTLS command.
 +
 +      * proto-stream.el: New library to provide protocol-specific
 +      TLS/STARTTLS connections for IMAP, NNTP, SMTP, POP3 and similar
 +      protocols.
 +      (open-proto-stream): Complete the documentation.
 +      (proto-stream-open-network): Fix some typos.
 +
 +      * nnimap.el (nnimap-open-connection): Use it.
 +
 +2010-11-27  Yuri Karaban  <tech@askold.net>  (tiny change)
 +
 +      * pop3.el (pop3-open-server): Read server greeting before starting TLS
 +      negotiation.
 +
 +2010-11-26  Julien Danjou  <julien@danjou.info>
 +
 +      * color.el: Rename various rgb functions to srgb.
 +
 +2010-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-get-groups): Allow non-quoted strings as mailbox
 +      names.
 +
 +2010-11-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Revert last change.
 +      (shr-find-fill-point): Never leave point being at bol;
 +      relax the kinsoku limitation when rendering tables.
 +
 +2010-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnmail.el (nnmail-expiry-target-group): Protect against degenerate
 +      results from -accept-article.
 +
 +      * shr-color.el: Require cl when compiling.
 +
 +      * nnheader.el (nnheader-update-marks-actions): Fix typo in last
 +      checkin.
 +
 +      * gnus-art.el (gnus-url-mailto): Unfold URLs before using them.
 +
 +      * nnimap.el (nnimap-request-set-mark): Add is "+", not "-".
 +
 +      * gnus-sum.el (gnus-summary-push-marks-to-backend): Use 'set instead of
 +      'add and 'delete to set backend marks.
 +
 +      * nnmaildir.el (nnmaildir-request-set-mark): Be explicit about 'set.
 +
 +      * nnheader.el (nnheader-update-marks-actions): Refactor out.
 +
 +      * nntp.el (nntp-request-set-mark): Use it.
 +
 +      * nnfolder.el (nnfolder-request-set-mark): Ditto.
 +
 +      * nnml.el (nnml-request-set-mark): Ditto.
 +
 +      * nnimap.el (nnimap-last-response-string): Remove the unfolding -- it
 +      introduces regressions in article selection.
 +      (nnimap-find-uid-response): New function.
 +      (nnimap-request-accept-article): Use the UID returned, if any.
 +      (nnimap-request-move-article): Use the UID returned, if any.
 +      (nnimap-get-groups): Reimplement to work with folded lines.
 +      (nnimap-find-uid-response): The UID is the last element in the list.
 +      (nnimap-request-set-mark): Extend syntax with 'set.
 +
 +      * nnml.el (nnml-request-set-mark): Ditto.
 +
 +      * nnfolder.el (nnfolder-request-set-mark): Ditto.
 +
 +      * nntp.el (nntp-request-set-mark): Ditto.
 +
 +2010-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * message.el (message-called-interactively-p): A temporary macro.
 +      (message-goto-body): Use it temporarily.
 +
 +2010-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-unfold-quoted-lines): Refactor out.
 +      (nnimap-last-response-string): Unfold quoted lines, if they exist.
 +      (nnimap-last-response-string): Fix last unfolding fix.
 +
 +2010-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Fix the way to fold lines.
 +
 +2010-11-25  Julien Danjou  <julien@danjou.info>
 +
 +      * shr-color.el (shr-color->hexadecimal): Use color-rgb->hex
 +
 +      * color.el: Rename from color-lab.el
 +      (color-rgb->hex): Add.
 +      (color-complement): Add.
 +      (color-complement-hex): Add.
 +
 +      * gnus-sum.el (gnus-summary-widget-forward): Add, and bind to [tab].
 +
 +2010-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr-color.el (shr-color-visible): Don't bug out if the colour names
 +      don't exist.
 +
 +2010-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mml.el (mml-preview): Make sure to bind gnus-displaying-mime to nil,
 +      assuming that article displaying or another mml-preview may be
 +      interrupted for an error or for the like.
 +
 +      * shr.el (shr-get-background): Fix argument name.
 +
 +2010-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-cache.el (gnus-summary-insert-cached-articles): Use it.
 +
 +      * gnus-sum.el (gnus-summary-include-articles): New function.
 +
 +      * message.el (message-goto-body): called-interactively-p needs a
 +      parameter, so use `any'.
 +
 +      * nnimap.el (nnimap-request-move-article): It's no longer necessary to
 +      clear marks before moving, since they're synced from the Gnus side
 +      first.
 +
 +      * gnus-sum.el (gnus-summary-push-marks-to-backend): New function.
 +      (gnus-summary-move-article): Copy over all marks before moving, so that
 +      IMAP doesn't think a new article has arrived.
 +
 +2010-11-24  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-insert-background-overlay): Fix typo.
 +      (shr-render-td): Copy the background before rendering.
 +
 +      * shr-color.el (shr-color-visible): Fix docstring.
 +
 +      * shr.el (shr-tag-table): Add bgcolor support.
 +      (shr-render-td): Add bgcolor support.
 +      (shr-get-background): Add.
 +      (shr-insert-foreground-overlay): Use shr-get-background.
 +
 +      * message.el (message-goto-body): Use called-interactively-p.
 +      (message-in-body-p): message-goto-body returns point.
 +
 +2010-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-util.el (mm-enable-multibyte): Use `to' instead of t.  This fixes
 +      Fixes something or other in Emacs 23, and is backwards compatible.
 +
 +      * message.el (message-goto-body): Remove the <#secure special-casing,
 +      which is too special.
 +
 +      * shr.el (shr-parse-style): Drop !important from styles.
 +
 +2010-11-24  Daniel Schoepe  <daniel.schoepe@googlemail.com>  (tiny change)
 +
 +      * gnus-sum.el (gnus-summary-articles-in-thread): Fix a bug that causes
 +      this function to return incorrect results when calling it with an
 +      explicit article argument different from
 +      (gnus-summary-article-number).
 +
 +2010-11-24  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-insert-color-overlay): Replace deprecated syntax.
 +      (shr-tag-body): Add background support.
 +      (shr-descend): Add background support.
 +      (shr-tag-title): Add.
 +
 +      * shr-color.el (shr-color-visible): Really return original background
 +      if fixed.
 +
 +2010-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-color-check): Protect against non-existant colour names.
 +
 +2010-11-24  Julien Danjou  <julien@danjou.info>
 +
 +      * color-lab.el: Require 'cl when compiling.
 +
 +      * shr.el (shr-insert-color-overlay): Remove specific rgb() check.
 +
 +      * shr-color.el (shr-color->hexadecimal): Only return the hexadecimal
 +      matched part.
 +
 +      * color-lab.el: Fix all expt calls to use float type.
 +
 +2010-11-24  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert-color-overlay): Pass rgb(rrr, ggg, bbb) type color
 +      expression to shr-color-check as is.
 +
 +      * shr-color.el (shr-color->hexadecimal): Ignore case of color names.
 +
 +      * color-lab.el: Add coding cookie.
 +      (float-pi): Use eval-and-compile.
 +
 +2010-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert-color-overlay): Split stuff like
 +      "#444444 !important" to find the real colour.
 +      (shr-tag-font): Resurrect shr-tag-font again, since it's needed to
 +      parse <font color="red"> entries.
 +
 +2010-11-23  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnheader.el (nnheader-parse-head): Bug fix.  Properly position
 +      point when parsing headers.
 +
 +      * nnspool.el (nnspool-insert-nov-head): Bug fix.  Make sure point
 +      is positioned properly when parsing headers.
 +
 +2010-11-23  Julien Danjou  <julien@danjou.info>
 +
 +      * color-lab.el (boundp): Bind float-pi for Emacs < 23.3.
 +
 +      * shr-color.el (shr-color->hexadecimal): Add support for color names.
 +
 +      * shr.el (shr-parse-style): Replace \n with space in style parsing.
 +
 +      * shr-color.el (shr-color-hsl-to-rgb-fractions):
 +      Use shr-color-hue-to-rgb.
 +      (shr-color->hexadecimal): Call shr-color-hsl-to-rgb-fractions.
 +
 +2010-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-color->hexadecimal): Autoload.
 +      (shr-descend): Add color to all tags.
 +
 +2010-11-22  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-tag-color-check): Convert colors to hexadecimal with
 +      shr-color->hexadecimal.
 +
 +      * shr-color.el (shr-color->hexadecimal): Add converting functions for
 +      RGB() or HSL() color representation.
 +
 +      * shr.el (shr-tag-font): Add.
 +      (shr-tag-color-check): New function to get better colors.
 +      (shr-tag-insert-color-overlay): Factorize code between tag-font and
 +      tag-span.
 +
 +      * shr-color.el: New file.
 +
 +      * color-lab.el: New file.
 +
 +      * gnus-art.el (gnus-url-mailto): Do not downcase args.
 +
 +2010-11-21  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Fix typo in comments.
 +      (nnir-run-imap): Simplify code. No need to reverse artlist.
 +      (nnir-run-gmane): Use nnir-tmp-buffer for web results.
 +
 +2010-11-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-srvr.el (gnus-server-show-server): New command and keystroke.
 +
 +      * nnimap.el (nnimap-get-capabilities): Refactor out.
 +      (nnimap-open-connection): Re-request capabilities after STARTTLS.
 +
 +2010-11-21  Ralf Angeli  <angeli@caeruleus.net>
 +
 +      * mm-uu.el (mm-uu-type-alist): Prevent spurious empty line from
 +      appearing when `mm-uu-hide-markers' is nil.
 +
 +2010-11-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-unselect-group): Make into its own function.
 +      (nnimap-request-rename-group): Unselect group before renaming.
 +      This had gotten lost somewhere.
 +      (nnimap-request-accept-article): Keep track of examined groups, and
 +      unselect the group before APPENDing to read-only groups.
 +      (nnimap-request-move-article): Clear flags before moving so that they
 +      can be re-set later.
 +
 +2010-11-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): Decode name again.
 +      (gnus-gravatar-insert): Put avatar always in the beginning of the field.
 +
 +2010-11-19  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-mime-display-single)
 +      * gnus-html.el (gnus-html-wash-images, gnus-html-prefetch-images)
 +      * mm-decode.el (mm-shr): Assume that gnus-inhibit-images may be a group
 +      parameter.
 +
 +2010-11-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-table-horizontal-line): Rename from shr-table-line.
 +      (shr-table-vertical-line): New variable.
 +      (shr-insert-table): Use it.
 +
 +2010-11-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-wash-images): Don't display images if
 +      gnus-inhibit-images is non-nil; register displayer for cid images.
 +      (gnus-html-display-image): Work for cid image.
 +      (gnus-html-insert-image): Allow arguments.
 +      (gnus-html-put-image): Inhibit read-only.
 +      (gnus-html-prefetch-images): Don't prefetch images if
 +      gnus-inhibit-images is non-nil.
 +
 +2010-11-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-put-image): Break lines when inserting big pictures.
 +
 +2010-11-17  Daniel Dehennin  <daniel.dehennin@baby-gnu.org>
 +
 +      * mml2015.el (mml2015-epg-encrypt): Fix two cons with missing
 +      sender, thanks Katsumi Yamaoka.
 +
 +2010-11-17  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-imap): Reverse the article list for each group
 +      rather than the whole list.
 +
 +2010-11-17  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-image-displayer): Protect function against non-existent
 +      image source.
 +
 +      * gnus-art.el (gnus-inhibit-images): New user option.
 +      (gnus-mime-display-single): Don't display image if it is non-nil.
 +
 +      * mm-decode.el (mm-shr): Bind shr-inhibit-images to the value of
 +      gnus-inhibit-images.
 +
 +      * shr.el (shr-image-displayer): New function.
 +      (shr-tag-img): Use it.
 +
 +2010-11-16  Daniel Dehennin  <daniel.dehennin@baby-gnu.org>
 +
 +      * mml2015.el (mml2015-epg-sign): Use From header.
 +
 +2010-11-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-wash-images): Register a displayer.
 +
 +      * gnus-util.el (gnus-find-text-property-region): Return markers.
 +
 +      * shr.el (shr-tag-img): Put a displayer in the text property.
 +
 +      * gnus-util.el (gnus-find-text-property-region): New utility function.
 +
 +      * gnus-html.el (gnus-html-display-image): Make the alt optional.
 +      (gnus-html-show-images): Remove.
 +
 +      * gnus-art.el (gnus-article-show-images): New, more general function.
 +
 +      * gnus-html.el: Use image-url instead of gnus-image-url to unify the
 +      image url text properties.
 +
 +      * shr.el: Ditto.
 +
 +      * gnus-agent.el (gnus-agentize): Only do the auto-agentizing if
 +      gnus-agent-auto-agentize-methods is set.  Which it isn't.
 +
 +2010-11-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-move-article): Fix `while' loop to make it
 +      work for two or more articles.
 +
 +2010-11-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (article-treat-non-ascii): Keep text properties not to
 +      divide an image that's in an html article to two or more when washing
 +      non-ASCII characters in alt text of it.
 +
 +2010-11-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-decode.el (mm-dissect-buffer): Pass sender's mail address to
 +      smime-decrypt-region using function argument.
 +      (mm-possibly-verify-or-decrypt, mm-dissect-multipart): Relay it.
 +
 +      * mm-view.el (mm-view-pkcs7, mm-view-pkcs7-decrypt): Relay it.
 +
 +      * smime.el (smime-decrypt-region): Catch it.
 +
 +2010-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * smime.el (smime-mode-map): Move initialization into declaration.
 +      (gnus-run-mode-hooks): Don't autoload.
 +      (smime-mode): Use define-derived-mode.
 +
 +2010-11-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * smime.el (from): Restrict declaration to XEmacs.
 +
 +      * nnir.el (gnus-group-topic-name): Autoload.
 +
 +2010-11-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Don't break long line if it is because of
 +      kinsoku-bol characters in the line end.
 +
 +2010-11-11  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-request-move-article): Fix to provide original group
 +      and subject.
 +      (nnir-warp-to-article): Don't fail on articles whose headers haven't
 +      been retrieved.
 +
 +      * gnus-sum.el (gnus-summary-move-article): Use original group and
 +      subject for virtual articles such as those in an nnir summary buffer.
 +
 +2010-11-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (article-treat-non-ascii): Make it work for XEmacs (at
 +      least 21.5).
 +
 +      * smime.el (from): Declare it again for XEmacs.
 +
 +2010-11-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-resend): Don't disable encoding unless it's
 +      already encoded.
 +
 +      * nnimap.el (nnimap-update-info): Fix problem with `g' chopping of
 +      low-numbered articles.
 +
 +2010-11-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * rfc2047.el (rfc2047-syntax-table): Simplify.
 +
 +      * gnus-art.el (article-treat-non-ascii): Use put-char-table instead of
 +      set-char-table-range for XEmacs.
 +
 +2010-11-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * smime.el (from): Remove unused declaration.
 +
 +      * gnus-util.el (with-no-warnings): Remove compat stub, now unused.
 +      (gnus-float-time): On Emacs, always an alias.
 +
 +      * ecomplete.el (with-no-warnings): Remove compat stub, now unused.
 +      (ecomplete-add-item): Use float-time on Emacs, else gnus-float-time.
 +
 +2010-11-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (org-entities): Declare it to silence the byte compiler.
 +
 +2010-11-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (browse-url-mailto): Autoload.
 +
 +      * gnus-art.el (article-treat-non-ascii): New command and keystroke.
 +
 +      * message.el (message-subject-trailing-was-ask-regexp): A ] in a []
 +      regexp doesn't need quoting.
 +
 +2010-11-09  Sven Joachim  <svenjoac@gmx.de>
 +
 +      * message.el (message-subject-trailing-was-ask-regexp)
 +      (message-subject-trailing-was-regexp): Match was: in addition to was.
 +
 +2010-11-09  Glenn Morris  <rgm@gnu.org>
 +
 +      * nnbabyl.el (nnbabyl-request-move-article, nnbabyl-delete-mail)
 +      (nnbabyl-check-mbox): Use point-at-bol.
 +
 +2010-11-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-browse-url): Call browse-url-mailto for mailto: links.
 +
 +      * message.el (message-mailto): New function.
 +      (message-mailto): Should accept other parameters.
 +      (message-mailto): Remove since it duplicates browse-url-mailto
 +      functionality.
 +
 +2010-11-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-get-unread-articles): Ignore totally non-existent
 +      methods.
 +      (gnus-read-active-file): Ditto.
 +
 +      * gnus-group.el (gnus-group-read-ephemeral-group): Remove superfluous
 +      ": " from the prompt.
 +      (gnus-group-make-group): Ditto.
 +
 +2010-11-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-bookmark.el (gnus-bookmark-bmenu-show-infos)
 +      (gnus-bookmark-kill-line): Use point-at-eol.
 +
 +2010-11-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): No need to skip
 +      asterisks in From header.
 +
 +2010-11-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-ems.el (gnus-put-image): Use a blank text as the insertion
 +      string to avoid making the From headers syntactically invalid.
 +
 +      * message.el (message-send-mail): Don't insert courtesy messages if the
 +      message already has List-Post and List-ID messages.
 +
 +2010-11-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-art.el (gnus-treat-article): Give dynamic local variables
 +      `condition', `type', `length' a prefix.
 +      (gnus-treat-predicate): Update for above name changes.
 +
 +2010-11-06  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (gnus-summary-nnir-goto-thread): Remove function and
 +      binding.  Handled by `gnus-summary-refer-thread' instead.
 +      (nnir-warp-to-article): New backend function.
 +
 +      * nnimap.el (nnimap-request-thread): Force dependency updating.
 +
 +      * gnus-sum.el (gnus-fetch-headers): Allow more arguments.
 +      (gnus-summary-refer-thread): Rework to improve thread-referral.
 +
 +      * gnus-int.el (gnus-warp-to-article): New function.
 +
 +      * gnus-sum.el (gnus-summary-article-map): Bind it.
 +
 +2010-11-04  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (gnus-summary-nnir-goto-thread): Limit work done by
 +      gnus-summary-refer-thread.
 +
 +      * gnus-sum.el (gnus-build-all-threads): Force updating of dependency
 +      headers.
 +      (gnus-summary-limit-include-thread): Prevent articles in thread from
 +      being cut in gnus-cut-threads.
 +      (gnus-summary-refer-thread): Limit retrieved headers to those in
 +      thread.
 +
 +2010-11-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-send-mail): Use the value of
 +      message-courtesy-message from the message buffer.
 +
 +      * gnus-html.el (gnus-html-browse-url): Implement mailto: URLs.
 +
 +      * shr.el (shr-browse-url): Implement mailto: URLs.
 +
 +      * gnus-sum.el (gnus-summary-show-article): Take `t' as the arg to mean
 +      "raw".
 +
 +      * nnimap.el (nnimap-find-article-by-message-id): Don't EXAMINE a group
 +      if it's already selected.
 +
 +      * mm-decode.el (mm-save-part): Put the entire path in the `M-n' slot.
 +
 +2010-11-04  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-tag-img): Use string-width and truncate-string-to-width
 +      to measure the length and truncate alt text.
 +
 +2010-11-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * nndiary.el (nndiary-generate-nov-databases-1)
 +      (nndiary-generate-active-info): Rename dynamic variable `files' to
 +      something less generic.
 +
 +2010-11-03  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-request-move-article): Call the underlying backend to
 +      move articles from nnir.
 +
 +2010-11-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-cite.el (gnus-article-natural-long-line-p): Remove.
 +
 +2010-11-02  Julien Danjou  <julien@danjou.info>
 +
 +      * nnir.el: Remove wais support.
 +
 +2010-11-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-html.el: Reorder requirements to quieten compiler.
 +
 +2010-11-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-cite.el (gnus-article-fill-cited-article): Make fill work
 +      properly for XEmacs as well.
 +      (gnus-article-fill-cited-article, gnus-article-foldable-buffer)
 +      (gnus-article-natural-long-line-p): Use window-width rather than
 +      frame-width.
 +
 +2010-11-01  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-gmane): Inhibit demon.  Return nil if no messages.
 +      (nnir-read-parms): Don't modify query.
 +      (nnir-run-query): Add ability to search topic on current line.
 +      (nnir-get-active): Clean up.
 +
 +2010-11-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-cite.el (gnus-article-foldable-buffer): Protect against
 +      degenerate articles.
 +
 +      * gnus-sum.el (gnus-print-buffer): Rewrite to use with-temp-buffer.
 +      (gnus-print-buffer): Just print the buffer as is, without any copying
 +      to a buffer and then re-highlighting.
 +
 +      * nnimap.el (nnimap-request-group): Store the new updated info.
 +      (nnimap-request-group): Select the group when we don't know whether it
 +      exists or not.
 +
 +      * gnus-start.el (gnus-ask-server-for-new-groups): Return the new
 +      groups.
 +
 +      * gnus-group.el (gnus-group-find-new-groups): Display all the new
 +      groups.
 +
 +      * gnus-start.el (gnus-find-new-newsgroups): Return the list of new
 +      groups.
 +
 +      * gnus-cite.el (gnus-article-fill-cited-article): Minimize the
 +      long-lines case by only filling the long lines.
 +
 +      * nnimap.el (nnimap-parse-line): Don't bug out oddly formed replies
 +      (bug #7311).
 +
 +2010-11-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el: No need to declare `declare-function' since shr.el is for
 +      only Emacsen that provide `libxml-parse-html-region'.
 +
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * mm-util.el (gnus-completing-read): Autoload.
 +      (mm-read-coding-system): Simplify Emacs definition.
 +
 +      * nnmail.el (gnus-activate-group):
 +      * nnimap.el (gnutls-negotiate):
 +      * nntp.el (netrc-parse): Fix declarations.
 +
 +2010-11-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-string-match-p): New function, that is an alias to
 +      string-match-p in Emacs >=23.
 +
 +      * gnus-msg.el (gnus-configure-posting-styles)
 +      * nnir.el (nnir-run-gmane): Use gnus-string-match-p.
 +
 +2010-11-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * nnir.el (declare-function): Add compat stub.
 +      (mm-url-insert, mm-url-encode-www-form-urlencoded): Declare.
 +      (nnir-run-gmane): Require 'mm-url.
 +
 +      * mm-util.el (mm-string-to-multibyte): Simplify.
 +
 +      * shr.el (declare-function): Add compat stub.
 +      (url-cache-create-filename): Declare.
 +      (mm-disable-multibyte, widget-convert-button): Autoload.
 +
 +      * smime.el (ldap-search): Declare.
 +      (smime-cert-by-ldap-1): Require ldap on Emacs.
 +
 +      * nnimap.el: Require nnmail, and gnus-sum when compiling.
 +      (nnimap-keepalive): Use gnus-float-time.
 +
 +      * mail-source.el (nnheader-message, gnus-float-time): Autoload.
 +      (mail-source-delete-crash-box): Use gnus-float-time.
 +
 +      * gnus-dired.el (gnus-completing-read): Autoload.
 +
 +      * mm-view.el (gnus-rescale-image): Autoload.
 +
 +      * mm-decode.el (gnus-completing-read, gnus-blocked-images): Autoload.
 +
 +      * gnus.el (gnus-sloppily-equal-method-parameters): Move defn before use.
 +
 +      * sieve-manage.el: Require 'cl when compiling.
 +
 +      * gnus-util.el (iswitchb-read-buffer): Declare rather than autoload.
 +      (gnus-iswitchb-completing-read): Require iswitchb.
 +      (gnus-select-frame-set-input-focus): Silence compiler.
 +
 +2010-10-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-subject-trailing-was-query): Change default to t,
 +      since I think that's what most people want.
 +
 +      * nnimap.el (nnimap-request-accept-article): Erase buffer before
 +      appending for easier debugging.
 +      (nnimap-wait-for-connection): Take a regexp.
 +      (nnimap-request-accept-article): Wait for the continuation line before
 +      sending anything unless we're streaming.
 +
 +      * gnus-art.el (gnus-treat-article): Only inhibit body washing, and
 +      leave the header washing to take place.
 +
 +2010-10-31  Daniel Dehennin  <daniel.dehennin@baby-gnu.org>
 +
 +      * gnus-msg.el (gnus-configure-posting-styles): Permit the use of
 +      regular expression match and replace in posting styles.
 +
 +2010-10-31  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (gnus-group-make-nnir-group,nnir-run-query): Allow searching
 +      an entire server.
 +      (nnir-get-active): New function.
 +      (nnir-run-imap): Use it.
 +      (nnir-run-gmane): Who knew, gmane search returns an article score!
 +
 +      * gnus-srvr.el (gnus-server-mode-map): Add binding "G" to search the
 +      server on the current line with nnir.
 +
 +2010-10-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-cite.el (gnus-article-foldable-buffer): Refactor out.
 +      (gnus-article-foldable-buffer): Don't fold regions that have a ragged
 +      left edge.
 +      (gnus-article-foldable-buffer): Skip past the prefix when determining
 +      raggedness.
 +
 +      * gnus-sum.el (gnus-summary-show-article): Add `C-u C-u g' for showing
 +      the raw article, and change `C-u g' to show the article without doing
 +      treatments.
 +
 +      * gnus-art.el (gnus-mime-display-alternative): Actually pass the type
 +      on to `gnus-treat-article'.
 +      (gnus-inhibit-article-treatments): New variable.
 +
 +      * gnus.el: Autoload gnus-article-fill-cited-long-lines.
 +
 +      * gnus-art.el (gnus-treatment-function-alist): Have
 +      gnus-treat-fill-long-lines point to gnus-article-fill-cited-long-lines.
 +      (gnus-treat-fill-long-lines): Change default to fill all text/plain
 +      sections.
 +
 +      * gnus-cite.el (gnus-article-fill-cited-article): Remove unused `force'
 +      parameter.
 +      (gnus-article-fill-cited-long-lines): New function.
 +      (gnus-article-fill-cited-article): Allow filling only long sections.
 +
 +      * shr.el (shr-find-fill-point): Don't break lines between punctuation
 +      and non-punctuation (like after the apostrophe in "'We").
 +
 +      * gnus-sum.el (gnus-summary-select-article): Make sure
 +      gnus-original-article-buffer is alive.
 +
 +      * nndoc.el (nndoc-dissect-buffer): Reverse the order of the articles to
 +      reflect the order they're in in the digest.
 +
 +      * gnus.el (gnus-group-startup-message): Move point to the start of the
 +      buffer.
 +
 +      * nnimap.el (nnimap-capability): New function.
 +      (nnimap-open-connection): Only send AUTHENTICATE PLAIN if LOGINDISABLED
 +      is set.
 +
 +2010-10-31  David Engster  <dengste@eml.cc>
 +
 +      * nnmairix.el (nnmairix-get-valid-servers): Return list of strings to
 +      conform with changes to gnus-completing-read.
 +
 +2010-10-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-img): Output "*" instead of "[img]".
 +
 +2010-10-30  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: Move defvar, defcustom around to keep file organized
 +      and keep byte-compiler quiet.
 +      (nnir-read-parms): Accept search-engine as arg.
 +      (nnir-run-query): Pass search-engine as arg.
 +      (nnir-search-engine): Remove.
 +
 +2010-10-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-generic): The text nodes should be text, not :text.
 +
 +      * nnir.el (nnir-search-engine): Ressurect variable, since it's used
 +      later in the file.
 +
 +2010-10-30  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el: General clean up.  Allow searching with multiple engines.
 +      Allow separate extra-parameters for each engine.
 +      Batch queries when possible.
 +      (nnir-imap-default-search-key,nnir-method-default-engines):
 +      Add customize interface.
 +      (nnir-run-gmane): New engine.
 +      (nnir-engines): Use it.  Qualify all prompts with engine name.
 +      (nnir-search-engine): Remove global variable.
 +      (nnir-run-hyrex): Restore for now.
 +      (nnir-extra-parms,nnir-search-history): New variables.
 +      (gnus-group-make-nnir-group): Use them.
 +      (nnir-group-server): Remove in favor of gnus-group-server.
 +      (nnir-request-group): Avoid searching twice.
 +      (nnir-sort-groups-by-server): New function.
 +
 +2010-10-30  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-group.el: Remove gnus-group-fetch-control.
 +
 +      * gnus-start.el (gnus-find-new-newsgroups):
 +      Remove gnus-check-first-time-used.
 +
 +      * gnus.el: Remove gnus-backup-default-subscribed-newsgroups.
 +
 +2010-10-30  Knut Anders Hatlen  <kahatlen@gmail.com>  (tiny change)
 +
 +      * nnimap.el (nnimap-update-info): Allow 'ticked and other flags to be
 +      set on groups that don't have \* permanentflags.
 +
 +2010-10-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-span): Drop colorisation of regions since we don't
 +      control the background color.
 +      (shr-tag-img): Ignore very small web bug type images.
 +      (shr-put-image): Add help-echo alt texts to the images.
 +      (shr-tag-video): Show the video poster image.
 +
 +2010-10-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-table-depth): New variable.
 +      (shr-tag-table-1): Only insert the images after the top-level table.
 +
 +      * nnimap.el (nnimap-split-incoming-mail): Fix typo.
 +
 +      * gnus-util.el (gnus-list-memq-of-list): New function.
 +
 +      * nnimap.el (nnimap-split-incoming-mail): Note that the INBOX has been
 +      selected.
 +      (nnimap-unsplittable-articles): New slot.
 +      (nnimap-new-articles): Use it.
 +
 +2010-10-29  Stephen Berman  <stephen.berman@gmx.net>  (tiny change)
 +
 +      * gnus-group.el (gnus-group-get-new-news-this-group): Don't have point
 +      move to the previous line on `M-g'.
 +
 +2010-10-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-msg.el (gnus-inews-do-gcc): Don't have the backends do the slow
 +      *-request-group, which seems unnecessary.
 +
 +      * nnimap.el (nnimap-quote-specials): Function copied over from
 +      imap.el.
 +      (nnimap-open-connection): Use AUTHENTICATE PLAIN on servers that say
 +      they support that.  Suggested by Tom Regner.
 +
 +2010-10-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-sum.el (gnus-summary-delete-marked-as-read): Remove obsolete
 +      defalias.
 +      (gnus-summary-delete-marked-with): Remove obsolete defalias.
 +
 +      * gnus.el: Remove `gnus-nntp-service' variable.
 +      (gnus-secondary-servers): Make obsolete.
 +      (gnus-nntp-server): Make obsolete.
 +
 +      * gnus-start.el (gnus-1): Remove x-splash calls.
 +
 +      * gnus-ems.el (gnus-x-splash): Remove.
 +
 +      * gnus.el (gnus-group-startup-message): Simplify/update code.
 +
 +      * gnus-group.el (gnus-group-make-tool-bar): Check for display graphic
 +      capability before doing anything.
 +      (gnus-group-insert-group-line): Remove useless
 +      gnus-group-remove-excess-properties.
 +
 +2010-10-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-goto-part): Work for article narrowed by ^L.
 +
 +2010-10-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-rescan-group): Try to restore the window
 +      config after reselecting.
 +
 +2010-10-28  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-put-image): Use point even if only inserting text.
 +      (shr-put-image): Save excursion when inserting alt text on non-graphic
 +      display, so the behaviour is the same when we are on a graphic display.
 +
 +      * nnir.el (nnir-run-swish-e): Remove hyrex support.
 +
 +2010-10-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-jump-to-part): Error on no part; fix prompt.
 +      (gnus-mime-copy-part): Check coding system, not charset.
 +      (gnus-mime-view-part-externally): Never remove part.
 +      (gnus-mime-view-part-internally): Don't remove part here.
 +      (gnus-article-part-wrapper): Make sure MIME tag is visible.
 +      (gnus-article-goto-part): Go to displayed or preferred subpart if it is
 +      multipart/alternative.
 +
 +      * mm-decode.el (mm-display-part): Take optional arg `force'.
 +
 +2010-10-26  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-group.el (gnus-group-default-list-level): Add this function to
 +      compute the default list level.
 +      (gnus-group-default-list-level): Add possibility to use a function.
 +
 +2010-10-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-decode.el (mm-shr): Add undisplayer to MIME handle.
 +
 +      * gnus-group.el (gnus-group-completing-read)
 +      (gnus-read-ephemeral-bug-group): Replace replace-regexp-in-string with
 +      gnus-replace-in-string.
 +
 +2010-10-26  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-tag-div): Add.
 +
 +2010-10-25  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el: Remove `gnus-with-local-quit'.
 +
 +      * gnus-demon.el (gnus-demon-init): Use run-with-idle-timer function.
 +
 +2010-10-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-select-article): Fix type error in checking
 +      the original article buffer.
 +
 +2010-10-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-head): New function.
 +      (nnimap-request-move-article): Try to be slighly faster by not
 +      requesting the entire message when moving.
 +      (nnimap-transform-headers): Don't bug out on bodiless articles.
 +      (nnimap-send-command): Have no outstanding messages if the IMAP server
 +      doesn't support streaming.
 +      (nnimap-transform-headers): Fold {quoted} strings more sloppily.
 +
 +2010-10-24  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-default-headers): Fix type.
 +
 +2010-10-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-prefetch-images): Decode entities before
 +      prefetching images.
 +
 +      * gnus-sum.el (gnus-group-make-articles-read): Propagate marks to the
 +      backend for unknown groups.  This is mainly useful for nnimap groups.
 +
 +      * gnus-agent.el (gnus-agent-fetch-group): Don't download stuff if the
 +      group isn't covered by the agent.
 +
 +2010-10-22  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-method-default-engines): New variable.
 +      (nnir-run-query): Use it.
 +      (nnir-group-mode-hook): Remove key binding and move to gnus-group.el.
 +      (gnus-summary-nnir-goto-thread): Change group if needed.
 +
 +      * gnus-group.el (gnus-group-group-map): Add key binding for
 +      gnus-group-make-nnir-group.
 +
 +2010-10-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-object): Add.
 +
 +      * gnus-sum.el (gnus-summary-select-article): Make sure we have the
 +      original article buffer live.
 +      (gnus-summary-select-article-buffer):
 +      Mention gnus-widen-article-buffer.
 +
 +2010-10-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-strong): Add.
 +
 +2010-10-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-completing-read): Remove all newlines from
 +      group names.  They mess up the group buffer badly.
 +
 +      * shr.el (shr-tag-img): Don't bug out on images that don't have a SRC.
 +
 +      * gnus-group.el (gnus-group-mark-group): Use gnus-group-position-point
 +      instead of the summary one.
 +
 +2010-10-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mml.el (mml-preview): Work properly when editing article.
 +
 +      * gnus-start.el (gnus-read-active-file-1): Don't add method to
 +      gnus-have-read-active-file if it's already been in.
 +
 +2010-10-22  Tom Tromey  <tromey@redhat.com>
 +
 +      * gnus-group.el (gnus-group-unsubscribe-group): Fix args passed to
 +      gnus-group-completing-read.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-mode-map): Don't bind M-; to comment region, to
 +      allow the global comment-dwim to work.
 +
 +2010-10-21  Julien Danjou  <julien@danjou.info>
 +
 +      * message.el (message-setup-1): Allow message-default-headers to be a
 +      function.
 +
 +2010-10-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-tag-table): Simplify.
 +
 +2010-10-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-prefetch-images): Only prefetch http images
 +      to avoid trying to snarf invalid stuff.
 +
 +      * gnus-sum.el (gnus-summary-edit-article-done): Bind free variable.
 +
 +      * gnus.el (gnus-message-archive-group): Quote value.
 +      (gnus-message-archive-group): Mark as changed.
 +
 +      * shr.el (shr-add-font): Don't put the font properties on the newline
 +      or the indentation.
 +
 +      * message.el (message-fix-before-sending): Change options when sending
 +      non-printable characters.
 +
 +      * gnus.el (gnus-message-archive-method): Change the default to
 +      monthly outgoing groups.
 +
 +      * gnus-sum.el (gnus-summary-edit-article-done): Try to replace articles
 +      that have gotten new numbers.
 +
 +      * nnimap.el (nnimap-request-replace-article): New function.
 +
 +2010-10-21  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnrss.el (nnrss-wash-html-in-text-plain-parts): Remove.
 +      (nnrss-request-article): Don't use special html washing code.
 +
 +2010-10-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-tag-table): Remove useless nconc.
 +
 +2010-10-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (article-wash-html): Simplify and remove the charset
 +      stuff.  Use the normal html rendering code instead of the special html
 +      washing code.
 +
 +      * mm-view.el (mm-text-html-renderer-alist): Add the `shr' and
 +      `gnus-w3m' symbols.
 +      (mm-text-html-washer-alist): Remove.
 +
 +      * mm-decode.el (mm-inline-text-html-renderer): Remove.
 +      (mm-inline-media-tests): Remove use.
 +      (mm-text-html-renderer): Change default to the `shr' symbol.
 +
 +      * mm-view.el (mm-inline-text-html): Remove use.
 +
 +      * gnus-art.el (gnus-blocked-images): New function.  Allow the
 +      `gnus-blocked-images' to be a function.
 +      (gnus-article-wash-function): Remove.
 +
 +2010-10-20  Julien Danjou  <julien@danjou.info>
 +
 +      * spam.el (spam-list-of-processors): Mark as obsolete.
 +
 +      * nnimap.el (nnimap-request-article): Fix BODYSTRUCTURE retrieval.
 +      (nnimap-insert-partial-structure): Fix boundary detection.
 +
 +2010-10-20  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus-draft.el (gnus-draft-check-draft-articles): Don't unnecessarily
 +      run file-truename on remote files.  This can be expensive and even
 +      prevent one from editing drafts if some unrelated buffer has a stale
 +      connection.
 +
 +2010-10-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-find-fill-point): Shorten line if the preceding char is
 +      kinsoku-eol regardless of shr-kinsoku-shorten.
 +      (shr-tag-table-1): Rename from shr-tag-table; make it a subroutine.
 +      (shr-tag-table): Support caption, thead, and tfoot.
 +
 +2010-10-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-find-fill-point): Don't leave blanks at the start of some
 +      lines.
 +      (shr-save-contents): New command and keystroke.
 +
 +      * nndoc.el (nndoc-type-alist): Add git support.
 +      (nndoc-git-type-p): New function.
 +      (nndoc-transform-git-article): Ditto.
 +      (nndoc-transform-git-headers): Ditto.
 +      (nndoc-transform-git-headers): Generate Subject headers.
 +
 +      * shr.el (shr-parse-style): New function.
 +      (shr-tag-span): Ditto.
 +
 +      * nnmairix.el (nnmairix-summary-mode-hook): Move nnmairix's `$' command
 +      to `G G' to avoid collisions.
 +
 +2010-10-19  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el: Load kinsoku if necessary.
 +      (shr-kinsoku-shorten): New internal variable.
 +      (shr-find-fill-point): Make kinsoku shorten text line if
 +      shr-kinsoku-shorten is bound to non-nil.
 +      (shr-tag-table): Bild shr-kinsoku-shorten to t; refer to
 +      shr-indentation too when testing if table is wider than frame width.
 +      (shr-insert-table): Use `string-width' instead of `length' to measure
 +      text width.
 +      (shr-insert-table-ruler): Make sure indentation is done at bol.
 +
 +2010-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnimap.el (nnimap-request-move-article, nnimap-parse-line)
 +      (nnimap-process-expiry-targets): Use unibyte for buffers that hold
 +      undecoded network data.
 +
 +2010-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-agent.el (gnus-agent-toggle-plugged): Use the right minor mode
 +      name in the mode line spec so that the mode line menu works
 +      (bug #2431).
 +
 +      * message.el (message-get-reply-headers): If we're fed `to-address',
 +      then always use that.
 +
 +      * gnus-art.el (gnus-article-make-menu-bar): The article/group menus
 +      aren't so wide as to need to switch off the edit menu.
 +
 +      * gnus-delay.el (gnus-delay-article): Remove superfluous `group'
 +      binding.  Suggested by Leo <sdl.web@gmail.com> (bug #6613).
 +
 +      * nnimap.el (nnimap-request-group): Don't SELECT the group twice on
 +      `M-g'.
 +      (nnimap-update-info): Update flags/read marks even if \* isn't part of
 +      the permanent marks.
 +
 +2010-10-18  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-registry.el (gnus-registry-split-fancy-with-parent):
 +      Splitting according to references/in-reply-to obeys the ignore-groups
 +      variable, while splitting by sender and subject do not.
 +
 +2010-10-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-art.el (gnus-article-dumbquotes-map): Make into a char/string
 +      alist, so that we can look for non-Unicode chars.
 +      (article-translate-strings): Allow both character and string maps.
 +
 +2010-10-18  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Don't insert space behind a wide character
 +      categorized as kinsoku-bol, or between characters both categorized as
 +      nospace.
 +
 +2010-10-16  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-sum.el (gnus-summary-refer-thread): Bug fix.  Add the thread
 +      headers to gnus-newsgroup-headers.
 +
 +2010-10-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-img): Don't align images -- since we're not
 +      rescaling, this often leads to ugly displays.
 +
 +2010-10-15  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-sum.el (gnus-summary-refer-thread): Unconditionally ignore
 +      duplicates.
 +
 +2010-10-15  Kan-Ru Chen  <kanru@kanru.info>  (tiny change)
 +
 +      * gnus-diary.el (gnus-diary-check-message): Fix gnus-completing-read
 +      call.
 +
 +2010-10-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.el: Autoload gnus-html-show-images.
 +
 +      * nnimap.el: Use nnheader-message throughout.
 +
 +      * shr.el (shr-tag-img): Ignore images with no data.
 +
 +2010-10-15  Julien Danjou  <julien@danjou.info>
 +
 +      * mml.el (mml-generate-mime-1): Add `mml-enable-flowed' variable to add
 +      a possibility to disable format=flow encoding when using hard newlines.
 +
 +2010-10-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * shr.el (shr-insert): Remove space inserted before or after a
 +      breakable character or at the beginning or the end of a line.
 +      (shr-find-fill-point): Do kinsoku; find the second best point or give
 +      it up if there's no breakable point.
 +
 +2010-10-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): Message when opening connection
 +      for debugging purposes.
 +
 +      * gnus-art.el (gnus-article-setup-buffer): Set article mode truncation
 +      on every setup buffer call to allow this to change from article to
 +      article.
 +
 +      * shr.el (shr-tag-table): Experimental feature: Truncate lines in
 +      buffers where we have a wide table.
 +
 +2010-10-14  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * gnus-sum.el (gnus-summary-refer-thread): Implement a version that
 +      uses *-request-thread.
 +
 +2010-10-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): Remove %s from openssl
 +      incantation, which is no longer valid.
 +
 +2010-10-14  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el: Fix defcustom type (char -> character).
 +
 +2010-10-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): tls-program should be a list of
 +      programs.
 +
 +2010-10-14  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-tag-a): Use url-link as widget type.
 +
 +      * gnus-group.el (gnus-group-insert-group-line): Fix group argument to
 +      `gnus-group-get-icon'.
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-close-server): Forget the nnimap data on close.
 +      This should make server editing work better.
 +
 +      * shr.el (shr-find-fill-point): Don't inloop on indented text.
 +
 +      * nnimap.el (nnimap-open-connection): Fix open-tls-stream call.
 +      (nnimap-parse-flags): Fix regexp.
 +
 +      * shr.el (shr-find-fill-point): Use a filling algorithm that should
 +      probably work for CJVK text, too.
 +
 +      * nnimap.el (nnimap-extend-tls-programs): Remove.
 +      (nnimap-open-connection): Bind STARTTLS to openssl explicitly.
 +
 +2010-10-13  Julien Danjou  <julien@danjou.info>
 +
 +      * nnimap.el (nnimap-parse-flags): Be more strict when looking for FETCH
 +      responses.
 +
 +2010-10-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-decode.el (mm-shr): Allow use from non-Gnus users.
 +
 +      * gnus-spec.el (gnus-parse-simple-format): princ doesn't really insert
 +      anything in Emacs.
 +
 +      * shr.el (shr-current-column): Remove buggy and unnecessary function.
 +
 +2010-10-13  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-width): Make shr-width a defcustom with default to
 +      fill-column.
 +      (shr-tag-img): Use shr-width rather than fill-column.
 +
 +2010-10-13  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-dired.el (gnus-dired-attach): Silence XEmacs 21.5 when compiling.
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): Adjust avatars'
 +      position when (X-)Faces exist.
 +      (gnus-treat-from-gravatar, gnus-treat-mail-gravatar): Force displaying
 +      avatars when called interactively.
 +
 +2010-10-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-gravatar-too-ugly): Don't test if
 +      gnus-article-x-face-too-ugly is bound.
 +
 +2010-10-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * rfc2231.el (rfc2231-parse-string): Ignore repeated parts.
 +
 +      * nnimap.el (nnimap-request-rename-group): Unselect by selecting a
 +      mailbox that doesn't exist.
 +
 +2010-10-12  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-tag-img): Encode URL properly when retrieving.
 +      (shr-get-image-data): Encode URL properly when fetching from cache.
 +      (shr-tag-img): Use aligned-to spaces to align correctly images.
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Check if buffer is alive
 +      before inserting the Gravatar.
 +
 +      * shr.el (shr-tag-img): Add align attribute support for <img>.
 +
 +2010-10-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-gravatar.el (gnus-art): Require.
 +
 +      * gnus-sum.el (gnus-summary-mark-as-unread-forward)
 +      (gnus-summary-mark-as-unread-backward, gnus-summary-mark-as-unread):
 +      Remove long obsoleted functions.
 +
 +2010-10-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnimap.el (gnutls-negotiate): Silence the byte compiler.
 +
 +      * gnus-art.el, gnus-cache.el, gnus-fun.el, gnus-group.el:
 +      * gnus-picon.el, gnus-spec.el, gnus-sum.el, gnus-util.el, gnus.el:
 +      * mail-source.el, message.el, mm-bodies.el, mm-decode.el, mm-extern.el:
 +      * mm-util.el, mm-view.el, mml-smime.el, mml.el, mml1991.el, mml2015.el:
 +      * nnfolder.el, nnheader.el, nnmail.el, nnmaildir.el, nnrss.el, nntp.el:
 +      * rfc1843.el, sieve-manage.el, smime.el, spam.el:
 +      Fix comment for declare-function.
 +
 +2010-10-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-rename-group): Select group read-only
 +      before renaming it.
 +
 +      * shr.el (shr-insert): Fix up the white space only regexp.
 +
 +      * nnimap.el (nnimap-transform-split-mail): Not all articles have
 +      bodies.  Protect against this.  Reported by Michael Welsh Duggan.
 +
 +      * shr.el (shr-current-column): New function.
 +      (shr-find-fill-point): New function.
 +
 +2010-10-11  Michael Welsh Duggan  <md5i@md5i.com>  (tiny change)
 +
 +      * sieve-manage.el (sieve-manage-open): Allow port names as well as port
 +      numbers.
 +
 +2010-10-11  Julien Danjou  <julien@danjou.info>
 +
 +      * shr.el (shr-hr-line): Add.
 +      (shr-tag-hr): Use shr-hr-line to specify which character to use to
 +      display hr lines.
 +      (shr-max-columns): Do not change state to nil if we just inserting
 +      spaces.
 +
 +2010-10-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-topic.el (gnus-topic-read-group): If after the last group,
 +      select the last group.
 +
 +2010-10-11  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-int.el (gnus-run-hook-with-args): Autoload from gnus-util.el.
 +
 +2010-10-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-update-qresync-info): \Flagged messages are read
 +      for Gnus.
 +      (nnimap-retrieve-group-data-early): utf7-encode the group parameters.
 +      (nnimap-update-qresync-info): Mark \Seen articles as read.
 +
 +      * gnus-sum.el (gnus-summary-set-local-parameters): Ignore the `active'
 +      non-variable, too.
 +
 +      * nnimap.el (nnimap-open-connection): Use gnutls STARTTLS, if
 +      available.
 +      (nnimap-update-info): Rely more on the current active than the param
 +      active to avoid marking articles as read too much.
 +
 +      * auth-source.el (auth-source-create): Use (user-login-name) for the
 +      user name default.
 +
 +      * nnimap.el (nnimap-update-info): If the server doesn't return any
 +      useful info, just use the previous info.
 +      (nnimap-update-info): Prefer old info over start-article.
 +      (nnimap-update-qresync-info): Finish implementing QRESYNC.
 +
 +2010-10-10  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (autoload): Clean up autoloads.
 +      (nnir-imap-default-search-key): Rename from nnir-imap-search-field.
 +      Use key rather than value.
 +      (nnir-imap-search-other): New variable.
 +      (nnir-read-parm): Use it.
 +      (nnir-imap-expr-to-imap): Use %S rather than imap-quote-specials.
 +      (gnus-summary-nnir-goto-thread): Modify to work with imap.
 +
 +2010-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnimap.el (nnimap-wait-for-response): If the user hits `C-g', kill
 +      the process, too.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * spam.el (gnus-summary-mode-map): Bind to "$".
 +      Suggested by Russ Allbery.
 +
 +      * shr.el: Rework the way things are indented by <li> slightly.
 +
 +      * gnus.el (gnus-group-set-parameter): Fix typo.
 +
 +      * nnimap.el: Start implementing QRESYNC support.
 +
 +2010-10-09  Julien Danjou  <julien@danjou.info>
 +
 +      * nnir.el (nnir-engines): Fix too many arguments.
 +
 +2010-10-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnmail.el (nnmail-expiry-target-group): Say that every expiry target
 +      group is the "last", so that the backends like nnfolder actually save
 +      their folders.
 +
 +      * nnimap.el (nnimap-open-connection): If we have gnutls loaded, then
 +      try to use that for the tls stream.
 +      (nnimap-retrieve-group-data-early): Rework the marks code to heed
 +      UIDVALIDITY and find out which groups are read-only and not.
 +      (nnimap-get-flags): Use the same marks parsing code as the rest of
 +      nnimap.
 +
 +2010-10-09  Julien Danjou  <julien@danjou.info>
 +
 +      * nnir.el (nnir-read-parm): Fix call to gnus-completing-read.
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address): Error errors when
 +      retrieving gravatars.
 +
 +      * shr.el (shr-table-corner): Add.
 +      (shr-table-line): Add.
 +      (shr-insert-table-ruler): Use the above defcustoms to insert tables.
 +
 +2010-10-08  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-decode.el (mm-text-html-renderer): Add mm-shr in choice list.
 +
 +2010-10-08  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-util.el (gnus-alist-pull): Rename `gnus-pull'.
 +
 +      * gnus-sum.el (gnus-mark-article-as-unread)
 +      (gnus-summary-mark-article-as-unread, gnus-summary-remove-bookmark)
 +      (gnus-summary-set-bookmark): Use it.
 +
 +      * gnus-msg.el (gnus-setup-message): Use it.
 +
 +      * gnus-demon.el (gnus-demon-remove-handler): Use it.
 +
 +      * gnus.el (gnus-group-remove-parameter): Use it.
 +
 +      * gnus-group.el (gnus-group-make-web-group): Use it.
 +
 +      * gnus-demon.el (gnus-demon-remove-handler): Use it.
 +
 +      * nnregistry.el: Update docs to mention manual.
 +
 +      * gnus-registry.el: Update docs to mention nnregistry.el.
 +      (gnus-registry-initialize): Don't install nnregistry refer method
 +      automatically.
 +      (gnus-registry-install-nnregistry): Remove it.
 +
 +2010-10-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert): Don't insert double spaces.
 +
 +2010-10-08  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-treat-from-gravatar)
 +      (gnus-treat-mail-gravatar): Bind gnus-gravatar-too-ugly to nil when
 +      called interactively.
 +
 +      * gnus-art.el (gnus-mime-view-part-externally)
 +      (gnus-mime-view-part-internally): Make predicate function passed to
 +      gnus-mime-view-part-as-type assume argument is a mime type, not a list
 +      of a mime type.
 +
 +      * shr.el (shr-table-widths): Don't use cl function `reduce'.
 +
 +2010-10-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (require): Require cl when compiling.
 +      (shr-tag-hr): New function.
 +
 +      * nnimap.el (nnimap-update-info): Remove double setting of high.
 +      (nnimap-update-info): Don't ignore groups that have no UIDNEXT.
 +      This makes nnimap work properly on Courier again.
 +
 +      * gnus.el (gnus-carpal): The carpal mode has been removed, but define
 +      the variable for backwards compatability.
 +
 +      * mm-decode.el (mm-save-part): If given a non-directory result, expand
 +      the file name before using to avoid setting mm-default-directory to
 +      nil.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Require gnus-agent before
 +      bidning gnus-agent variables.
 +
 +      * shr.el (shr-render-td): Use a cache for the table rendering function
 +      to avoid getting an exponential rendering behaviour in nested tables.
 +      (shr-insert): Rework the line-breaking algorithm.
 +      (shr-insert): Don't leave trailing spaces.
 +      (shr-insert-table): Also insert empty TDs.
 +      (shr-tag-blockquote): Ensure paragraphs after </ul>.
 +
 +2010-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-sum.el (gnus-number): Rename from `number'.
 +      (gnus-article-marked-p, gnus-summary-limit-to-display-predicate)
 +      (gnus-summary-limit-children): Update uses correspondingly.
 +
 +2010-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-gravatar.el (gnus-gravatar-too-ugly): New user option.
 +      (gnus-gravatar-transform-address): Don't show avatars of people of
 +      which mail addresses match gnus-gravatar-too-ugly.
 +
 +2010-10-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-table-widths): Expand TD elements to fill available
 +      space.
 +
 +2010-10-07  Julien Danjou  <julien@danjou.info>
 +
 +      * nnimap.el (nnimap-request-rename-group): Add this method.
 +
 +2010-10-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Remove function
 +      name from XEmacs' function-arglist.
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Don't add properties to
 +      gravatar under XEmacs.
 +
 +2010-10-07  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el: Update docs with TODO items.
 +
 +      * gnus-sync.el: Update docs to explain state and plans.
 +
 +      * gnus-int.el (gnus-after-set-mark-hook, gnus-before-update-mark-hook):
 +      Hooks for mark updates.
 +      (gnus-request-set-mark, gnus-request-update-mark): Use them.
 +
 +      * gnus-util.el (gnus-run-hooks-with-args): Convenience function to run
 +      hooks with arguments, which is needed for mark update hooks.
 +
 +2010-10-06  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.el (gnus-expand-group-parameter): Only return and act on what
 +      was matched.
 +
 +      * sieve-manage.el: Update example in `Commentary'.
 +
 +      * sieve.el (sieve-open-server): Use sieve-manage-authenticate.
 +
 +      * sieve-manage.el (sieve-manage-open): Use sieve-manage-default-port,
 +      not 2000.
 +      (sieve-manage-authenticate): Re-add function.
 +
 +2010-10-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert): Get 'space transition right.
 +      (shr-render-td): Only delete space at the end of the TD.
 +
 +      * nnimap.el (nnimap-open-connection): Prepare to support
 +      open-gnutls-stream.
 +
 +      * shr.el: Rearrange function order to be more logical.
 +
 +2010-10-06  Julien Danjou  <julien@danjou.info>
 +
 +      * nnrss.el (nnrss-check-group): Remove 404 URL in comment.
 +      (nnrss-discover-feed): Remove 404 URL in docstring.
 +
 +      * nnir.el: Fix Swish-E URL.
 +      Fix Namazu URL.
 +
 +      * message.el (message-change-subject): Remove 404 URL in a comment.
 +
 +2010-10-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-mime-view-part-as-type): Make it work when being
 +      called interactively.
 +
 +      * gnus-util.el (gnus-remove-if): Allow hash table.
 +      (gnus-remove-if-not): New function.
 +
 +      * gnus-art.el (gnus-mime-view-part-as-type)
 +      * gnus-score.el (gnus-summary-score-effect)
 +      * gnus-sum.el (gnus-read-move-group-name):
 +      Replace remove-if-not with gnus-remove-if-not.
 +
 +      * gnus-group.el (gnus-group-completing-read):
 +      Regard collection as a hash table if it is not a list.
 +
 +2010-10-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-render-td): Allow blank/missing <TD>s.
 +
 +      * shr.el: Document the table-rendering algorithm.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Protect against
 +      invalid URLs.
 +
 +      * shr.el (shr-tag-img): Shorten ALT texts and allow them to be
 +      line-broken.
 +      (shr-tag-img): Ignore image fetching errors.
 +      (shr-overlays-in-region): Compute overlay positions correctly.
 +
 +      * mm-decode.el (mm-shr): Require shr.
 +
 +      * gnus-art.el (gnus-blocked-images): Move variable here.
 +
 +      * shr.el (shr-insert-table): Bind free variable.
 +
 +      * mm-decode.el (mm-shr): Bind shr-content-function.
 +
 +      * shr.el (shr-content-function): New variable.
 +
 +      * gnus-sum.el (gnus-article-sort-by-most-recent-date): New function,
 +      added for symmetry.
 +
 +      * nnir.el (nnir-retrieve-headers): Don't bug out on invalid data.
 +
 +      * gnus-group.el (gnus-group-make-group): Doc fix.
 +
 +      * nnimap.el (nnimap-request-newgroups): Return success.
 +
 +      * shr.el (shr-find-elements): New function.
 +      (shr-tag-table): Put all the images after the table.
 +      (shr-tag-table): Really inhibit images inside the table.
 +      (shr-collect-overlays): Copy over overlays from the TD elements to the
 +      main document.
 +
 +      * mm-decode.el (mm-shr): Bind shr-blocked-images to
 +      gnus-blocked-images.
 +
 +2010-10-05  Julien Danjou  <julien@danjou.info>
 +
 +      * sieve-manage.el (sieve-sasl-auth): Use auth-source to authenticate.
 +
 +      * gnus-html.el (gnus-html-wash-images): Rescale image from cid too.
 +      (gnus-html-maximum-image-size): Add this function.
 +      (gnus-html-put-image): Use gnus-html-maximum-image-size.
 +
 +      * sieve-manage.el (sieve-manage-capability): Do not bug out when the
 +      server-value of the capability is nil.
 +
 +2010-10-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-em): Add <EM> tag.
 +
 +2010-10-05  Florian Ragwitz  <rafl@debian.org>  (tiny change)
 +
 +      * sieve-manage.el (sieve-manage-default-stream): Make default stream
 +      customizable.
 +
 +      * gnus-html.el (gnus-html-wash-tags): Decode URL entities to avoid
 +      handing broken links to browse-url.
 +
 +2010-10-05  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-emacs-completing-read)
 +      (gnus-iswitchb-completing-read): Use autoload rather than require.
 +
 +2010-10-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el (gnus-completing-read-function): Exclude
 +      gnus-icompleting-read and gnus-ido-completing-read from candidates for
 +      XEmacs since iswitchb.el is very old and ido.el is unavailable in
 +      XEmacs.
 +
 +      * gnus-registry.el (gnus-registry-install-nnregistry): Rewrite so as
 +      not to use `delete-dups' that is unavailable in XEmacs 21.4.
 +
 +      * gnus-html.el: Don't require help-fns under XEmacs.
 +      (gnus-html-schedule-image-fetching): Work for XEmacs.
 +
 +      * mm-decode.el (mm-shr): Decode contents by charset.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): Give an error if nnimap-stream is
 +      unknown.
 +
 +      * shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
 +      (shr-get-image-data): Ensure against the cache file missing.
 +
 +      * nnimap.el (nnimap-finish-retrieve-group-infos): Message while waiting
 +      for data.
 +
 +      * spam-report.el (spam-report-url-ping-plain): Don't query about
 +      killing the process.
 +
 +      * shr.el (shr-render-td): Protect against too-wide text.
 +
 +2010-10-04  Julien Danjou  <julien@danjou.info>
 +
 +      * mml-smime.el (mml-smime-openssl-encrypt-query): Fix choices.
 +      (mml-smime-openssl-sign-query): Fix gnus-completing-read call.
 +
 +      * gravatar.el (gravatar-retrieved): Kill buffer when gravatar has been
 +      retrieved.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (browse-url): Require.
 +      (shr-ensure-paragraph): Don't insert a new newline after empty-ish
 +      lines.
 +      (shr-show-alt-text, shr-browse-image): New commands.
 +      (shr-browse-url, shr-copy-url): New commands.
 +
 +      * gnus-sum.el (gnus-widen-article-window): New variable.
 +      (gnus-summary-select-article-buffer): Use it.
 +
 +      * message.el (message-idna-to-ascii-rhs-1): Don't bug out on addresses
 +      without @ signs.
 +
 +2010-10-04  Michael Welsh Duggan  <md5i@md5i.com>  (tiny change)
 +
 +      * nnir.el (nnir-run-imap): Remove spurious space in search string.
 +
 +2010-10-04  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-emacs-completing-read): Mapcar collection to list,
 +      for XEmacs.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-salt.el: Remove all gnus-carpal stuff -- it's not useful.
 +
 +      * nnimap.el (nnimap-open-connection): Allow tls as a synonym for ssl.
 +      (nnimap-close-server): Implement.
 +
 +      * shr.el (shr-ensure-paragraph): Fix the non-empty line case.
 +      (shr-insert): Tweak line breaking.
 +      (shr-insert): Handle <pre> better.
 +      (shr-tag-li): Get <li> indentation right.
 +      (shr-tag-li): Get <li> indentation even righter.
 +      (shr-tag-blockquote): Ensure paragraph start.
 +      (shr-make-table): Tweak table generation.
 +      (shr-make-table): Fix typo.
 +
 +      * shr.el: Implement table rendering.
 +
 +2010-10-04  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-put-image): Fix resize image code.
 +
 +2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert): Use string anchors instead of line anchors.
 +
 +2010-10-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el: Add headings.
 +      (shr-ensure-paragraph): Actually work.
 +      (shr-tag-li): Make <ul> prettier.
 +      (shr-insert): Get white space at the beginning/end of elements right.
 +      (shr-tag-p): Collapse subsequent <p>s.
 +      (shr-ensure-paragraph): Don't insert double line feeds after blank
 +      lines.
 +      (shr-insert): \t is also space.
 +      (shr-tag-s): Fix "s" tag name function.
 +      (shr-tag-s): Fix face prop name.
 +
 +2010-10-03  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-put-image): Use gnus-rescale-image.
 +
 +      * mm-view.el (gnus-window-inside-pixel-edges): Add autoload for
 +      gnus-window-inside-pixel-edges.
 +
 +      * gnus-ems.el (gnus-window-inside-pixel-edges): Move from gnus-html to
 +      gnus-ems.
 +
 +      * mm-view.el (mm-inline-image-emacs): Support image resizing.
 +
 +      * gnus-util.el (gnus-rescale-image): Add generic gnus-rescale-image
 +      function.
 +
 +      * mm-decode.el (mm-inline-large-images): Enhance defcustom and add
 +      resize choice.
 +
 +2010-10-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-tag-p): Don't insert newlines on empty tags at the
 +      beginning of the buffer.
 +
 +      * gnus-sum.el (gnus-summary-select-article-buffer): Really select the
 +      article buffer again.
 +
 +      * shr.el (shr-tag-p): Don't insert newlines at the start of the buffer.
 +
 +      * mm-decode.el (mm-shr): Narrow before inserting, so that shr can know
 +      when it's at the start of the buffer.
 +
 +      * shr.el (shr-tag-blockquote): Convert name.
 +      (shr-rescale-image): Use the right image-size variant.
 +
 +      * gnus-sum.el (gnus-summary-select-article-buffer): If the article
 +      buffer isn't shown, then select the current article first instead of
 +      bugging out.
 +      (gnus-summary-select-article-buffer): Show both the article and summary
 +      buffers again.
 +
 +      * shr.el (shr-fontize-cont): Protect against regions with no text.
 +      Rename tag functions to shr-tag-* for enhanced security.
 +      (shr-tag-ul, shr-tag-ol, shr-tag-li, shr-tag-br): New functions.
 +
 +2010-10-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * shr.el (shr-insert):
 +      * pop3.el (pop3-movemail):
 +      * gnus-html.el (gnus-html-wash-tags): Don't use plusp, as cl may not be
 +      loaded.
 +
 +2010-10-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * nnmairix.el (nnmairix-replace-illegal-chars): Drop Emacs 20 code.
 +
 +      * smime.el (smime-cert-by-ldap-1): Drop Emacs 21 code.
 +
 +      * gnus-art.el (gnus-next-page-map): Drop Emacs 20 compat cruft.
 +
 +      * gmm-utils.el (gmm-write-region): Drop Emacs 20 compat cruft.
 +
 +      * gnus-util.el (gnus-make-local-hook): Simplify.
 +
 +2010-10-02  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-iswitchb-completing-read): New function.
 +      (gnus-ido-completing-read): New function.
 +      (gnus-emacs-completing-read): New function.
 +      (gnus-completing-read): Use gnus-completing-read-function.
 +      Add gnus-completing-read-function.
 +
 +2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el (shr-insert-document): Autoload.
 +      (shr-img): Be silent.
 +      (shr-insert): Add a newline after every picture before text.
 +      (shr-add-font): Use overlays for combining faces.
 +      (shr-insert): Pass upwards the text start point.
 +
 +      * mm-decode.el (mm-text-html-renderer): Default to shr.el rendering, if
 +      possible.
 +      (mm-shr): New function.
 +
 +2010-10-02  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Adjust character where we
 +      should go backward.
 +
 +2010-10-02  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * shr.el (shr): Fix typo in provide call.
 +
 +2010-10-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * shr.el: New file.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Be silent.
 +
 +      * gnus-topic.el (gnus-topic-move-group): Fix the syntax of the
 +      completing read.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-check-bogus-newsgroups): Say how many groups
 +      we're being queried about.  Suggested by Dan Jacobson.
 +
 +      * nndoc.el (nndoc-type-alist): Do babyl before mime-parts.
 +      Suggested by Jason Eisner.
 +
 +      * gnus-async.el (gnus-async-delete-prefetched-entry): Remove from hash
 +      table, too.  Suggested by Stefan Wiens.
 +      (gnus-async-prefetched-article-entry): Use intern-soft to avoid growing
 +      the table unnecessary.  Suggested by Stefan Wiens.
 +
 +      * gnus-sum.el (gnus-summary-clear-local-variables): This is probably no
 +      longer needed, and probably doesn't work either, as pointed out by
 +      Stefan Wiens.
 +      (gnus-summary-exit): Remove call to the clearing function.
 +      (gnus-summary-exit-no-update): Ditto.
 +
 +      * gnus-art.el (gnus-summary-save-in-file): Use with-current-buffer
 +      instead of gnus-eval-in-buffer-window to avoid popping up frames.
 +      Reported by Stefan Monnier.
 +      (gnus-summary-save-in-rmail): Ditto.
 +
 +      * gnus-sum.el (gnus-summary-select-article-buffer): Show only the
 +      article buffer, instead of both the article buffer and the summary
 +      buffer.  Sort of suggested by Dan Jacobson.
 +
 +      * gnus-win.el (gnus-buffer-configuration): Add an only-article spec.
 +
 +      * nnmbox.el (nnmbox-read-mbox): Mark buffer for deletion on Gnus exit.
 +      Suggested by Dan Jacobson.
 +
 +      * mm-encode.el (mm-content-transfer-encoding-defaults): Try to make the
 +      documentation clearer.
 +
 +      * message.el (message-shorten-references): Comment on the number "21".
 +      Suggested by Stefan Monnier.
 +
 +      * gnus-sum.el (gnus-summary-scroll-up): Add more documentation.
 +      Suggested by Dan Jacobson.
 +
 +      * gnus.el (gnus-large-newsgroup):
 +      Mention gnus-large-ephemeral-newsgroup.  Suggested by Dan Jacobson.
 +
 +      * gnus-msg.el (gnus-summary-resend-message): When resending, don't
 +      externalize attachments.  Bug reported by Steve Wen.
 +
 +      * gnus.el (gnus-continuum-version): Make inactive, since it doesn't
 +      really message anything to the user.
 +
 +      * nnmail.el (nnmail-article-group): Allow using the fancy split method
 +      directly.
 +
 +      * nnimap.el (nnimap-request-group): Low higher than high to signal no
 +      messages in empty groups.
 +
 +2010-10-01  Ted Zlatanov  <tzz@lifelogs.com>
 +
 +      * nnimap.el (nnimap-request-group): Don't bug out when there's an empty
 +      non-UIDNEXT group.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-completing-read): Return the symbol name,
 +      not the value from the collection.
 +
 +      * nnimap.el (nnimap-update-info): Ignore groups that have no UIDNEXT
 +      values.  This sometimes happens on some groups that have no info.
 +      (nnimap-request-newgroups): New function.
 +
 +2010-10-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-registry.el (gnus-registry-install-nnregistry): Move the feature
 +      check into `gnus-registry-initialize'.
 +      (gnus-registry-initialize): Ditto.
 +      Fix and extend header docs.
 +
 +2010-10-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid
 +      regexp backtrace overflows.
 +
 +      * nnimap.el (nnimap-extend-tls-programs): Only extend those programs
 +      for starttls that tls.el implements; i.e. openssl.
 +
 +2010-10-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gravatar.el: Don't load image.el that XEmacs doesn't provide.
 +      (gravatar-create-image): New function that's an alias to
 +      gnus-xmas-create-image, gnus-create-image, or create-image.
 +      (gravatar-data->image): Use it.
 +
 +2010-09-30  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-registry.el (gnus-registry-install-nnregistry): New function to
 +      install the nnregistry refer method.
 +      (gnus-registry-install-hooks): Use it.
 +      (gnus-registry-unfollowed-groups): Add nnmairix to the default
 +      unfollowed groups.
 +
 +2010-09-30  Jose A. Ortega Ruiz  <jao@gnu.org>  (tiny change)
 +
 +      * gnus-sum.el (gnus-summary-show-thread): Skip past invisible text when
 +      expanding threads.
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnir.el: Use the server names without suffixes (bug #7009).
 +
 +      * nnimap.el (nnimap-open-connection): Reinstate the auto-upgrade from
 +      unencrypted to STARTTLS, if possible.
 +
 +2010-09-30  Teemu Likonen  <tlikonen@iki.fi>  (tiny change)
 +
 +      * message.el (message-ignored-supersedes-headers): Strip Injection-*
 +      headers before superseding.
 +
 +2010-09-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnrss.el (nnrss-use-local): Add documentation.
 +
 +      * nnimap.el (nnimap-extend-tls-programs): New function.
 +      (nnimap-open-connection): Use tls.el exclusively, and not starttls.el.
 +      (nnimap-wait-for-connection): Accept the greeting from the stupid
 +      output from openssl s_client -starttls, too.
 +
 +      * nnimap.el (nnimap-find-article-by-message-id): Really return the
 +      article number.
 +      (nnimap-split-fancy): New variable.
 +      (nnimap-split-incoming-mail): Use it.
 +
 +      * nntp.el (nntp-server-list-active-group): Document.
 +
 +      * nnimap.el (nnimap-find-article-by-message-id): Use EXAMINE instead of
 +      SELECT to get the message-id.
 +
 +      * mail-source.el (mail-sources): Remove webmail support.
 +      (defvar): Ditto.
 +      (mail-source-fetcher-alist): Ditto.
 +      (mail-source-fetch-webmail): Remove.
 +
 +      * webmail.el: Remove -- doesn't seem relevant any more.
 +
 +      * gnus.el: Fix up make-obsolete-variable declarations throughout.
 +
 +      * nnimap.el (nnimap-request-accept-article): Get the Message-ID without
 +      the \r.
 +
 +2010-09-30  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-agent.el (gnus-agent-add-group): Fix call to
 +      gnus-completing-read.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nndoc.el (nndoc-retrieve-groups): New function.
 +
 +      * nnimap.el (nnimap-split-incoming-mail): If nnimap-split-methods is
 +      `default', use nnmail-split-methods.
 +      (nnimap-request-article): Downcase the NILs so that they are nil.
 +
 +      * gnus-sum.el (gnus-valid-move-group-p): Make sure that `group' is a
 +      symbol.
 +
 +      * nnimap.el (nnimap-open-connection): Revert the auto-network->starttls
 +      code, since if the user has requested network, that's what they ought
 +      to get.
 +      (nnimap-request-set-mark): Erase the buffer before issuing commands.
 +      (nnimap-split-rule): Mark as obsolete.
 +
 +      * pop3.el (pop3-send-streaming-command, pop3-stream-length):
 +      New variable.
 +
 +      * nnimap.el (nnimap-insert-partial-structure): Get the type from the
 +      correct slot, too.
 +
 +2010-09-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus.el (gnus-local-domain): Declare variable obsolete.
 +
 +      * gnus-util.el (gnus-icompleting-read): Require iswitchb.
 +      Fix history computing.
 +      (gnus-ido-completing-read): Require ido.
 +
 +2010-09-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-registry.el: Don't prompt on load, which makes it impossible to
 +      build Gnus.
 +
 +      * nnimap.el (nnimap-insert-partial-structure): Be way more permissive
 +      when interpreting the structures.
 +      (nnimap-request-accept-article): Add \r\n to the lines to make this
 +      work with Cyrus.
 +
 +      * nndraft.el (nndraft-request-expire-articles): Use the group name
 +      instead if "nndraft".  Fix found by Nils Ackermann.
 +
 +2010-09-29  Ludovic Courtes  <ludo@gnu.org>
 +
 +      * nnregistry.el: Add.
 +
 +2010-09-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnmail.el (group, group-art-list, group-art):
 +      Remove unneeded directives.
 +
 +2010-09-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-codepage-iso-8859-list, mm-charset-eval-alist)
 +      (mm-mime-charset)
 +      * rfc2047.el (rfc2047-syntax-table)
 +      * utf7.el (utf7-utf-16-coding-system): Comment fix.
 +
 +      * nnrss.el (nnrss-read-server-data, nnrss-read-group-data): Use `load'
 +      rather than `insert-file-contents' and `eval-region'.
 +
 +2010-09-29  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-gravatar.el (gnus-gravatar-properties): Add this properties in
 +      replacement of `gnus-gravatar-relief' to mimic
 +      `gnus-faces-properties-alist'.
 +      Add :version property.
 +
 +2010-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mail-source.el (mail-source-report-new-mail)
 +      * message.el (message-default-mail-headers)
 +      * mm-decode.el (mm-valid-image-format-p): Comment fix.
 +
 +      * mml2015.el (mml2015-use): Don't bind recursive-load-depth-limit.
 +
 +2010-09-28  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Fix search in case
 +      mail-address contains the same string as real-name.
 +
 +      * gnus-ems.el (gnus-put-image): Revert Lars, change and insert
 +      non-blank in header, otherwise it'll get stripped.
 +
 +      * gnus-gravatar.el (gnus-gravatar-insert): Search backward for
 +      real-name, and then for mail address rather than doing : or , search.
 +
 +2010-09-27  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-util.el (gnus-completing-read): Use gnus-use-ido to apply the
 +      right completing-read function.
 +      (gnus-use-ido): New variable
 +      (gnus-completing-read-with-default): Remove.
 +      * gnus-agent.el (gnus-agent-read-group): Remove prompt computing.
 +      (gnus-agent-add-group):
 +      * gnus-srvr.el (gnus-server-add-server, gnus-server-goto-server):
 +      * mm-view.el (mm-view-pkcs7-decrypt):
 +      * mm-util.el (mm-codepage-setup):
 +      * smime.el (smime-sign-buffer, smime-decrypt-buffer):
 +      * mml-smime.el (mml-smime-openssl-sign-query):
 +      * mml.el (mml-minibuffer-read-type, mml-minibuffer-read-disposition)
 +      (mml-insert-multipart):
 +      * gnus-msg.el (gnus-summary-yank-message):
 +      * gnus-int.el (gnus-start-news-server):
 +      * mm-decode.el (mm-interactively-view-part):
 +      * gnus-dired.el (gnus-dired-attach):
 +      * gnus.el (gnus-read-method):
 +      * gnus-bookmark.el (gnus-bookmark-jump):
 +      * gnus-art.el (gnus-mime-view-part-as-type)
 +      (gnus-mime-action-on-part, gnus-article-encrypt-body):
 +      * gnus-topic.el (gnus-topic-jump-to-topic, gnus-topic-move-matching)
 +      (gnus-topic-copy-matching, gnus-topic-sort-topics, gnus-topic-move):
 +      * nnmairix.el (nnmairix-create-server-and-default-group)
 +      (nnmairix-update-groups, nnmairix-get-server)
 +      (nnmairix-backend-to-server, nnmairix-goto-original-article)
 +      (nnmairix-get-group-from-file-path):
 +      * nnrss.el (nnrss-find-rss-via-syndic8):
 +      * gnus-group.el (gnus-group-completing-read, gnus-group-make-web-group)
 +      (gnus-group-make-useful-group, gnus-group-add-to-virtual)
 +      (gnus-group-browse-foreign-server):
 +      * gnus-sum.el (gnus-summary-goto-article, gnus-summary-limit-to-extra)
 +      (gnus-summary-execute-command, gnus-summary-respool-article)
 +      (gnus-read-move-group-name):
 +      * gnus-score.el (gnus-summary-increase-score)
 +      (gnus-summary-score-effect):
 +      * gnus-registry.el (gnus-registry-read-mark): Use gnus-completing-read.
 +
 +2010-09-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnimap.el (auth-source-forget-user-or-password)
 +      (auth-source-user-or-password): Autoload.
 +
 +      * message.el (message-from-style, message-interactive)
 +      (message-signature): Remove comment.
 +      (message-cite-prefix-regexp): Default to mail-citation-prefix-regexp
 +      always.
 +      (message-sendmail-envelope-from): Comment fix.
 +      (message-yank-prefix): Default to mail-yank-prefix always.
 +      (message-indentation-spaces):
 +      Default to mail-indentation-spaces always.
 +      (message-signature-file): Default to mail-signature-file always.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-read-group-1): Set gnus-newsgroup-highest.
 +      (gnus-summary-insert-new-articles): Use gnus-newsgroup-highest to get
 +      new articles.
 +
 +      * nnimap.el (nnimap-request-article): Don't partial-fetch single-part
 +      parts.
 +      (nnimap-request-article): Work with the t setting, too.
 +
 +      * gnus-sum.el (gnus-summary-exit): Kill the article buffer later, so
 +      that you don't get flashes of other buffers.
 +      (gnus-summary-show-complete-article): Intern before setting.
 +
 +2010-09-27  David Engster  <dengste@eml.cc>
 +
 +      * nnmairix.el (nnmairix-replace-group-and-numbers): Deal with NOV as
 +      well as HEADERS.
 +      (nnmairix-retrieve-headers): Provide new argument for the above.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-move-article): Don't alter
 +      gnus-newsgroup-active.  This makes `/ N' work after copying to the same
 +      group.
 +
 +      * nnimap.el (nnimap-update-info): Don't destructively alter active.
 +
 +      * message.el (message-cite-prefix-regexp): Revert my last edit.
 +
 +      * gnus-sum.el (gnus-summary-show-complete-article): Bind the server
 +      variable instead of the Gnus variable.
 +
 +      * nnimap.el (nnimap-find-wanted-parts-1): Use it.
 +
 +      * gnus-art.el (gnus-fetch-partial-articles): Move back to nnimap again.
 +
 +      * nnimap.el (nnimap-request-accept-article): Remove the "." at the end,
 +      since some servers don't like it.
 +      (nnimap-open-connection): Forget credentials if the server says the
 +      password was wrong.
 +      (nnimap-parse-line): Protect against invalid data.
 +
 +      * gnus-sum.el (gnus-summary-move-article): Add comment.
 +      (gnus-summary-insert-new-articles): Copy the old-high watermark so that
 +      nothing alters it while scanning for new messages.
 +
 +      * nnimap.el (nnimap-request-accept-article): Send a "." at the end,
 +      which may or may not help.
 +      (nnimap-open-connection): If we're doing a stream connection, and then
 +      discover we're on a STARTTLS-capable server, then open a STARTTLS
 +      connection instead.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (utf7): Require.
 +
 +      * message.el (message-cite-prefix-regexp): Remove "}" from citation
 +      prefix.
 +
 +2010-09-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * nnmail.el (nnmail-fancy-expiry-targets): Fix typo in docstring.
 +
 +2010-09-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-accept-article): Message the error on
 +      error.
 +
 +2010-09-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-mime-delete-part): Fix Lisp type of byte(s).
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nndoc.el (nndoc-request-list): Return success always.
 +
 +      * gnus-agent.el (gnus-agent-retrieve-headers): Don't propagate
 +      `fetch-old' -- we only want to fetch the articles we've requested.
 +      The rest are in the agent, probably.
 +      (gnus-agent-read-servers-validate): Change the level for the "Ignoring
 +      disappeared server" to something low.  It's not important.
 +
 +      * nnimap.el (nnimap-get-whole-article): Remove the data that may have
 +      arrived before the FETCH data.
 +
 +      * nnmh.el (nnmh-request-expire-articles): Don't try to fetch the expiry
 +      target here, because we don't know the Gnus name of the group.
 +
 +      * nndraft.el (nndraft-request-expire-articles): Fetch the expiry target
 +      for the correct group.
 +
 +      * gnus-ems.el (gnus-create-image): Ignore all image-creation errors.
 +
 +      * gnus.el (gnus): Give a final warning after startup.
 +
 +      * gnus-util.el (gnus-action-message-log): New variable.
 +      (gnus-message): Use it.
 +      (gnus-final-warning): New function.
 +
 +      * nnimap.el (nnimap-open-connection): Record the greeting.
 +      (nnimap): Add greeting.
 +
 +2010-09-26  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-show-images): Fix gnus-html-display-image
 +      arguments.
 +      (gnus-html-wash-images): Fix spec computing to include start/end.
 +
 +      * gnus-art.el (gnus-article-treat-body-boundary): Fix length computing.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-expire-articles): Compress ranges before
 +      deletion.
 +      (nnimap-retrieve-headers): Don't select the group, because that's
 +      already done by nnimap-possibly-change-group.
 +
 +      * gnus-picon.el (gnus-picon-inhibit-top-level-domains): New variable.
 +      (gnus-picon-transform-address): Use it.
 +
 +      * mail-source.el (mail-source-value): Revert previous patch.
 +
 +      * nnimap.el (nnimap-credentials): Allow inhibiting the password query
 +      on failure.
 +      (nnimap-open-connection): Look up both virtual and physical server name
 +      credentials.
 +
 +      * gnus-win.el: Revert previous patch, since it made Gnus backtrace.
 +
 +2009-02-08  Dave Love  <fx@gnu.org>
 +
 +      * gnus-win.el (gnus-window-to-buffer-helper)
 +      (gnus-all-windows-visible-p): Function needn't be a symbol.
 +
 +      * mail-source.el (mail-source-value): Function needn't be a symbol.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-cite-prefix-regexp): Remove } from the cite
 +      prefix.
 +
 +      * gnus-art.el (gnus-treatment-function-alist): Do picons before
 +      highlight again, so that the highlight is correct.
 +
 +      * gnus-picon.el (gnus-picon): Remove again.
 +      (gnus-picon-create-glyph): Set the background XPM colour explicitly.
 +
 +      * gnus-art.el (gnus-treatment-function-alist): Insert picons after
 +      doing the header highlightling, so that the background colour of the
 +      picon is correct.
 +
 +      * gnus-picon.el (gnus-picon-xbm): Remove obsolete face.
 +      (gnus-picon): Ditto.
 +      (gnus-picon): Reinstate.  The background colour for picons is white.
 +      (gnus-picon-insert-glyph): Make the background white.
 +
 +      * nnml.el (nnml-open-nov): Don't return dead buffers.
 +
 +      * auth-source.el (auth-source-create): Query the user for whether to
 +      store the credentials.
 +
 +      * auth-source.el (auth-source-user-or-password): Use the existing auth
 +      sources, if any, for creation.
 +
 +      * gnus.el (gnus-group-fast-parameter): Return the last matching
 +      parameter instead of the first matching parameter.
 +
 +2010-09-26  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-sum.el (gnus-auto-center-group): Transform into a defcustom.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mml2015.el (mml2015-use): Remove gpg support.
 +
 +      * mml1991.el (mml1991-function-alist): Remove gpg function.
 +      (mml1991-gpg-sign): Remove.
 +
 +2010-09-26  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus-srvr.el (gnus-browse-subscribe-newsgroup-method): New variable.
 +      (gnus-browse-unsubscribe-current-group): Document it.
 +      (gnus-browse-unsubscribe-group): Use it.
 +
 +2010-09-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-read-ephemeral-bug-group): Add the bug email
 +      address to the To list for easier response.
 +
 +      * gnus.el (gnus-play-startup-jingle): Remove.
 +      (gnus-splash): Don't play jingle.
 +      (gnus): Silence gnus-load message.
 +
 +      * gnus-art.el (gnus-treat-play-sounds): Remove.
 +
 +      * gnus.el (gnus-play-jingle): Remove audio support.
 +
 +      * gnus-cus.el (gnus-score-customize): Remove audio reference.
 +
 +      * earcon.el: Remove -- no users.
 +
 +      * gnus-audio.el: Remove -- no users of this package.
 +
 +      * gnus-sum.el (gnus-summary-limit-children): Remove nocem support.
 +
 +      * gnus-start.el (gnus-setup-news): Remove nocem support.
 +
 +      * gnus-group.el (gnus-group-get-new-news): Remove nocem call.
 +
 +      * gnus.el (gnus-use-nocem): Remove.
 +
 +      * gnus-demon.el (gnus-demon-add-nocem, gnus-demon-scan-nocem):
 +      Remove.
 +
 +      * gnus-nocem.el (gnus-nocem-issuers): Remove file.  Apparently nobody
 +      uses NoCeM any more.
 +
 +      * gnus-art.el (gnus-ctan-url): Seems not very useful -- removed.
 +      (gnus-button-ctan-handler): Ditto.
 +      (gnus-button-handle-ctan-bogus-regexp): Ditto.
 +      (gnus-button-ctan-directory-regexp): Ditto.
 +      (gnus-button-handle-ctan): Ditto.
 +      (gnus-button-tex-level): Ditto.
 +      (gnus-button-alist): Remove CTAN stuff.
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-wait-for-response): Reverse logic in the
 +      nnimap-streaming test.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Don't try to open failed
 +      servers twice.
 +
 +      * nnimap.el (nnimap-open-connection): Add more error reporting when
 +      nnimap fails early.
 +
 +      * nnheader.el (nnheader-get-report-string): New function.
 +      (nnheader-get-report): Use it.
 +
 +      * gnus-int.el (gnus-check-server): Say what the error was when opening
 +      failed.
 +
 +      * nnimap.el (nnimap-wait-for-response): Search further when we're not
 +      using streaming.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-rescale-image): Use our defalias
 +      gnus-window-inside-pixel-edges.
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-srvr.el (gnus-server-copy-server): Add documentation.
 +
 +      * mm-decode.el (mm-save-part): Allow saving to other directories the
 +      normal Emacs way.
 +
 +      * nndoc.el (nndoc-type-alist): Move mime-parts after mbox.
 +      Suggested by Jay Berkenbilt.
 +
 +      * gnus-art.el (gnus-mime-delete-part): Fix plural for "byte" when
 +      there isn't a single byte.
 +
 +      * gnus-int.el (gnus-open-server): Don't query whether to go offline --
 +      just do it.  It doesn't really seem to matter what the user responds
 +      here, I think, so it's just a confusing question.
 +
 +      * nnimap.el (nnimap-retrieve-group-data-early): Fix typo in the
 +      non-streaming case.
 +
 +      * gnus-art.el (gnus-flush-original-article-buffer): Separate out.
 +      (gnus-article-encrypt-body): Use it.
 +
 +      * gnus-sum.el (gnus-summary-show-complete-article): New command and
 +      keystroke.
 +
 +      * nnimap.el (nnimap-find-wanted-parts-1):
 +      Use gnus-fetch-partial-articles.
 +
 +      * gnus-art.el (gnus-fetch-partial-articles): New variable.
 +
 +      * nnimap.el (nnimap-insert-partial-structure): New function.
 +      (nnimap-get-partial-article): New function.
 +      (nnimap-request-article): Use it.
 +      (nnimap-wait-for-response): Return whether the wait was successful.
 +      (nnimap-finish-retrieve-group-infos): Don't do anything if the
 +      retrieval wasn't successful.
 +      (nnimap-retrieve-group-data-early): Allow throttling servers.
 +      (nnimap-streaming): New variable.
 +      (nnimap-fetch-partial-articles): Remove.
 +
 +      * mm-decode.el (mm-with-part): Protect against killed buffers.
 +
 +      * nndraft.el (nndraft-retrieve-headers): Insert Lines and Chars headers
 +      for prettier summary display.
 +
 +2010-09-25  Andrew Cohen  <cohen@andy.bu.edu>  (tiny change)
 +
 +      * nnir.el (nnir-run-imap): Allow sending IMAP search patterns directly.
 +
 +2010-09-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus.el (gnus-local-domain): Put gnus-local-domain back again, since
 +      apparently third-party libraries depend on it.
 +
 +      * nnimap.el (nnimap-open-connection): Wait for the response to STARTTLS
 +      before starting negotiation.
 +
 +      * gnus-art.el (gnus-treat-from-gravatar): Change default to nil for
 +      privacy reasons.
 +      (gnus-treat-mail-gravatar): Ditto.
 +
 +      * gnus-ems.el (gnus-put-image): Don't put any non-blank text into the
 +      buffer when inserting images.  Inserting text into the headers, for
 +      instance, can make them invalid.
 +
 +2010-09-25  Julien Danjou  <julien@danjou.info>
 +
 +      * rfc1843.el: Remove useless rfc1843-old-gnus-decode-header-function
 +      variables.
 +
 +      * nnheader.el: Remove useless variables news-reply-yank-from and
 +      news-reply-yank-message-id.
 +
 +      * mml2015.el: Remove useless mc-default-scheme and mc-schemes
 +      variables.
 +
 +      * mml1991.el: Remove useless mml1991-verbose.
 +
 +      * gnus.el: Remove useless variable gnus-use-generic-from.
 +      Remove obsolete variable gnus-topic-indentation.
 +
 +      * gnus-uu.el: Remove useless gnus-uu-shar-file-name.
 +
 +      * gnus-sum.el: Remove useless gnus-newsgroup-none-id.
 +
 +      * gnus-picon.el: Remove useless gnus-picon-setup-p variable.
 +
 +      * gnus-group.el: Remove useless gnus-group-icon-cache.
 +      Remove useless gnus-ephemeral-group-server.
 +
 +      * gnus-bookmark.el: Remove useless gnus-bookmark-after-jump-hook.
 +
 +      * mml2015.el: Remove useless mml2015-verbose.
 +
 +      * mml-smime.el: Remove useless mml-smime-verbose.
 +
 +      * gnus.el: Remove useless gnus-local-domain.
 +
 +      * gnus-gravatar.el (gnus-gravatar-transform-address):
 +      Use gnus-gravatar-size.
 +
 +      * gnus-art.el: Remove useless gnus-treat-translate.
 +
 +2010-09-24  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-sum.el: Add support for Gravatars.
 +
 +      * gnus-art.el: Add support for Gravatars.
 +
 +      * gnus-gravatar.el: Add this file.
 +
 +      * gravatar.el: Add this file.
 +
 +2010-09-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-summary-fetch-faq): Remove.
 +
 +      * gnus-group.el (gnus-group-fetch-faq): Remove.
 +
 +      * gnus.el (gnus-group-faq-directory): Remove.
 +
 +      * gnus-group.el (gnus-group-fetch-charter): Remove.
 +
 +      * gnus.el (gnus-group-charter-alist): Remove.
 +
 +      * gnus-group.el (gnus-group-archive-directory): Remove.
 +      (gnus-group-recent-archive-directory): Ditto.
 +      (gnus-group-make-archive-group): Remove.
 +
 +      * nnimap.el (nnimap-update-info): Protect against nil uidnexts.
 +
 +      * gnus-cache.el (gnus-cache-braid-heads): When braiding heads, don't
 +      use the same article number for all the cached articles.
 +
 +      * nnimap.el (nnimap-command): Register the last command time so
 +      that we can use it for idling NOOPs.
 +      (nnimap-open-connection): Start the keeplive timer.
 +      (nnimap-make-process-buffer): Store all the process buffers.
 +      (nnimap-keepalive): New function.
 +
 +      * starttls.el (starttls-open-stream): Add autoload cookie.
 +
 +2010-09-24  Michael Welsh Duggan  <md5i@md5i.com>  (tiny change)
 +
 +      * nnimap.el (nnimap-split-incoming-mail): Fix paren typo in the 'junk
 +      handling.
 +
 +2010-09-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnrss.el (nnrss-retrieve-groups): Change to the group before checking
 +      its data structures.
 +
 +      * gnus.el (gnus-sloppily-equal-method-parameters): Use copy-sequence
 +      instead of the cl.el copy-list.
 +      (gnus-sloppily-equal-method-parameters): Use equal instead of the cl
 +      equalp.
 +
 +2010-09-24  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gmm-utils.el (gmm-tool-bar-from-list): Always use tool-bar-local-item
 +      and tool-bar-local-item-from-menu.
 +
 +      * gnus-agent.el (gnus-agent-make-mode-line-string): Always use
 +      mode-line-highlight face for Emacs.
 +
 +      * gnus-art.el (toplevel): Don't bind recursive-load-depth-limit while
 +      loading gnus-sum.elc; fix comment for canlock-verify.
 +      (gnus-article-jump-to-part): Use read-number.
 +      (gnus-insert-mime-button, gnus-insert-mime-security-button):
 +      Remove Emacs pre-21 compatible code for help-echo.
 +      (gnus-article-next-page-1): No need to adjust the number of lines.
 +      (gnus-article-describe-bindings): Always use help-buffer.
 +
 +      * gnus-audio.el (gnus-audio-inline-sound)
 +      * gnus-cus.el (gnus-custom-mode)
 +      * gnus-group.el (gnus-group-update-tool-bar): Comment fix.
 +
 +      * gnus-sum.el (gnus-remove-overlays): Doc fix.
 +
 +      * gnus-util.el (gnus-select-frame-set-input-focus): Remove Emacs 21
 +      compatible code.
 +
 +2010-09-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * message.el (message-output): Use gnus-output-to-rmail if a buffer is
 +      visiting the fcc file in rmail-mode.
 +
 +2010-09-24  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnir.el: Silence the byte compiler.
 +
 +      * gnus-html.el (gnus-html-encode-url-chars): New function, that's an
 +      alias to browse-url-url-encode-chars if any.
 +      (gnus-html-encode-url): Use it.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-use-backend-marks): New variable.
 +      (gnus-get-unread-articles-in-group): Use it.
 +
 +      * gnus-sum.el (gnus-summary-local-variables): Prepare for list/range
 +      makeover.
 +
 +2010-09-23  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnimap.el (nnimap-retrieve-headers): Return 'headers.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news):
 +      Remove.
 +      (gnus-setup-news-hook):
 +      Remove gnus-fixup-nnimap-unread-after-getting-new-news.
 +
 +      * gnus-int.el (gnus-request-update-info): Protect against backends not
 +      having the function.
 +
 +      * nnimap.el (nnimap-stream): Mention starttls.
 +      (nnimap-open-connection): Add starttls support.
 +
 +2010-09-23  Andrew Cohen  <cohen@andy.bu.edu>
 +
 +      * nnir.el (nnir-run-imap): Fix up nnir to work with the new nnimap.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-transform-headers): Don't bug out on invalid
 +      BODYSTRUCTUREs.
 +      (nnimap-transform-headers): Unfold quoted {42} headers.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Allow backends to update
 +      the info.
 +      (gnus-get-unread-articles): Only call updatep on backends that support
 +      it.
 +
 +      * nnweb.el (nnweb-request-update-info): NOOP.
 +
 +      * nnmaildir.el (nnmaildir-request-marks): Rename from -update-info.
 +
 +      * nnfolder.el (nnfolder-request-marks): Rename from -update-info,
 +      since it only deals with marks.
 +
 +      * gnus-int.el (gnus-request-marks): Rename gnus-request-update-info to
 +      gnus-request-marks, and make a new gnus-request-update-info.
 +
 +      * nnimap.el (nnimap-update-info): When UIDNEXT is present, use that for
 +      the active instead of the high number, which is usually too low.
 +
 +2010-09-23  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * encrypt.el: Remove.
 +
 +2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-update-info): Sync non-standard flags from the
 +      server in symbolic form.
 +
 +      * gnus-html.el (gnus-max-image-proportion): Increase proportion to 0.9.
 +
 +2010-09-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-parse-flags): Parse the data in any order.
 +      (nnimap-update-info): Fix up code slightly.
 +
 +      * gnus-int.el (gnus-open-server): Add tracing for performance
 +      debugging.
 +
 +      * gnus-group.el (gnus-group-highlight-line): Typo fix: beg, not start.
 +      (gnus-group-insert-group-line): Pass the real group name so that it
 +      gets the right data.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Don't have
 +      `gnus-get-unread-articles-in-group' update info, since that can be
 +      really slow and doesn't seem to be needed?
 +
 +2010-09-22  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-group.el (gnus-group-insert-group-line):
 +      Call gnus-group-highlight-line.
 +      (gnus-group-update-hook): Remove gnus-group-highlight-line from the
 +      default hook list.
 +      (gnus-group-update-eval-form): Add new function.
 +      (gnus-group-highlight-line): Use gnus-group-update-eval-form.
 +      (gnus-group-get-icon): Use gnus-group-update-eval-form.
 +
 +2010-09-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-request-expire-articles): If nnmail-expiry-wait is
 +      immediate, then expire all articles.
 +      (nnimap-update-info): Fix off-by-one errors.
 +      (nnimap-flags-to-marks): Would return no marks lists for group with no
 +      flags.  Instead return the other data.
 +
 +2010-09-22  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-group.el (gnus-group-get-icon): Rename gnus-group-add-icon that
 +      Only return an icon.
 +      (gnus-group-insert-group-line): Compute icon to return.
 +
 +      * gnus-html.el (gnus-html-image-automatic-caching): Add custom var.
 +      (gnus-html-image-fetched): Only cache if
 +      gnus-html-image-automatic-caching is set.
 +      (gnus-html-image-fetched): Check for errors.
 +
 +2010-09-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Only run -request-scan
 +      once per method on `g'.  This ensures that backends like nnfolder don't
 +      open all their folders.
 +
 +      * nnimap.el (nnimap-split-incoming-mail): Delete 'junk.
 +      (nnimap-request-list): Nix out group in the correct buffer.
 +      (nnimap-parse-flags): Implement by using `read' instead of
 +      hand-parsing.
 +      (nnimap-flags-to-marks): Pass on permanent-flags.
 +      (nnimap-make-process-buffer): Record the server name.
 +      (nnimap-parse-flags): Fix typo.
 +      (nnimap-request-scan): Run split on the server in general, not just a
 +      single group.
 +
 +      * nnmail.el (nnmail-split-incoming): Take an optional junk-func
 +      parameter, and propagate this downwards.
 +
 +      * nnimap.el (nnimap-request-list): Set the current nnimap group to nil,
 +      since EXAMINE changes it on the server.
 +
 +      * gnus-int.el (gnus-request-expire-articles): Inhibit the daemon, since
 +      this command might take a while.
 +
 +2010-09-22  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-put-image): Stop using markers.  They are
 +      harmful if you have 2 images side-by-side, they can't be properly
 +      update on text deletion.  Using text-property is safer here.
 +      (gnus-html-image-fetched): Search also for \r\n\r\n to get the start of
 +      data.
 +
 +2010-09-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-expunge-inbox): Remove.
 +      (nnimap-mark-and-expunge-incoming): Use nnimap-expunge instead.
 +      (nnimap-expunge): Flip default to t.
 +
 +      * gnus.el (gnus-method-to-server): Don't push things to the cache
 +      unless it's unique.
 +      (gnus-server-to-method): Ditto.
 +
 +2010-09-22  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * nnimap.el (nnimap-delete-article): Tell user if expunge won't happen.
 +
 +2010-09-22  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-get-image-data): Search also for \r\n\r\n to
 +      get the start of data.
 +      (gnus-html-encode-url): Add this function to encode special chars in
 +      URL.
 +      (gnus-html-wash-images): Use gnus-html-encode-url to encode URL.
 +      (gnus-html-prefetch-images): Use gnus-html-encode-url to encode URL.
 +
 +      * gnus-group.el (gnus-group-update-hook): Call gnus-group-add-icon by
 +      default.
 +      (gnus-group-add-icon): Move to gnus-group.el, and rewrite so it works.
 +
 +      * gnus-html.el (gnus-html-wash-images): Use xml-substitute-special on
 +      images alt-text.
 +      (gnus-html-put-image): Put alt-text as help-echo.
 +
 +2010-09-22  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mailcap.el (mailcap-parse-mailcap, mailcap-parse-mimetypes)
 +      * mm-util.el (mm-decompress-buffer)
 +      * nnir.el (nnir-run-find-grep)
 +      * pop3.el (pop3-list): Use 3rd arg of split-string.
 +
 +2010-09-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el (gnus-update-marks): Add sanity check to not delete marks
 +      outside the active range.  Suggested by Dan Christensen.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Get the extended method
 +      slightly later to avoid double-getting it.
 +
 +      * nnml.el (nnml-generate-nov-file): Fix variable name clobbering from
 +      previous patch.
 +
 +      * gnus-sum.el (gnus-adjust-marked-articles): Fix another typo.
 +
 +2010-09-21  Adam Sjøgren  <asjo@koldfront.dk>
 +
 +      * gnus-sum.el (gnus-adjust-marked-articles): Fix typo.
 +
 +2010-09-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-int.el (gnus-open-server): Give a better error message in the
 +      "go offline" case.
 +
 +      * gnus-sum.el (gnus-adjust-marked-articles): Hack to avoid adjusting
 +      marks for nnimap, which is seldom the right thing to do.
 +
 +      * gnus.el (gnus-sloppily-equal-method-parameters): Refactor out.
 +      (gnus-same-method-different-name): New function.
 +
 +      * nnimap.el (parse-time): Require.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Fix the prefixed select
 +      method in the presence of many similar methods.
 +
 +      * nnmail.el (nnmail-expired-article-p): Fix typo: time-subtract.
 +
 +      * nnimap.el (nnimap-find-expired-articles): Don't refer to
 +      nnml-inhibit-expiry.
 +
 +      * gnus-sum.el (gnus-summary-move-article): Use gnus-server-equal to
 +      find out whether methods are equal.
 +
 +      * nnimap.el (nnimap-find-expired-articles): New function.
 +      (nnimap-process-expiry-targets): New function.
 +      (nnimap-request-move-article): Request the article before looking at
 +      what the Message-ID is.  Fix found by Andrew Cohen.
 +      (nnimap-mark-and-expunge-incoming): Wait for the last sequence.
 +
 +      * nnmail.el (nnmail-expired-article-p): Allow returning the cutoff time
 +      for oldness in addition to being a predicate.
 +
 +      * nnimap.el (nnimap-request-group): When we have zero articles, return
 +      the right data to Gnus.
 +      (nnimap-request-expire-articles): Only delete articles immediately if
 +      the target is 'delete.
 +
 +      * gnus-sum.el (gnus-summary-move-article): When respooling to the same
 +      method, this would bug out.
 +
 +      * gnus-group.el (gnus-group-expunge-group): Rename from
 +      gnus-group-nnimap-expunge, and implemented as a normal interface
 +      function.
 +
 +      * gnus-int.el (gnus-request-expunge-group): New function.
 +
 +      * nnimap.el (nnimap-request-create-group): Implement.
 +      (nnimap-request-expunge-group): New function.
 +
 +2010-09-21  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-image-cache-ttl): Add new variable.
 +      (gnus-html-cache-expired): Add new function.
 +      (gnus-html-wash-images): Use `gnus-html-cache-expired' to check
 +      wethever we should display image for fetch it.
 +      Compute alt-text earlier to pass it to the fetching function too.
 +      (gnus-html-schedule-image-fetching): Change function argument to only
 +      get one image at a time, not a list.
 +      (gnus-html-image-fetched): Use `url-store-in-cache' to store image in
 +      cache.
 +      (gnus-html-get-image-data): New function to retrieve image data from
 +      cache.
 +      (gnus-html-put-image): Change buffer argument to use image data rather
 +      than file, and place image above region rather than inserting a new
 +      one.  Do not take alt-text as argument, since it's useless now: we place
 +      the image above alt-text.
 +      (gnus-html-prune-cache): Remove.
 +      (gnus-html-show-images): Start to fetch image when we find one, do not
 +      push into a temporary list.
 +      (gnus-html-prefetch-images): Only fetch image if they have expired.
 +      (gnus-html-browse-image): Fix, use 'gnus-image-url.
 +      (gnus-html-image-map): Add "v" to browse-url on undisplayed image.
 +
 +2010-09-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * rfc2047.el (rfc2047-encode-parameter): Doc fix.
 +
 +2010-09-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-line-format-alist): Have the ?U (unseen)
 +      spec inser "*" if the group isn't active instead of 0.
 +
 +      * nnimap.el (nnimap-request-group): Don't select the imap buffer before
 +      opening the server.
 +      (nnimap-request-delete-group): Implement group deletion.
 +      (nnimap-transform-headers): Return the size of the entire message in
 +      the Bytes header, not just the size of the first part.
 +      (nnimap-request-move-article): When moving an article from nnimap,
 +      request the article first so the accepting form has an article to
 +      accept.  Reported by Dan Christensen.
 +      (nnimap-command): Make sure that the error message doesn't error out.
 +
 +2010-09-20  David Edmondson  <dme@dme.org>  (tiny change)
 +
 +      * nnimap.el (nnimap-request-set-mark): Don't wait for a response when
 +      we haven't requested anything.
 +
 +2010-09-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-fetch-inbox): Use "[]" as the parameter instead of
 +      "".  Fix found by Andrew Cohen.
 +
 +      * mail-parse.el (mail-header-encode-parameter): Use -encode-parameter
 +      instead of -encode-string.
 +
 +2010-09-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-image-fetched): Pass arg to kill-buffer.
 +
 +      * gnus-sum.el (gnus-summary-update-mark): Replace subst-char-in-string
 +      by mm-subst-char-in-string.
 +
 +2010-09-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-wait-for-connection): Avoid a race condition while
 +      waiting for the connection string.
 +
 +      * gnus-html.el (gnus-html-image-fetched): Protect against the data not
 +      arriving.
 +
 +      * gnus-start.el (gnus-ignored-newsgroups): Remove [] from the list of
 +      bogus characters.  This allows selecting certain Gmail groups.
 +
 +      * nnimap.el (nnimap-find-wanted-parts-1): New function.
 +      (nnimap-fetch-partial-articles): New variable.
 +      (nnimap-open-connection): When looking for credentials, also use the
 +      nnimap-server-port.
 +      (nnimap-request-article): Return the group/article number, so that Gnus
 +      `^' works as expected.
 +      (nnimap-find-wanted-parts-1): Return the MIME parts as IMAP wants them.
 +
 +      * gnus.el (gnus-similar-server-opened): Refactor a bit and add
 +      comments.
 +      (gnus-methods-sloppily-equal): New function.
 +      (gnus): When using the development version of Gnus, load the gnus-load
 +      file.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Make sure that we call
 +      `gnus-open-server' on each method before trying to scan them etc.
 +      This ensures that all the backend parameters are set correctly.
 +
 +      * nnimap.el (nnimap-authenticator): New variable.
 +      (nnimap-open-connection): Allow anonymous login.
 +      (nnimap-transform-headers): The chars header is called Chars not Bytes.
 +      (nnimap-wait-for-response): Don't infloop if the IMAP connection drops.
 +
 +      * gnus-art.el (gnus-article-describe-briefly): Fix up typo in last
 +      patch, found by Knut Anders Hatlen.
 +
 +2010-09-19  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * gnus-agent.el (gnus-agent-batch-confirmation)
 +      (gnus-agent-expire-group, gnus-agent-expire): Pass proper format string
 +      to gnus-message.
 +      * gnus-art.el (gnus-article-describe-briefly): Likewise.
 +      * gnus-group.el (gnus-group-list-groups, gnus-group-describe-group)
 +      (gnus-group-edit-global-kill, gnus-group-describe-briefly): Likewise.
 +      * gnus-int.el (gnus-open-server): Likewise.
 +      * gnus-score.el (gnus-score-edit-current-scores, gnus-score-edit-file)
 +      (gnus-score-check-syntax): Likewise.
 +      * gnus-srvr.el (gnus-browse-describe-briefly): Likewise.
 +      * gnus-start.el (gnus-read-active-file-1, gnus-read-active-file-1):
 +      Likewise.
 +      * gnus-sum.el (gnus-summary-describe-briefly): Likewise.
 +
 +2010-09-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-prefetch-images): Fix up the url-retrieve
 +      calling conventions so that prefetch doesn't bug out.
 +
 +2010-09-19  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-sum.el (gnus-summary-update-mark): Use `subst-char-in-string'
 +      rather than `subst-char-in-region' in order to be able to replace ASCII
 +      char by UTF-8 ones.
 +
 +      * gnus-html.el (gnus-html-prefetch-images): Use `url-retrieve' rather
 +      than curl.
 +      (gnus-html-image-fetched): Fix `gnus-html-put-image' call not setting
 +      the right URL and ALT text on images.
 +      (gnus-html-wash-tags): Fix tag case.
 +      Add support for `s' and `ins' tags.  Use gnus-emphasis-* faces.
 +      (gnus-article-html): Add -o display_ins_del=2 option.
 +      (gnus-html-wash-tags): Add better support for <ul> tags symbols.
 +
 +2010-09-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnheader.el (nnheader-insert-nov): Protect against junk appearing in
 +      the extra mail headers, which sometimes seem to happen for unknown
 +      reasons.
 +
 +      * mail-parse.el (mail-header-encode-parameter): Define as
 +      rfc2045-encode-string instead of as rfc2231-encode-string, since some
 +      (or most, perhaps?) mail readers don't understand the latter, but do
 +      understand the former.
 +
 +      * gnus-agent.el (gnus-agent-auto-agentize-methods): Switch the default
 +      to nil, so that no methods are automatically agentized.  I think this
 +      is probably what most users want.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Ignore all errors
 +      from url-retrieve, for instance about invalid URLs.
 +
 +      * nnimap.el (nnimap-finish-retrieve-group-infos): Protect against
 +      groups that have no articles.
 +      (nnimap-request-article): Check that we really got an article when we
 +      requested one.
 +
 +      * gnus-agent.el (gnus-agent-load-alist): Nix out the alist if the file
 +      doesn't exist.
 +
 +      * nnimap.el (nnimap-finish-retrieve-group-infos): Return data in the
 +      nntp buffer so the agent can save it.
 +      (nnimap-open-shell-stream): Bind `process-connection-type' to nil, so
 +      that CRLF doesn't get translated to \n.
 +      (nnimap-open-connection): Don't make 'shell commands only send \n.
 +
 +2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnml.el (nnml-files): Add prefix to dynamic var `files'.
 +      (nnml-generate-nov-databases-directory, nnml-generate-active-info):
 +      Update var name.
 +      (nnml-generate-nov-file): Use dolist.
 +      (nnml-directory-articles, nnml-current-group-article-to-file-alist):
 +      Use with-current-buffer.
 +
 +2010-09-18  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Fetch all images in
 +      parallel.
 +
 +2010-09-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-update-info): When doing partial marks update, get
 +      the range update right.
 +      (nnimap-request-group): Don't make `M-g' bug out on group with no
 +      marks.
 +      (nnoo): Require, so that other packages can require nnimap.
 +      (nnimap-wait-for-response): Be a bit more lax in finding the end of the
 +      command we're looking for.  This helps when the server sends more
 +      responses after we've gotten everything we expected.
 +      (nnimap): Add a `newlinep' field to keep track of end-of-line
 +      conventions.
 +      Don't send CRLF to things that don't want it.
 +      (nnimap-request-accept-article): Ditto.
 +
 +2010-09-18  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Use `url' rather
 +      than curl to retrieve images.
 +
 +2010-09-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-update-info): Extend the info so that we can set
 +      the marks.
 +      (nnimap-open-connection): Fix typo -- should be 'shell, not 'stream.
 +      (nnimap-wait-for-connection): New function.
 +      (nnimap-open-connection): If we have PREAUTH, don't query for login
 +      credentials.
 +      (nnimap-update-info): Fix off-by-one error when concatenating ranges
 +      when doing a partial update.
 +
 +2010-09-18  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-html.el (gnus-html-wash-tags): Add support for i, b and u HTML
 +      tags.
 +
 +2010-09-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-credentials): New function.
 +      (nnimap-open-connection): Use the new function to look for credentials
 +      also on the numeric equivalents of "imap" and "imaps".
 +
 +      * gnus-start.el (gnus-activate-group): Send the info to
 +      gnus-request-group.
 +
 +      * nnimap.el (nnimap-request-group): Have the "check" version of the
 +      function parse flags and update the info, so that a `M-g' get a total
 +      resync of all flags from the group.
 +
 +      * gnus-int.el (gnus-request-group): Take an optional `info' parameter
 +      to allow backends to alter the info on group selection.  Also alter all
 +      the backend -request-group functions to take the parameter.
 +
 +      * nnimap.el (nnimap-store-info): New function.
 +      (nnimap-update-info): Store the info for later usage.
 +      (nnimap-request-group): Use the stored info for the dont-check case, so
 +      that we don't retrieve all marks when we enter a group.
 +
 +      * nnimap.el: Use deffoo instead of defun for interface functions.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Allow the backends to
 +      update the group info.  This makes the nndraft groups, for instance, go
 +      back to their old behaviour.
 +
 +      * gnus-sum.el (gnus-select-newsgroup): Indent.
 +
 +      * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
 +      in.
 +      (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
 +      nothing.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
 +      from methods that are denied.
 +
 +      * gnus-int.el (gnus-method-denied-p): New function.
 +
 +      * nnimap.el (nnimap-open-connection): Use auth-sources to query and
 +      store the password instead of netrc.
 +      (nnimap-open-connection): Don't error out when we can't make a
 +      connections.
 +
 +      * auth-source.el (auth-source-create): In the password prompt, say what
 +      we're querying for.  Also prompt for user name if that hasn't been
 +      given.
 +
 +      * nnimap.el (nnimap-with-process-buffer): Remove.
 +
 +2010-09-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Don't use the "finish"
 +      method when we're reading from the agent.
 +
 +      * nnagent.el (nnagent-retrieve-group-data-early): New dummy method.
 +
 +      * auth-source.el (auth-sources): Add ~/.authinfo to the default, since
 +      that's probably most useful for users.
 +
 +      * gnus-int.el (gnus-check-server): Save result so that it doesn't say
 +      "failed" all the time.
 +
 +      * gnus.el: Throughout all files, replace (save-excursion (set-buffer
 +      ...)) with (with-current-buffer ... ).
 +
 +      * nntp.el (nntp-open-server): Return whether the open was successful or
 +      not.
 +
 +      * gnus-sum.el (gnus-summary-first-subject): Have `unseen-or-unread'
 +      select an unread unseen article first.
 +
 +      * nnimap.el (nnimap-open-connection): If the user doesn't have a
 +      /etc/services, supply some sensible port defaults.
 +
 +2010-09-17  Julien Danjou  <julien@danjou.info>
 +
 +      * mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
 +
 +2010-09-17  Knut Anders Hatlen  <kahatlen@gmail.com>  (tiny change)
 +
 +      * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
 +      doesn't have any parameters.
 +
 +2010-09-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnimap.el (nnimap-open-connection): Upcase all capabilities, and use
 +      only upcased checks.
 +
 +      * nnmail.el (nnmail-article-group): Fix typo in "bogus" section.
 +
 +      * nnimap.el (nnimap-open-shell-stream): New function.
 +      (nnimap-open-connection): Use it.
 +      (nnimap-transform-headers): Get the number of lines in each message.
 +      (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
 +      number of lines.
 +      (nnimap-request-list): Not all servers return UIDNEXT.  Work past this
 +      problem.
 +
 +      * utf7.el (utf7-encode): Autoload.
 +
 +      * nnmail.el (nnmail-inhibit-default-split-group): New internal variable
 +      to allow the mail splitting to not return a default group.  This is
 +      useful for nnimap, which will leave unmatched mail in the inbox.
 +
 +      * nnimap.el: Rewritten.
 +
 +      * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
 +      nnimap usage.
 +
 +      * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
 +      if the move is internal, so that nnimap can do fast internal moves.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Support early retrieval of
 +      data.
 +      (gnus-read-active-for-groups): Support finishing the early retrieval of
 +      data.
 +
 +      * gnus-range.el (gnus-range-nconcat): New function.
 +
 +      * gnus-int.el (gnus-finish-retrieve-group-infos)
 +      (gnus-retrieve-group-data-early): New functions.
 +
 +2010-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * nnrss.el (nnrss-retrieve-headers, nnrss-request-list-newsgroups)
 +      (nnrss-retrieve-groups):
 +      * pop3.el (pop3-open-server, pop3-read-response, pop3-list, pop3-retr)
 +      (pop3-quit): Use with-current-buffer.
 +
 +2010-09-17  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * pop3.el (pop3-wait-for-messages): Use pop3-accept-process-output
 +      instead of nnheader-accept-process-output.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching)
 +      (gnus-html-prefetch-images): Replace process-kill-without-query by
 +      gnus-set-process-query-on-exit-flag.
 +
 +2010-09-16  Romain Francoise  <romain@orebokech.com>
 +
 +      * gnus-html.el: Require gnus-art for `gnus-with-article-buffer'.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-registry.el (gnus-registry-install-shortcuts): The second
 +      parameter to unintern is mandatory-ish in Emacs 24.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching)
 +      (gnus-html-prefetch-images): Check for curl before using it.
 +
 +      * mm-decode.el (mm-text-html-renderer): Don't have gnus-article-html
 +      depend on curl, which isn't essential.
 +
 +      * imap.el: Revert back to version
 +      cb950ed8ff3e0f40dac437a51b269166f9ffb60d, since some of the changes
 +      seem problematic.
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * gnus-registry.el (gnus-registry-install-shortcuts):
 +      Explicitly pass `obarray' to `unintern' to avoid a warning.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Revert the previous
 +      change.
 +
 +      * nnrss.el (nnrss-request-list): Remove this function and related
 +      functions, including the moreover stuff.
 +
 +2010-09-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnrss.el (nnrss-retrieve-groups): New function.
 +
 +2010-09-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * .dir-locals.el: Add no-byte-compile cookie.
 +
 +2010-09-14  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Run gnus-activate-group
 +      for back end that doesn't support request-scan.
 +
 +2010-09-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-read-active-file-1): If gnus-agent isn't set,
 +      then do request scans from the backends.
 +
 +      * gnus-sum.el (gnus-summary-update-hook): Change default to nil, to
 +      avoid running a hook per line, since this takes a lot of time,
 +      profiling shows.
 +      (gnus-summary-prepare-threads): Call `gnus-summary-highlight-line'
 +      directly if gnus-visual-p is true.
 +
 +2010-09-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Check only subscribed
 +      groups; replace mapcar with dolist which is a bit faster; pass groups
 +      info to gnus-read-active-file-1.
 +      (gnus-read-active-file-1): Scan only specified groups if the new
 +      optional arg `infos' is given.
 +
 +2010-09-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mail-source.el (mail-source-fetch-pop): Use pop3-movemail again.
 +
 +      * pop3.el (pop3-movemail): Remove.
 +      (pop3-streaming-movemail): Rename to pop3-movemail.
 +
 +      * gnus-html.el (gnus-html-wash-tags): Refactor out the image bit, and
 +      don't restrict end-tag searches to the end of the line.
 +
 +2010-09-09  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-start.el (gnus-get-unread-articles): Set the number of unread
 +      articles of every unchecked group to t, which means unknown since the
 +      server has never been opened.
 +
 +2010-09-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-show-alt-text): New command.
 +      (gnus-html-browse-image): Ditto.
 +      (gnus-html-wash-tags): Add the data to allow showing the ALT text and
 +      to browse the image directly.
 +      (gnus-html-wash-tags): Search for images first, so that <a><img> works
 +      better.
 +
 +      * gnus-async.el (gnus-async-article-callback):
 +      Call `gnus-html-prefetch-images' unconditionally.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching): Decode entities
 +      before feeding URLs to curl.
 +
 +2010-09-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-wash-tags, gnus-html-put-image): Mark cid and
 +      internal images as deletable by `W D D'.
 +
 +      * gnus-async.el (gnus-html-prefetch-images): Autoload it when compiling.
 +      (gnus-async-article-callback): Fix typo.
 +
 +2010-09-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-wash-tags): Limit end-tag matching to the
 +      current line to work around bugs in the output from w3m.
 +
 +      * gnus-async.el (gnus-async-article-callback): Always prefetch images
 +      for groups that want that.
 +
 +      * nntp.el (nntp-wait-for-string): Supply a timeout for
 +      accept-process-output to ensure progress.
 +
 +      * gnus-start.el (gnus-get-unread-articles): If being given an explicit
 +      level to get unread articles from, then use that for foreign groups,
 +      too.
 +
 +      * gnus-html.el (gnus-html-wash-tags): Remove <a name...> tags, which
 +      confuses the rest of the function.
 +
 +      * gnus-start.el (gnus-read-active-for-groups): Do a `gnus-request-scan'
 +      for the methods that support -retrieve-groups, too.
 +
 +      * nnml.el (nnml-save-nov): Remove some debugging-related messages.
 +
 +2010-09-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * pop3.el: Require cl when compiling.
 +      (pop3-number-of-responses): Search for "+OK", not "+OK ".
 +
 +2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-get-unread-articles): Don't bother with groups
 +      that aren't going to be activated.
 +      (gnus-get-unread-articles): Fix up the last commit.
 +
 +      * gnus-html.el (gnus-article-html): Allow calling without specifying
 +      the handle.  In that case, dissect the buffer first.
 +
 +      * gnus-sum.el (gnus-set-mode-line): Don't pad the mode line string.
 +
 +      * nnimap.el (nnimap-open-connection): Revert the change that would look
 +      into authinfo for imaps instead of imap.
 +
 +      * gnus-start.el (gnus-activate-group): Take an optional parameter to
 +      say that you don't want to call gnus-request-group with don-check, but
 +      do check the reponse.  This is for virtual groups only.
 +      (gnus-get-unread-articles): Count the archive groups as secondary, so
 +      that they're activated the same way as before.
 +
 +      * nnimap.el (nnimap-request-list): Servers may return \NoSelect
 +      case-insensitively.
 +      (nnimap-debug): Remove.
 +
 +      * mail-source.el (mail-source-fetch): Don't message if we're fetching
 +      mail from a file, and the file doesn't exist.
 +
 +      * pop3.el (pop3-streaming-movemail): Return t for success.
 +
 +      * nnimap.el (nnimap-open-connection): Look for the "imaps" entry in the
 +      .authinfo if we're using ssl connection.
 +
 +      * nnvirtual.el (nnvirtual-create-mapping): Use the active info we
 +      already have if we're in a main Gnus `g' run.
 +
 +      * gnus-start.el (gnus-method-rank): Get info for virtual groups last.
 +
 +2010-09-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-start.el (gnus-method-rank): Replace equalp with equal.
 +
 +      * nnmh.el (nnmh-request-list-1): Bind `file'.
 +
 +      * pop3.el (pop3-set-process-query-on-exit-flag): New function that's an
 +      alias to set-process-query-on-exit-flag or process-kill-without-query.
 +      (pop3-open-server): Use it.
 +
 +2010-09-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mail-source.el (mail-source-delete-crash-box): Always move the crash
 +      box to the Incoming file.  Fixes mistake in previous checkin.
 +
 +      * pop3.el (pop3-send-streaming-command): Off-by-one error on the
 +      request loop (for debugging purposes) removed.
 +
 +      * nnml.el (nnml-save-nov): Message around nnml-save-nov so that the
 +      culprit is more visible.
 +      (nnml-save-incremental-nov, nnml-open-incremental-nov)
 +      (nnml-add-incremental-nov): New functions to do "incremental" nov
 +      updates, where we just append to the end of the existing nov files
 +      without reading/writing them in full.
 +
 +      * mail-source.el (mail-source-delete-crash-box): Really only check the
 +      incoming files once in a while.
 +
 +      * pop3.el (pop3-streaming-movemail): Always close the pop3 connection.
 +
 +      * mail-source.el (mail-source-delete-crash-box): Only check the
 +      incoming files for deletion once per day to save a lot of file
 +      accesses.
 +
 +      * pop3.el (pop3-logon): Fix up unbound variable typo.
 +
 +      * mail-source.el (pop3-streaming-movemail): Autoload.
 +
 +      * pop3.el (pop3-streaming-movemail):
 +      Respect pop3-leave-mail-on-server.
 +
 +      * mail-source.el (mail-source-fetch-pop): Use streaming pop3
 +      retrieval.
 +
 +      * pop3.el (pop3-process-filter): Remove unused function.
 +      (pop3-streaming-movemail, pop3-send-streaming-command)
 +      (pop3-wait-for-messages, pop3-write-to-file)
 +      (pop3-number-of-responses): New functions for streaming pop3
 +      retrieval.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Protect against groups that
 +      come from no known methods.
 +      (gnus-make-hashtable-from-newsrc-alist): Remove duplicates from .newsrc
 +      list.
 +
 +      * pop3.el (pop3-display-message-size-flag): Remove -- everybody wants
 +      message sizes.
 +      (pop3-movemail): Use erase-buffer instead of looping and deleting
 +      regions, which seems rather odd.
 +
 +      * gnus-agent.el (gnus-agent-load-local): Only read the agent.lib/local
 +      file once per `g' run.
 +
 +      * nnmh.el (nnmh-request-list-1): Output active lines also for empty
 +      directories.  This makes the draft queue directory work.
 +
 +      * gnus-start.el (gnus-get-unread-articles): Rewrite the way we request
 +      data from the backends, so that we only request the list of groups from
 +      each method once.  This should speed things up considerably.
 +
 +      * nnvirtual.el (nnvirtual-request-list): Remove function so that we can
 +      detect that it's not implemented.
 +
 +      * nnmh.el (nnmh-request-list-1): Fix up the recursion behavior so that
 +      we actually do recurse down into the tree, but don't stat all leaf
 +      nodes.
 +
 +      * gnus-html.el (gnus-html-show-images): If there are no images to show,
 +      then say so instead of bugging out.
 +
 +      * gnus-agent.el (gnus-agent-load-alist): Check whether the agentview
 +      files exist before trying to read them.
 +
 +      * gnus-html.el (gnus-html-wash-tags): Remove even more white space
 +      around <pre_int>.
 +
 +      * gnus-art.el (gnus-article-copy-string): Say what data we copied.
 +
 +      * nnmh.el (nnmh-request-list-1): Optimize for speed.
 +
 +2010-09-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * mm-util.el (mm-image-load-path): Just return the image directories,
 +      not all directories in the path in addition to the image directories.
 +      (mm-image-load-path): Maintain a cache of the image directories so that
 +      the `g' command in Gnus doesn't have to stat dozens of directories each
 +      time.
 +
 +      * gnus-html.el (gnus-html-put-image): Allow images to be removed.
 +      (gnus-html-wash-tags): Add a new `i' command to insert images.
 +      (gnus-html-insert-image): New command and keystroke.
 +      (gnus-html-redisplay-with-images): New command and keystroke.
 +      (gnus-html-show-images): Rename command.
 +      (gnus-html-wash-tags): Remove more white space before <pre_int> image
 +      spacers.
 +      (gnus-html-wash-tags): Decode entities at the end, so that entities
 +      inside the tags don't mess up the rest of the "parsing".
 +
 +      * gnus-agent.el (gnus-agent-auto-agentize-methods): Change the default
 +      so that nnimap methods aren't agentized by default.  There's apparently
 +      many problems related to agent/imap behaviour.
 +
 +      * gnus-art.el (gnus-article-copy-string): New command and key binding.
 +
 +      * gnus-html.el: Doc fix.
 +
 +2010-09-03  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-put-image): Use gnus-graphic-display-p,
 +      glyph-width and glyph-height instead of display-graphic-p and
 +      image-size; make avoidance of displaying small images work for XEmacs.
 +
 +      * gnus-util.el (gnus-graphic-display-p): Use device-on-window-system-p
 +      for XEmacs.
 +
 +      * gnus-ems.el (gnus-set-process-plist, gnus-process-plist): Change name
 +      of symbol that holds plist data.
 +      (gnus-process-plist): Remove plist of process after getting it.
 +
 +2010-09-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * message.el (message-generate-hashcash): Change default to
 +      'opportunistic if hashcash is installed.
 +
 +      * gnus-html.el (gnus-html-rescale-image): Fix up typo in rescaling.
 +      (gnus-html-put-image): Only call image-size once, since it's somewhat
 +      time-consuming on remote X servers.
 +
 +2010-09-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-article-html): Make work buffer multibyte for
 +      decoded contents.
 +      (gnus-html-put-image, gnus-html-rescale-image): Pass `file' argument.
 +
 +2010-09-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-group.el (gnus-group-line-format): Remove %O (moderated) from
 +      group line format, since it isn't very interesting.
 +
 +      * gnus-agent.el (gnus-agent-short-article),
 +      (gnus-agent-long-article): Increase values for these two variables,
 +      since most people are likely to have more network connection and
 +      storage than before.
 +
 +      * gnus.el (gnus-refer-article-method): Change default to 'current.
 +      When referring an article, the common behaviour is to refer it from the
 +      current select method, not the native select method.  The chances of
 +      the native select method having the message in question is rather slim
 +      these days.
 +
 +      * gnus-sum.el (gnus-auto-select-subject): Change default to
 +      `unseen-or-unread'.  I think it's likely that most people want to
 +      select an unseen article over a previously seen, but unread one.
 +
 +      * gnus.el (gnus-mode-non-string-length): Change default to 30.  nil
 +      means that in the article buffer none of the minor mode elements will
 +      be shown, usually, and this is not desirable in most cases.
 +
 +      * gnus-sum.el (gnus-summary-goto-unread): Change default to nil, so
 +      that commands like `d' (and the like) go to the next line in the
 +      buffer, instead of the next unread article.  I think this is the
 +      behaviour that is most natural for most users.
 +      (gnus-single-article-buffer): Change default to nil, so that people can
 +      have as many article buffers open as they have summary buffer.  I think
 +      this is the most natural way for the groups to behave.
 +
 +      * message.el (message-generate-new-buffers): Change default to
 +      `unsent', so that all new message buffers start their names with the
 +      string "*unsent", and it's easier to find the buffers if you move from
 +      them.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-wash-tags): Don't show images that are really
 +      small.  They're probably tracking images.
 +      (gnus-html-wash-tags): Remove all <pre_int> place holders.
 +      (gnus-html-rescale-image): Yet another try at getting the image sizing
 +      right.
 +
 +      * nntp.el (nntp-request-set-mark): Refuse to do marks if
 +      nntp-marks-file-name is nil.
 +
 +2010-09-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-html.el (gnus-html-wash-tags)
 +      (gnus-html-schedule-image-fetching, gnus-html-image-url-blocked-p):
 +      Better logging.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nndoc.el (nndoc-type-alist): Add a new type for Google digests.
 +
 +      * gnus-html.el (gnus-html-wash-tags): Check the value of
 +      gnus-blocked-images in the summary buffer.
 +
 +2010-09-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-html.el (gnus-html-image-url-blocked-p): Doc fix.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-wash-tags): "A" is also used for links, just
 +      like "a", it seems like.
 +      (gnus-html-image-url-blocked-p): Take a parameter for blocked-images
 +      since it needs to be picked from the correct buffer.
 +
 +      * nnwfm.el: Remove.
 +
 +      * nnlistserv.el: Remove.
 +
 +2010-09-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-html.el (gnus-html-image-url-blocked-p): New function.
 +      (gnus-html-prefetch-images, gnus-html-wash-tags): Use it.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnkiboze.el: Remove.
 +
 +      * nndb.el: Remove.
 +
 +      * gnus-html.el (gnus-html-put-image): Use the deleted text as the image
 +      alt text.
 +      (gnus-html-rescale-image): Try to get the rescaling logic right for
 +      images that are just wide and not tall.
 +
 +      * gnus.el (gnus-string-or): Fix the syntax to not use eval or
 +      overshadow variable bindings.
 +
 +2010-09-01  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-html.el (gnus-html-wash-tags)
 +      (gnus-html-schedule-image-fetching, gnus-html-prefetch-images):
 +      Add extra logging.
 +
 +2010-09-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el (gnus-html-wash-tags): Delete the IMG_ALT region.
 +      (gnus-max-image-proportion): New variable.
 +      (gnus-html-rescale-image): New function.
 +      (gnus-html-put-image): Rescale images.
 +
 +2010-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Fix up some byte-compiler warnings.
 +      * gnus.el (gnus-group-find-parameter, gnus-kill-save-kill-buffer):
 +      * gnus-cite.el (gnus-article-highlight-citation, gnus-dissect-cited-text)
 +      (gnus-article-fill-cited-article, gnus-article-hide-citation)
 +      (gnus-article-hide-citation-in-followups, gnus-cite-toggle):
 +      * gnus-group.el (gnus-group-set-mode-line, gnus-group-quit)
 +      (gnus-group-set-info, gnus-add-mark): Use with-current-buffer.
 +      (gnus-group-update-group): Use save-excursion and with-current-buffer.
 +
 +2010-09-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-article-html): Decode contents by charset.
 +
 +2010-09-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-html.el (gnus-html-cache-directory, gnus-html-cache-size)
 +      (gnus-html-frame-width, gnus-blocked-images)
 +      * message.el (message-prune-recipient-rules): Add custom version.
 +      * gnus-sum.el (gnus-auto-expirable-marks): Bump custom version.
 +
 +      * gnus-ems.el (gnus-process-get, gnus-process-put): New compatibility
 +      functions.
 +
 +      * gnus-html.el (gnus-html-curl-sentinel): Replace process-get with
 +      gnus-process-get.
 +
 +2010-08-31  Julien Danjou  <julien@danjou.info>  (tiny change)
 +
 +      * nnimap.el (nnimap-request-newgroups): Use nnimap-request-list-method
 +      instead of lsub directly.
 +
 +2010-08-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * nnwarchive.el: Remove.
 +
 +      * gnus-soup.el: Remove.
 +
 +      * nnsoup.el: Remove.
 +
 +      * nnultimate.el: Remove.
 +
 +      * gnus-html.el (gnus-blocked-images): New variable.
 +
 +      * message.el (message-prune-recipients): New function.
 +      (message-prune-recipient-rules): New variable.
 +
 +      * gnus-cite.el (gnus-article-natural-long-line-p): New function to
 +      guess whether a long line is natural text or not.
 +
 +      * gnus-html.el (gnus-html-schedule-image-fetching):
 +      Use gnus-process-plist and friends for compatibility.
 +
 +2010-08-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-html.el: Require packages that define macros used in this file.
 +      (gnus-article-mouse-face): Declare to silence byte-compiler.
 +      (gnus-html-curl-sentinel): Use with-current-buffer, inhibit-read-only, and
 +      process-get.
 +      (gnus-html-put-image): Use plist-get to avoid getf.
 +      (gnus-html-prefetch-images): Use with-current-buffer.
 +
 +2010-08-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-ems.el: Provide compatibility functions for
 +      gnus-set-process-plist.
 +
 +      * gnus-sum.el (gnus-summary-stop-at-end-of-message)
 +      * gnus.el (gnus-valid-select-methods)
 +      * message.el (message-send-mail-partially-limit)
 +      * mm-decode.el (mm-text-html-renderer)
 +      * mml.el (mml-insert-mime-headers-always)
 +      * smiley.el (smiley-regexp-alist): Bump custom version.
 +
 +2010-08-31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-html.el: require mm-url.
 +      (gnus-html-wash-tags): Clarify the code a bit by renaming the variable
 +      with the url to `url'.
 +      (gnus-html-wash-tags): Support cid: URLs/images.
 +
 +2010-08-30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-sum.el: As per discussion 3 years, 8 weeks, 3 days, 9 hours, 57
 +      minutes, 56 seconds ago on the ding list, remove the `w' and `i'
 +      bindings, as they aren't useful at all.  `w' is moved to `W w'.
 +
 +      * gnus-move.el: Remove file, since it doesn't really work.
 +
 +      * gnus-html.el (gnus-article-html): Tell w3m that the input is
 +      UTF-8.  This seems to fix problems with some German web feeds.
 +
 +      * gnus.el (gnus-group-startup-message): Put the xpm version of the logo
 +      at the top so that the proper colours are applied.
 +
 +      * gnus-art.el (gnus-article-view-part): Doc fix.
 +
 +      * gnus-html.el (gnus-html-put-image): Use gnus-create-image to be
 +      XEmacs-compatible.
 +      (gnus-html-put-image): Don't do images on non-graphic displays.
 +
 +      * nnslashdot.el: Remove this unused backend.
 +
 +      * gnus-undo.el (gnus-undo-register-1): Limit the undo actions to 100
 +      actions.
 +      (gnus-undo-register-1): Revert last change.
 +
 +      * gnus-group.el (gnus-group-completing-read): Protect against not
 +      having completion-styles bound.
 +
 +      * mml.el (mml-insert-mime-headers-always): Change the default to t, to
 +      make broken recipients happier.
 +
 +      * gnus-html.el (gnus-html-put-image): Use gnus-put-image.
 +
 +      * gnus-ems.el (gnus-put-image): Have gnus-put-image take an optional
 +      point parameter.
 +
 +      * gnus-group.el (gnus-group-completing-read): Add 'substring to
 +      completion-styles for group selection.
 +
 +2009-02-04  Andreas Schwab  <schwab@suse.de>
 +
 +      * gnus-score.el (gnus-score-string): Fix regex for matching extra
 +      headers and regexp-quote the match if necessary.
 +
 +2009-03-24  Miles Bader  <miles@gnu.org>
 +
 +      * smiley.el (smiley-regexp-alist): Don't delete the semicolon before
 +      the blinking smiley.
 +
 +2009-03-24  Simon Josefsson  <simon@josefsson.org>
 +
 +      * smiley.el (smiley-regexp-alist): Disallow ;;) from being treated as a
 +      blink smiley.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnus-start.el (gnus-dribble-read-file): Ensure that the directory
 +      where the dribbel file lives exists.
 +
 +      * message.el (message-send-mail-partially-limit): Change the default to
 +      nil, since most people don't want this.
 +
 +      * mm-url.el (mm-url-decode-entities): Also decode entities like
 +      &#x3212.
 +
 +2009-07-16  Kevin Ryde  <user42@zip.com.au>  (tiny change)
 +
 +      * gnus-sum.el (gnus-summary-idna-message):
 +      * nnrss.el (nnrss-normalize-date, nnrss-discover-feed):
 +      Hyperlink urls in docstrings with URL `...'.
 +
 +2010-08-29  Adam Sjøgren  <asjo@koldfront.dk>
 +
 +      * gnus-html.el (gnus-html-put-image): Use XEmacs-compatible image
 +      functions.
 +
 +2010-08-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -2011-01-12  Glenn Morris  <rgm@gnu.org>
 +      * gnus-art.el (gnus-article-add-button): Take an optional parameter to
 +      say what the mouseover text should be.
  
 -      * message.el (message-mail): A compose-mail function should
 -      accept headers as strings.
 +      * gnus-html.el (gnus-html-prefetch-images): Use the summary-local
 +      version of the mm-w3m-safe-url-regexp variable to only download images
 +      in the groups where we want that to happen.
  
 -2010-11-19  Yuri Karaban  <tech@askold.net>  (tiny change)
 +      * gnus-sum.el (gnus-summary-stop-at-end-of-message): New variable.
  
 -      * pop3.el (pop3-open-server): Read server greeting before starting TLS
 -      negotiation.
 +      * gnus-art.el (gnus-article-beginning-of-window): Make into defun for
 +      easier debugging.
 +      (gnus-article-beginning-of-window): Add kludge to allow spacing past
 +      big pictures in the article buffer.
  
 -2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 +      * mm-decode.el (mm-text-html-renderer): Default the html renderer to
 +      gnus-article-html.
 +      (mm-text-html-renderer): gnus-article-html needs curl in addition to
 +      w3m.
  
 -      * nnmail.el (nnmail-fancy-expiry-targets): Fix typo in docstring.
 +      * gnus-html.el: Start a new super-simple HTML renderer based on w3m.
  
 -2010-09-21  Glenn Morris  <rgm@gnu.org>
 +2010-08-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * message.el (message-output): Use gnus-output-to-rmail if a buffer is
 -      visiting the fcc file in rmail-mode.
 +      * gnus.el (gnus-valid-select-methods): Remove reference to nngoogle,
 +      which doesn't exist.
 +
 +      * message.el (message-inhibit-ecomplete): New variable to allow some
 +      function to inhibit ecomplete address storage.
 +      (message-resend): Disable ecomplete message storage when resending
 +      messages.
 +
 +      * nntp.el (nntp-async-kluge): Remove the Emacs 20.3-related kluge.
 +
 +2010-08-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-move-article, gnus-summary-delete-article):
 +      Save excursion while copying, moving, and deleting articles in order to
 +      prevent the cursor from jumping to unforeseen place.
 +
 +2010-08-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-sync.el: Require gnus components whose functions are used.
 +
 +      * gnus-art.el (bookmark-make-record-function):
 +      * gnus-sum.el (bookmark-yank-point, bookmark-current-bookmark):
 +      Declare for compiler.
 +
 +      * mm-url.el (mml-compute-boundary): Autoload.
 +
 +2010-08-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-start.el (gnus-start-draft-setup): Move doc string forward.
 +
 +2010-08-14  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      Typo fix "hoo4a" -> "hook".
 +
 +      * gnus-sync.el (gnus-sync-install-hooks): Typo fix.
 +
 +2010-08-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * gnus-sync.el (gnus-sync): Fix defgroup version.
 +
 +2010-08-13  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      Doc fixes and keep unknown groups (ammended for nunion bug fix).
 +
 +      * gnus-sync.el: Fix docs.
 +      (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'.
 +      (gnus-sync-read): Don't wipe `gnus-sync-newsrc-loader' after reading.
 +
 +2010-08-12  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      Optimizations for gnus-sync.el.
 +
 +      * gnus-sync.el: Add docs about gnus-sync-backend
 +      possibilities.
 +      (gnus-sync-save): Remove unnecessary message.
 +      (gnus-sync-read): Optimize and show what groups were skipped.
 +
 +2010-08-12  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      Minor bug fixes for gnus-sync.el.
 +
 +      * gnus-sync.el (gnus-sync-unload-hook, gnus-sync-install-hooks):
 +      Don't read the sync on get-new-news.
 +
 +      * gnus-sync.el (gnus-sync-save): Define `variable' so the compiler is
 +      quiet.
 +
 +      * gnus-sync.el (gnus-sync-read): Use `gnus-sync-newsrc-offsets'
 +      (fix typo).
 +
 +2010-07-30  Lawrence Mitchell  <wence@gmx.li>
 +
 +      Make saving and restoring of hidden threads work with overlays.
 +      Patch applied by Ted Zlatanov.
 +
 +      * gnus-sum.el (gnus-hidden-threads-configuration)
 +      (gnus-restore-hidden-threads-configuration): Update to deal with text
 +      properties, rather than searching for a magic character.
 +
 +2010-08-12  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      New gnus-sync.el library for synchronization of marks.
 +
 +      * gnus-sync.el: New library for synchronization of marks.
 +
 +      * gnus-util.el (gnus-grep-in-list): Move from gnus-registry.el and
 +      renamed from `gnus-registry-grep-in-list'.
 +
 +      * gnus-registry.el (gnus-registry-follow-group-p):
 +      Use `gnus-grep-in-list'.
 +
 +      * gnus-start.el (gnus-start-draft-setup): Make it interactive.
 +
 +2010-08-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * rfc2047.el (rfc2047-encode): Use utf-8 as a last resort if
 +      determining charset of text fails.
 +
 +2010-08-01  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnmail.el (nnmail-get-new-mail-1): Revert.
 +
 +      * nnml.el (nnml-active-number): Make sure names of newly created groups
 +      in nnml-group-alist are encoded.
 +
 +2010-07-30  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnmail.el (nnmail-get-new-mail-1): Encode group names possibly
 +      containing non-ASCII characters in active file for nnml back end.
 +
 +2010-07-24  David Engster  <dengste@eml.cc>
 +
 +      * mml-smime.el (mml-smime-epg-verify): Also accept the older
 +      x-pkcs7-signature MIME type as signature (RFC 2311, C.1).
 +
 +2010-07-21  Daiki Ueno  <ueno@unixuser.org>
 +
 +      * mml.el (mml-parse-1): Collect "certfile" attributes in "<#secure>"
 +      tag (Bug#6654).
 +
 +2010-07-20  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record): Bookmark position in
 +      the article buffer, not the summary buffer.
 +
 +2010-07-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record): Make it work for
 +      Emacs 23 as well.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Allow C-w when setting a bookmark in a Gnus Article buffer (Bug#5975).
 +      Patch applied by Karl Fogel.
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record):
 +      Set `bookmark-yank-point' and `bookmark-current-buffer' to allow C-w.
 +
 +2010-07-13  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      Allow bookmarks to be set from Gnus Article buffers (Bug #5975).
 +      Patch applied (with minor tweaks) by Karl Fogel.  Note this leaves
 +      C-w still not working correctly from Article buffers; Thierry's
 +      patch to fix that will be applied after this.
 +
 +      * gnus-art.el (bookmark-make-record-function): New local variable.
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record): Allow setting from
 +      article buffer.
 +      (gnus-summary-bookmark-jump): Maybe jump to article buffer.
 +
 +2010-07-13  Karl Fogel  <kfogel@red-bean.com>
 +
 +      * gnus-sum.el (bookmark-make-record-default): Adjust declaration, based
 +      on changes in bookmark.el.
 +
 +2010-06-22  Mark A. Hershberger  <mah@everybody.org>
 +
 +      * mm-url.el (mm-url-encode-multipart-form-data): New function to handle
 +      the *other* type of HTML form submission.
 +
 +2010-06-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * auth-source.el (auth-source-pick): If choice does not contain a
 +      questioned keyword, set the check to t.
 +
 +2010-06-12  Romain Francoise  <romain@orebokech.com>
 +
 +      * gnus-util.el (gnus-date-get-time): Move up before first use.
 +
 +2010-06-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-mime-buttonized-part-id): New internal variable.
 +      (gnus-article-edit-part): Bind it to make last part that is substituted
 +      or deleted visible.
 +      (gnus-mime-display-single): Buttonize part of which id equals to
 +      gnus-mime-buttonized-part-id.
 +
 +2010-06-10  Dan Christensen  <jdc@uwo.ca>
 +
 +      * gnus-util.el (gnus-user-date): Use gnus-date-get-time.
 +      (gnus-dd-mmm): Use gnus-date-get-time.
 +      * gnus-sum.el (gnus-thread-latest-date): Use gnus-date-get-time and
 +      simplify logic.
 +      (gnus-summary-limit-to-age): Use gnus-date-get-time.
 +      (gnus-sort-threads): Emit message if gnus-sort-threads-loop used.
 +
 +2010-06-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * auth-source.el (top): Autoload `secrets-list-collections',
 +      `secrets-create-item', `secrets-delete-item'.
 +      (auth-sources): Fix tag string.
 +      (auth-get-source, auth-source-retrieve, auth-source-create)
 +      (auth-source-delete): New defuns.
 +      (auth-source-pick): Rewrite in order to avoid 2 passes.
 +      (auth-source-forget-user-or-password): New parameter USERNAME.
 +      (auth-source-user-or-password): New parameters CREATE-MISSING and
 +      DELETE-EXISTING.  Retrieve password interactively, if needed.
 +
 +2010-06-07  Teemu Likonen  <tlikonen@iki.fi>  (tiny change)
 +
 +      * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Don't ask about
 +      deleting unused directories when gnus-expert-user is t.
 +
 +2010-06-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-browse-delete-temp-files): Don't make query
 +      for each temp file when gnus-article-browse-delete-temp is ask.
 +
 +2010-05-20  Kevin Ryde  <user42@zip.com.au>
 +
 +      * gnus-start.el (gnus-level-unsubscribed): Doc fix.  (Bug#6206)
 +
 +2010-05-14  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-sum.el (gnus-summary-save-article): Don't bother to re-fetch
 +      article unless decoding article to be saved.
 +
 +2010-05-13  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mml1991.el (mml1991-mailcrypt-encrypt, mml1991-gpg-encrypt)
 +      * mml2015.el (mml2015-gpg-encrypt): Disable multibyte in buffers
 +      generated within the mm-with-unibyte-current-buffer macro.
 +
 +2010-05-13  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-bind-safe-url-regexp): Bind mm-w3m-safe-url-regexp
 +      to nil when we're in a mml-preview buffer and no group is selected.
 +
 +2010-05-12  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus-sum.el (gnus-summary-read-group-1): Don't jump to next group
 +      when catching the `C-g'.  Reported by "Leo".
 +
 +2010-05-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * message.el (message-forward-make-body-plain)
 +      (message-forward-make-body-mml): Use mm-multibyte-string-p instead of
 +      multibyte-string-p.
 +
 +2010-05-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * message.el (message-forward-make-body-mml): Assume original message
 +      is multibyte string; error on unibyte.
 +      (message-forward-make-body-plain): Ditto; don't add excessive newline
 +      in body end.
 +
 +2010-05-11  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus-sum.el (gnus-summary-kill-thread): Use gnus-summary-mark-article
 +      instead of g-s-m-a-as-unread to set the expirable mark.  (Bug#5284)
 +
 +2010-05-11  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-extern.el (mm-extern-url): Don't use
 +      mm-with-unibyte-current-buffer.
 +      (mm-extern-cache-contents): Use with-current-buffer instead of
 +      save-excursion + set-buffer.
 +
 +2010-05-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-emacs-mule): Remove.
 +
 +2010-05-10  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * gnus-sum.el (gnus-summary-mode): Don't make minor-mode-alist
 +      buffer-local as it's incompatible with Stefan Monnier's 2010-05-03
 +      change.
 +
 +2010-05-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-with-unibyte-current-buffer): Redefine it so as not to
 +      bind the default value of enable-multibyte-characters to nil.
 +
 +2010-05-10  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * message.el (message-forward-make-body-plain)
 +      (message-forward-make-body-mml):
 +      Don't use mm-with-unibyte-current-buffer.
 +
 +2010-05-07  Christian von Roques  <roques@mti.ag>  (tiny change)
 +
 +      * mml2015.el (mml2015-epg-find-usable-key): Skip disabled key
 +      (Bug#5592).
 +
 +2010-05-07  Julien Danjou  <julien@danjou.info>
 +
 +      * gnus-art.el (gnus-mime-pipe-part): Add optional argument `cmd'; pass
 +      it to mm-pipe-part.
 +
 +      * mm-decode.el (mm-pipe-part): Add optional argument `cmd'; use it if
 +      it is given.
 +
 +2010-05-07  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * nnweb.el (nnweb-gmane-search)
 +      * yenc.el (yenc-decode-region): Don't run set-buffer-multibyte for
 +      XEmacs.
 +
 +      * gnus-art.el (gnus-article-browse-html-parts)
 +      * gnus-group.el (gnus-read-ephemeral-gmane-group)
 +      (gnus-read-ephemeral-bug-grou): Use mm-make-temp-file instead of
 +      make-temp-file.
 +
 +      * gnus-dired.el (gnus-dired-mode): Bind gnus-dired-mode-hook,
 +      gnus-dired-mode-on-hook and gnus-dired-mode-off-hook for XEmacs when
 +      compiling.
 +
 +      * gnus-ml.el (gnus-mailing-list-mode): Bind gnus-mailing-list-mode-hook,
 +      gnus-mailing-list-mode-on-hook and gnus-mailing-list-mode-off-hook for
 +      XEmacs when compiling.
 +
 +      * gnus-salt.el (gnus-pick-mode): Bind gnus-pick-mode-on-hook and
 +      gnus-pick-mode-off-hook for XEmacs when compiling.
 +      (gnus-binary-mode): Bind gnus-binary-mode-on-hook and
 +      gnus-binary-mode-off-hook for XEmacs when compiling.
 +
 +      * gnus-sum.el (gnus-summary-limit-strange-charsets-predicate):
 +      Return nil if char-charset is not available.
 +
 +      * sieve-manage.el (sieve-manage-disable-multibyte): Redefine it as a
 +      macro.
 +
 +      * mm-url.el (mm-url-form-encode-xwfu): Use mm-encode-coding-string
 +      instead of encode-coding-string.
 +
 +      * mm-util.el (mm-enable-multibyte, mm-disable-multibyte): Use (featurep
 +      'xemacs) instead of mm-emacs-mule to switch function definitions.
 +      (mm-with-unibyte-current-buffer): Make it a progn macro for XEmacs.
 +
 +2010-05-06  Tommi Vainikainen  <thv@iki.fi>  (tiny change)
 +
 +      * mml-sec.el (mml-secure-message-sign): Fix cut and paste error.
 +
 +2010-05-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-dired.el, gnus-draft.el, gnus-ml.el, gnus-salt.el, gnus-sum.el,
 +      gnus-undo.el, mml.el: Require easy-mmode for XEmacs when compiling.
 +
 +2010-05-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * mm-util.el (mm-decompress-buffer): Use `delete-file';
 +      alias `jka-compr-delete-temp-file' no longer exists.
 +
 +2010-05-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use define-minor-mode in Gnus where applicable.
 +      * mml.el (mml-mode): Use define-minor-mode.
 +      * gnus-undo.el (gnus-undo-mode-map): Initialize in declaration.
 +      (gnus-undo-mode): Use define-minor-mode.
 +      * gnus-sum.el (gnus-dead-summary-mode-map): Initialize in declaration.
 +      (gnus-dead-summary-mode): Use define-minor-mode.
 +      * gnus-salt.el (gnus-pick-mode-map, gnus-binary-mode-map):
 +      Initialize in declaration.
 +      (gnus-pick-mode, gnus-binary-mode): Use define-minor-mode.
 +      * gnus-ml.el (gnus-mailing-list-mode-map): Initialize in declaration.
 +      (gnus-mailing-list-mode): Use define-minor-mode.
 +      * gnus-draft.el (gnus-draft-mode-map): Initialize in declaration.
 +      (gnus-draft-mode): Use define-minor-mode.
 +      * gnus-dired.el (gnus-dired-mode-map): Initialize in declaration.
 +      (gnus-dired-mode): Use define-minor-mode.
 +
 +2010-05-01  Andreas Seltenreich  <seltenreich@gmx.de>
 +
 +      * mml.el (mml-generate-mime-1,mml-compute-boundary-1): Update 'mml
 +      handles on recursive mml-to-mime translation and check them for
 +      boundary delimiter collisions.  Reported by Greg Troxel.
 +
 +2010-04-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-util.el: Don't load tm and apel XEmacs packages when compiling.
 +
 +2010-04-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * mm-util.el (mm-find-buffer-file-coding-system):
 +      * yenc.el (yenc-decode-region): Don't let-bind a read-only variable.
  
  2010-04-22  Andreas Seltenreich  <seltenreich@gmx.de>
  
  
        * nnir.el: Don't mention CVS.
  
 +2010-04-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record):
 +      Add `location' field.
 +
 +2010-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * gnus-sum.el: Add bookmark declarations to silence the compiler.
 +      (gnus-mark-xrefs-as-read, gnus-summary-limit-to-bodies):
 +      Use with-current-buffer to silence the byte-compiler.
 +      (gnus-summary-bookmark-make-record): Use derived-mode-p and don't
 +      bother to require `gnus'.
 +      (gnus-summary-bookmark-jump): Don't forget to autoload.  Simplify.
 +
 +2010-04-12  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * gnus-sum.el (gnus-summary-bookmark-make-record)
 +      (gnus-summary-bookmark-jump): New functions.
 +      (gnus-summary-mode): Setup bookmark support.
 +
  2010-04-01  Andreas Schwab  <schwab@linux-m68k.org>
  
        * mm-uu.el (mm-uu-pgp-signed-extract-1): Use buffer-file-coding-system
        if set.
  
 -2010-03-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +2010-03-31  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * mm-decode.el (mm-add-meta-html-tag): Fix regexp matching meta tag.
 +      * gnus-art.el (gnus-article-browse-html-save-cid-content): Rename from
 +      gnus-article-browse-html-save-cid-image; make it work recursively for
 +      forwarded messages as well.
 +      (gnus-article-browse-html-parts): Work when prefix arg is given.
 +      (gnus-article-browse-html-article): Doc fix.
  
 -2010-03-27  Chong Yidong  <cyd@stupidchicken.com>
 +2010-03-30  Chong Yidong  <cyd@stupidchicken.com>
  
        * message.el (message-default-mail-headers):
        (message-default-headers): Carry the value mail-default-headers over
        into message-default-mail-headers, rather than message-default-headers.
  
 -2010-03-22  Juanma Barranquero  <lekktu@gmail.com>
 +2010-03-30  Martin Stjernholm  <mast@lysator.liu.se>
 +
 +      * mm-decode.el (mm-add-meta-html-tag): Add option to override the
 +      charset.
 +
 +      * gnus-art.el (gnus-article-browse-html-parts): Force the correct
 +      charset into the <meta> tag when the article is encoded to utf-8.
 +
 +2010-03-30  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (gnus-article-browse-delete-temp-files):
 +      Delete directories as well.
 +      (gnus-article-browse-html-parts): Work for images that do not specify
 +      file names; delete temp directory when quitting; insert header at the
 +      right place; use file: scheme for image files.
 +
 +2010-03-30  Eric Schulte  <schulte.eric@gmail.com>
 +
 +      * gnus-art.el (gnus-article-browse-html-save-cid-image): New function.
 +      (gnus-article-browse-html-parts): Use it to make temporary cid image
 +      files in addition to html file so that browser may display them.
 +
 +2010-03-29  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-decode.el (mm-add-meta-html-tag): Fix regexp matching meta tag.
 +
 +2010-03-29  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-source-pick): Fix for non-secrets specifier.
 +
 +2010-03-27  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-sources): Change default to be simpler.
 +      Explain about Secret Service API sources.  Improve Customize options.
 +      (auth-source-pick): Change to accept any number of search parameters.
 +      Implement fallbacks iteratively, not recursively.  Add scoring on the
 +      second pass and sort by score.  Call Secret Service API when needed.
 +      (auth-source-user-or-password): Use it.  Call Secret Service API
 +      directly when needed to get the user name and the password.
 +
 +2010-03-24  Juanma Barranquero  <lekktu@gmail.com>
  
        * message.el (message-interactive): Doc fix.
        (message-qmail-inject-args): Reflow.
  
        * smiley.el (smiley-buffer): Fix typo in docstring.
  
 +2010-03-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail-source.el (gnus-message): Declare.
 +      (mail-source-delete-old-incoming): Require gnus-util.
 +
 +2010-03-23  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * gnus-art.el (canlock-verify): Autoload it for Emacs 21.
 +
 +      * message.el (ecomplete-setup): Autoload it for Emacs <23.
 +
 +      * mml-sec.el (mml-secure-cache-passphrase): Default to t that is
 +      password-cache's default if it is not bound.
 +      (mml-secure-passphrase-cache-expiry): Default to 16 that is
 +      password-cache-expiry's default if it is not bound.
 +
 +      * pop3.el (pop3-list): Don't use 3rd arg of `split-string' which is not
 +      available in Emacs 21.
 +
 +2010-03-23  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el (auth-sources): Fix up definition so extra parameters
 +      are always inline.
 +
 +2010-03-22  Martin Stjernholm  <mast@lysator.liu.se>
 +
 +      * nnimap.el (nnimap-verify-uidvalidity): Fix bug where uidvalidity
 +      wasn't updated after mismatch.  Clear cached mailbox info correctly
 +      when uidvalidity changes.
 +      (nnimap-group-prefixed-name): New function to avoid some code
 +      duplication.
 +      (nnimap-verify-uidvalidity, nnimap-group-overview-filename)
 +      (nnimap-request-group): Use it.
 +      (nnimap-retrieve-groups, nnimap-verify-uidvalidity)
 +      (nnimap-update-unseen): Significantly improved speed of Gnus startup
 +      with many imap folders.  This is done by caching the group status from
 +      the imap server persistently in a group parameter `imap-status'.  (This
 +      was cached before too if `nnimap-retrieve-groups-asynchronous' was set,
 +      but not persistently, so every Gnus startup was still very slow.)
 +
 +2010-03-20  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * auth-source.el: Set up autoloads.  Bump to 23.2 because of the
 +      secrets.el dependency.
 +      (auth-sources): Add optional user name.  Add secrets.el configuration
 +      choice (unused right now).
 +
 +2010-03-20  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnus-sum.el (gnus-summary-make-menu-bar):
 +      Let `gnus-registry-install-shortcuts' fill in the functions.
 +
 +      * gnus-registry.el (gnus-summary-misc-menu): Declare to avoid
 +      warnings.
 +      (gnus-registry-misc-menus): Variable to hold registry mark menus.
 +      (gnus-registry-install-shortcuts): Populate and use it in a
 +      `gnus-summary-menu-hook' lambda, under "Gnus"->"Registry Marks".
 +
 +2010-03-20  Martin Stjernholm  <mast@lysator.liu.se>
 +
 +      * nnimap.el (nnimap-decode-group-name, nnimap-encode-group-name):
 +      In-place substitutions for the group name encoding/decoding.
 +      (nnimap-find-minmax-uid, nnimap-possibly-change-group)
 +      (nnimap-retrieve-headers-progress, nnimap-possibly-change-group)
 +      (nnimap-retrieve-headers-progress, nnimap-request-article-part)
 +      (nnimap-update-unseen, nnimap-request-list)
 +      (nnimap-retrieve-groups, nnimap-request-update-info-internal)
 +      (nnimap-request-set-mark, nnimap-split-to-groups)
 +      (nnimap-split-articles, nnimap-request-newgroups)
 +      (nnimap-request-create-group, nnimap-request-accept-article)
 +      (nnimap-request-delete-group, nnimap-request-rename-group)
 +      (nnimap-acl-get, nnimap-acl-edit): Use them.  Replace `mbx' with
 +      `encoded-mbx' for consistency.
 +      (nnimap-close-group): Call `imap-current-mailbox' instead of using the
 +      variable `imap-current-mailbox'.
 +
 +      * gnus-agent.el (gnus-agent-fetch-articles, gnus-agent-fetch-headers)
 +      (gnus-agent-regenerate-group): Use `gnus-agent-decoded-group-name'.
 +
 +2010-03-20  Bojan Petrovic  <bpetrovi@f.bg.ac.rs>
 +
 +      * pop3.el (pop3-display-message-size-flag): Display message size byte
 +      counts during POP3 download.
 +      (pop3-movemail): Use it.
 +      (pop3-list): Implement listing of available messages.
 +
 +2010-03-20  Mark Triggs  <mst@dishevelled.net>  (tiny change)
 +
 +      * nnir.el (nnir-get-article-nov-override-function): New function to
 +      override the normal NOV retrieval.
 +      (nnir-retrieve-headers): Use it.
 +
 +2010-03-19  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * auth-source.el (netrc-machine-user-or-password): Autoload.
 +
 +2010-03-19  Glenn Morris  <rgm@gnu.org>
 +
 +      Stop message.el from loading about 40 libraries it doesn't always need.
 +      The general approach is to autoload rather than require, and to
 +      require in the specific functions rather than the file.  (Bug#5642)
 +
 +      * gmm-utils.el: Don't require wid-edit.
 +      (widget-create-child-value, widget-convert, widget-default-get):
 +      Autoload.
 +
 +      * gnus-util.el: Don't require time-date, netrc.
 +      (message-fetch-field, gnus-group-name-decode): Declare rather than
 +      autoloading.
 +      (gnus-fetch-field): Require message.
 +      (gnus-decode-newsgroups): Require gnus-group.
 +
 +      * ietf-drums.el: Don't require time-date.
 +
 +      * message.el: Don't require hashcash, canlock, ecomplete.
 +      Do require mail-utils.  Require nnheader only when compiling.
 +      (smtpmail-default-smtp-server): Remove declaration.
 +      (message-send-mail-function): Check smtpmail-default-smtp-server
 +      is bound rather than requiring smtpmail.
 +      (message-auto-save-directory, message-insert-signature):
 +      Use expand-file-name rather than nnheader-concat.
 +      (nnheader-insert-file-contents): Autoload.
 +      (hashcash-wait-async): Declare.
 +      (message-send-mail): Only call gnus-setup-posting-charset if
 +      gnus-group-posting-charset-alist is bound.  Require hashcash if needed.
 +      (message-send-mail-with-sendmail): Require sendmail.
 +      (canlock-password, canlock-password-for-verify): Declare.
 +      (message-canlock-password): Require canlock.
 +      (nnheader-get-report): Autoload.
 +      (gnus-setup-posting-charset): Declare.
 +      (message-send-news): Require gnus-msg.
 +      (message-make-references, message-make-in-reply-to): Use mail-header-id
 +      rather than the alias mail-header-message-id.
 +      (ecomplete-add-item, ecomplete-save): Declare.
 +      (message-put-addresses-in-ecomplete): Require ecomplete.
 +      (ecomplete-display-matches): Autoload.
 +
 +      * mm-decode.el: Don't require mailcap, gnus-util.
 +      (gnus-map-function, gnus-replace-in-string, gnus-read-shell-command)
 +      (message-fetch-field, mailcap-parse-mailcaps, mailcap-mime-info):
 +      Autoload.
 +      (mailcap-mime-extensions): Declare.
 +
 +      * mm-encode.el: Don't require mailcap.
 +      (mailcap-extension-to-mime): Autoload.
 +
 +      * mml-sec.el: Don't require password-cache.
 +
 +      * mml.el (gnus-setup-posting-charset): Declare rather than autoload.
 +      (mailcap-parse-mimetypes, mailcap-mime-types): Declare.
 +      (mml-minibuffer-read-type): Require mailcap.
 +      (mml-preview): Require gnus-msg.
 +
 +      * mml1991.el: Require password-cache.
 +      (password-cache-expiry): Remove declaration.
 +
 +      * mml2015.el: Require password-cache.
 +      (password-cache-expiry): Remove declaration.
 +
 +      * nneething.el (mailcap): Require mailcap.
 +
 +      * nnheader.el (declare-function): Add compatibility stub.
 +      (message-remove-header): Declare rather than autoload.
 +      (nnheader-replace-header): Require message.
 +
 +      * nnimap.el (declare-function): Add compatibility stub.
 +      (netrc-parse, netrc-machine-user-or-password): Declare.
 +      (nnimap-open-connection): Require netrc.
 +
 +      * nntp.el (declare-function): Add compatibility stub.
 +      (netrc-parse, netrc-machine, netrc-get): Declare.
 +      (nntp-send-authinfo): Require netrc.
 +
 +      * rfc2047.el: Don't require qp.
 +      (quoted-printable-encode-region, quoted-printable-decode-string):
 +      Autoload.
 +
 +      * sieve-mode.el: Don't require easymenu.
 +      (easy-menu-add-item): Autoload it.
 +
 +      * spam-stat.el (time-to-number-of-days): Autoload it.
 +
 +2010-03-17  Kevin Ryde  <user42@zip.com.au>
 +
 +      * mml.el (mml-read-tag): Unquote values with `read' to reverse
 +      prin1 in mml-insert-tag (just stripping the quotes gave wrong
 +      value if any backslash escapes).
 +
 +2010-03-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * mm-util.el (mm-charset-to-coding-system): Use coding-system-from-name
 +      if it is available.  (bug#5647)
 +
  2010-02-26  Glenn Morris  <rgm@gnu.org>
  
        * message.el (message-send-mail-function): Change the default, so that
  
  2010-01-01  Chong Yidong  <cyd@stupidchicken.com>
  
 -      * message.el (message-exchange-point-and-mark): Call
 -      exchange-point-and-mark with an argument rather than setting
 +      * message.el (message-exchange-point-and-mark):
 +      Call exchange-point-and-mark with an argument rather than setting
        mark-active by hand (Bug#5175).
  
  2009-12-18  Katsumi Yamaoka  <yamaoka@jpl.org>
        * legacy-gnus-agent.el (gnus-agent-unlist-expire-days): Don't use
        cadar.
  
 -      * sieve-manage.el (sieve-manage-starttls-p): Renamed from
 +      * sieve-manage.el (sieve-manage-starttls-p): Rename from
        imap-starttls-p.
 -      (sieve-manage-starttls-open): Renamed from imap-starttls-open.
 +      (sieve-manage-starttls-open): Rename from imap-starttls-open.
  
  2008-12-22  Reiner Steib  <Reiner.Steib@gmx.de>
  
  
  2008-12-21  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-start.el (gnus-before-startup-hook): Fix doc string.  Reported
 -      by Stephen Berman <stephen.berman@gmx.net>.
 +      * gnus-start.el (gnus-before-startup-hook): Fix doc string.
 +      Reported by Stephen Berman <stephen.berman@gmx.net>.
  
  2008-12-18  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2008-09-25  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * message.el (message-confirm-send): Fixed variable documentation to
 +      * message.el (message-confirm-send): Fix variable documentation to
        avoid the "y/n" wording.
  
  2008-09-25  Francis Litterio  <flitterio@gmail.com>  (tiny change)
  
  2008-07-22  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (gnus-summary-save-in-pipe): Consider
 -      gnus-save-all-headers.
 +      * gnus-art.el (gnus-summary-save-in-pipe):
 +      Consider gnus-save-all-headers.
  
  2008-07-21  Dan Nicolaescu  <dann@ics.uci.edu>
  
  
        * nnheader.el (nnheader-read-timeout): Change the default timeout from
        0.1 seconds to 0.01 seconds.  This will make nntp and pop3 article
 -      retrieval faster in some cases, but might make CPU usage larger.  If
 -      this has any bad side effects, we might revert this change.
 +      retrieval faster in some cases, but might make CPU usage larger.
 +      If this has any bad side effects, we might revert this change.
  
        * pop3.el (pop3-movemail): Change the sit-for from 0.1 to 0.01, which
        seems to make mail retrieval much, much faster.
        (pop3-movemail): Use nnheader-accept-process-output instead of sleeping
        unconditionally.
  
 -      * gnus-draft.el (gnus-group-send-queue): Bind
 -      message-send-mail-partially-limit to nil to avoid being prompted.
 +      * gnus-draft.el (gnus-group-send-queue):
 +      Bind message-send-mail-partially-limit to nil to avoid being prompted.
  
  2008-05-16  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * nnimap.el: Autoload `auth-source-user-or-password'.
        (nnimap-open-connection): Use it.
  
 -      * auth-source.el: Added docs on using with url-auth.  Import gnus-util
 +      * auth-source.el: Add docs on using with url-auth.  Import gnus-util
        for the gnus-message function.
        (auth-source-user-or-password): Use it.
  
  
  2008-04-09  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * auth-source.el: Added docs.
 +      * auth-source.el: Add docs.
        (auth-sources): Modify format to support server.
        (auth-source-pick, auth-source-user-or-password)
        (auth-source-user-or-password-imap)
  
  2008-03-17  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-registry.el (gnus-registry-split-fancy-with-parent): Eliminate
 -      unnecessary duplicates from the match list.
 +      * gnus-registry.el (gnus-registry-split-fancy-with-parent):
 +      Eliminate unnecessary duplicates from the match list.
  
  2008-03-17  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2008-03-13  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * auth-source.el (auth-sources): Renamed from auth-source-choices.
 +      * auth-source.el (auth-sources): Rename from auth-source-choices.
        (auth-source-pick): Use it.
  
  2008-03-12  Teodor Zlatanov  <tzz@lifelogs.com>
  
        * auth-source.el (auth-source-protocols)
 -      (auth-source-protocols-customize, auth-source-choices): Added and
 +      (auth-source-protocols-customize, auth-source-choices): Add and
        modified variable customizations and defaults.
        (auth-source-pick, auth-source-user-or-password)
        (auth-source-protocol-defaults, auth-source-user-or-password-imap)
        nntp-with-open-group macro.
        (nntp-with-open-group): Use the function, so it's easier to debug.
        Add indentation and debugging info.
 -      (nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Recommend
 -      the use of the netcat alternatives.
 +      (nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet):
 +      Recommend the use of the netcat alternatives.
  
        * rfc2047.el (rfc2047-decode-string): Don't use `m'.
        Avoid mm-string-as-multibyte as well.
  
  2008-03-04  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-registry.el (gnus-registry-user-format-function-M): Add
 -      formatting function.
 +      * gnus-registry.el (gnus-registry-user-format-function-M):
 +      Add formatting function.
  
  2008-03-03  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-registry.el (gnus-registry-marks): Changed format to be nicer
 +      * gnus-registry.el (gnus-registry-marks): Change format to be nicer
        with plists.
        (gnus-registry-do-marks, gnus-registry-install-shortcuts-and-menus):
        Use new format.
        * mml.el (mml-menu): Improve help entries.  Move Sign/Encrypt Part.
        (mml-dnd-attach-options): Fix typo in custom choice.
  
 -      * gnus-group.el (gnus-group-read-ephemeral-gmane-group): Change
 -      nndoc-article-type to mbox.
 +      * gnus-group.el (gnus-group-read-ephemeral-gmane-group):
 +      Change nndoc-article-type to mbox.
        (gnus-group-read-ephemeral-gmane-group-url): Support permalink.
  
        * mm-decode.el (mm-text-html-renderer): Prefer w3m over w3.  Fall back
        (nnmairix-last-server, nnmairix-current-server): Defvar them.
        (nnmairix-goto-original-article): Defvar gnus-registry-install and
        autoload gnus-registry-fetch-group when compiling.
 -      (nnmairix-request-group-with-article-number-correction): Remove
 -      unreferenced argument passed to nnmairix-call-backend.
 +      (nnmairix-request-group-with-article-number-correction):
 +      Remove unreferenced argument passed to nnmairix-call-backend.
  
  2008-02-27  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * mm-uu.el (mm-uu-type-alist): Fix message-marks non-hide arguments.
 -      (mm-uu-extract): Improve face for low color ttys.  Reported by Sascha
 -      Wilde.
 +      (mm-uu-extract): Improve face for low color ttys.
 +      Reported by Sascha Wilde.
  
  2008-02-27  Glenn Morris  <rgm@gnu.org>
  
  2008-01-12  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-sum.el (gnus-article-sort-by-random)
 -      (gnus-thread-sort-by-random): Fix doc strings.  Reported by
 -      jidanni@jidanni.org.
 +      (gnus-thread-sort-by-random): Fix doc strings.
 +      Reported by jidanni@jidanni.org.
  
  2008-01-11  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
        * gnus-art.el (gnus-article-read-summary-keys): Work for `C-h' on
        XEmacs.
 -      (gnus-article-describe-key, gnus-article-describe-key-briefly): Protect
 -      against non-character events.
 +      (gnus-article-describe-key, gnus-article-describe-key-briefly):
 +      Protect against non-character events.
  
  2008-01-09  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-group.el (gnus-group-read-ephemeral-gmane-group-url): New
 -      command.
 +      * gnus-group.el (gnus-group-read-ephemeral-gmane-group-url):
 +      New command.
        (gnus-group-read-ephemeral-gmane-group): Use optional argument RANGE
        instead of END.  Change name of the temp file.
        (gnus-group-gmane-group-download-format): Add doc string.  Make it
        continuation keys correctly in the echo area; describe bindings
        correctly when keys end with `C-h'.
        (gnus-article-read-summary-send-keys): New function.
 -      (gnus-article-describe-key, gnus-article-describe-key-briefly): Work
 -      for gnus-article-read-summary-send-keys; display continuation keys
 +      (gnus-article-describe-key, gnus-article-describe-key-briefly):
 +      Work for gnus-article-read-summary-send-keys; display continuation keys
        correctly in the echo area.
        (gnus-article-reply-with-original): Ignore prefix argument.
        (gnus-article-wide-reply-with-original): New function.
  
  2007-12-14  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-sum.el (gnus-summary-prev-article): Fix doc string.  Reported by
 -      Christoph Conrad <christoph.conrad@gmx.de>.
 +      * gnus-sum.el (gnus-summary-prev-article): Fix doc string.
 +      Reported by Christoph Conrad <christoph.conrad@gmx.de>.
  
  2007-12-14  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * mm-decode.el (mm-add-meta-html-tag): New function.
        (mm-save-part-to-file, mm-pipe-part): Use it.
  
 -      * gnus-art.el (gnus-article-browse-delete-temp-files): Use
 -      gnus-y-or-n-p instead of y-or-n-p.
 +      * gnus-art.el (gnus-article-browse-delete-temp-files):
 +      Use gnus-y-or-n-p instead of y-or-n-p.
        (gnus-article-browse-html-parts): Work with message/external-body; use
        mm-add-meta-html-tag.
  
  
        * gnus-fun.el (gnus-display-x-face-in-from): Require gnus-art.
  
 -      * gnus-int.el (gnus-server-opened, gnus-status-message): Move
 -      definitions before use.
 +      * gnus-int.el (gnus-server-opened, gnus-status-message):
 +      Move definitions before use.
  
        * mm-decode.el: Require gnus-util.
        (mm-remove-part): Only call delete-annotation on XEmacs.
  
  2007-12-06  Christian Plate  <cplate@web.de>  (tiny change)
  
 -      * nnmaildir.el (nnmaildir-request-update-info): Improved performance.
 +      * nnmaildir.el (nnmaildir-request-update-info): Improve performance.
        Call gnus-add-to-range ranges only once with a prepared article-list.
  
  2007-12-06  Paul Jarc  <prj@po.cwru.edu>
  
        * nnmaildir.el (nnmaildir-request-list, nnmaildir-retrieve-groups)
        (nnmaildir-request-group, nnmaildir-retrieve-headers): Escape spaces in
 -      group names with backslashes.  Reported by Tassilo Horn
 -      <tassilo@member.fsf.org>.
 +      group names with backslashes.
 +      Reported by Tassilo Horn <tassilo@member.fsf.org>.
  
  2007-12-06  Deepak Goel  <deego3@gmail.com>
  
  2007-12-05  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-art.el (gnus-article-browse-html-parts): Add meta html tag to
 -      specify charset to html source.  Reported by Christoph Conrad
 -      <christoph.conrad@gmx.de>.
 +      specify charset to html source.
 +      Reported by Christoph Conrad <christoph.conrad@gmx.de>.
  
  2007-12-05  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-group.el (gnus-group-highlight-line): Add FIXME.
  
        * gnus-dired.el: Reduce Gnus dependencies.
 -      (gnus-ems, gnus-msg, gnus-util, message, mm-decode, mml): Don't
 -      require.  Use autoloads instead.
 +      (gnus-ems, gnus-msg, gnus-util, message, mm-decode, mml):
 +      Don't require.  Use autoloads instead.
        (mml-attach-file, mm-default-file-encoding, mailcap-extension-to-mime)
        (mailcap-mime-info, mm-mailcap-command, ps-print-preprint)
        (message-buffers, gnus-setup-message, gnus-print-buffer): Autoload.
  
        * yenc.el (yenc-first-part-p, yenc-last-part-p): New functions.
  
 -      * mm-uu.el (mm-uu-yenc-extract): Get the data from the original
 -      buffer.
 +      * mm-uu.el (mm-uu-yenc-extract): Get the data from the original buffer.
  
  2007-12-02  Glenn Morris  <rgm@gnu.org>
  
        * message.el (message-cite-prefix-regexp): Remove `-' and `+' to avoid
        matches on patches.
  
 -      * gnus-art.el (gnus-article-browse-html-article): Mention
 -      `mm-text-html-renderer' in the doc string.
 +      * gnus-art.el (gnus-article-browse-html-article):
 +      Mention `mm-text-html-renderer' in the doc string.
  
        * rfc2047.el (rfc2047-encode-max-chars): Refer to RFC 2047 in doc
        string.  Add comments.
        (gnus-agent-method-p): Canonicalize server names by pushing their
        method through `gnus-method-to-server' using the no-cache argument.
  
 -      * gnus-srvr.el (gnus-server-insert-server-line): Call
 -      `gnus-method-to-server' with `no-cache' argument.
 +      * gnus-srvr.el (gnus-server-insert-server-line):
 +      Call `gnus-method-to-server' with `no-cache' argument.
  
        * gnus-agent.el (gnus-agent-toggle-plugged): Don't call
        gnus-agent-possibly-synchronize-flags as this should be called when the
  
  2007-11-15  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * nntp.el (nntp-insert-buffer-substring, nntp-copy-to-buffer): New
 -      macros.
 +      * nntp.el (nntp-insert-buffer-substring, nntp-copy-to-buffer):
 +      New macros.
        (nntp-wait-for, nntp-retrieve-articles, nntp-async-trigger)
        (nntp-retrieve-headers-with-xover): Use nntp-insert-buffer-substring to
        copy data from unibyte buffer to multibyte current buffer.
 -      (nntp-retrieve-headers, nntp-retrieve-groups); Use nntp-copy-to-buffer
 +      (nntp-retrieve-headers, nntp-retrieve-groups): Use nntp-copy-to-buffer
        to copy data from unibyte current buffer to multibyte buffer.
        (nntp-make-process-buffer): Make process buffer unibyte.
  
  
  2007-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * message.el (message-check-news-body-syntax): Avoid
 -      mm-string-as-multibyte.
 +      * message.el (message-check-news-body-syntax):
 +      Avoid mm-string-as-multibyte.
        (message-hide-headers): Don't assume (point-min)==1.
  
  2007-10-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
  2007-10-27  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-msg.el (gnus-message-setup-hook): Add
 -      `message-remove-blank-cited-lines' to options.
 +      * gnus-msg.el (gnus-message-setup-hook):
 +      Add `message-remove-blank-cited-lines' to options.
  
  2007-10-26  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-group.el (gnus-group-suspend): Replace mapcar called for effect
        with dolist.
  
 -      * gnus-registry.el (gnus-registry-split-fancy-with-parent): Replace
 -      mapcar called for effect with dolist.
 +      * gnus-registry.el (gnus-registry-split-fancy-with-parent):
 +      Replace mapcar called for effect with dolist.
  
        * gnus-spec.el (gnus-correct-length): Make it simple and fast.
  
  
        * gnus-agent.el (gnus-agent-expire-group-1): The check for an unsorted
        overview buffer needed a catch to receive its throw.
 -      (gnus-agent-flush-cache): Declared as interactive to make this function
 +      (gnus-agent-flush-cache): Declare as interactive to make this function
        easier to use.
  
  2007-10-20  Reiner Steib  <Reiner.Steib@gmx.de>
        * mm-decode.el (mm-possibly-verify-or-decrypt): Replace PARTS with the
        ones returned from the verify-function.
  
 -      * mm-uu.el (mm-uu-pgp-signed-extract-1): Call
 -      mml2015-extract-cleartext-signature if extraction failed.
 +      * mm-uu.el (mm-uu-pgp-signed-extract-1):
 +      Call mml2015-extract-cleartext-signature if extraction failed.
  
  2007-10-07  Daiki Ueno  <ueno@unixuser.org>
  
  
  2007-08-14  Tassilo Horn  <tassilo@member.fsf.org>
  
 -      * gnus-art.el (gnus-sticky-article): Fixed problems described in
 +      * gnus-art.el (gnus-sticky-article): Fix problems described in
        <b4mps1qitio.fsf@jpl.org> on ding.  Thanks to Katsumi.
        Don't perform gnus-configure-windows here; reuse existing sticky
        article buffer.
  
  2007-07-23  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-sum.el (gnus-summary-move-article): Make
 -      gnus-summary-respool-article work.
 +      * gnus-sum.el (gnus-summary-move-article):
 +      Make gnus-summary-respool-article work.
  
  2007-07-21  Reiner Steib  <Reiner.Steib@gmx.de>
  
        nnmail-pathname-coding-system.
  
        (nnml-request-article): Pass server argument to nnml-find-group-number.
 -      (nnml-request-create-group, nnml-active-number, nnml-save-marks): Pass
 -      server argument to nnml-possibly-create-directory.
 +      (nnml-request-create-group, nnml-active-number, nnml-save-marks):
 +      Pass server argument to nnml-possibly-create-directory.
        (nnml-request-accept-article): Pass server argument to
        nnml-active-number and nnml-save-mail.
        (nnml-find-group-number): Pass server argument to nnml-find-id.
  
  2007-07-18  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-agent.el (gnus-agent-save-active): Bind
 -      nnheader-file-coding-system to gnus-agent-file-coding-system.
 +      * gnus-agent.el (gnus-agent-save-active):
 +      Bind nnheader-file-coding-system to gnus-agent-file-coding-system.
  
        * gnus-cache.el (gnus-cache-save-buffers)
        (gnus-cache-possibly-enter-article, gnus-cache-request-article)
        (gnus-cache-braid-nov, gnus-cache-braid-heads)
        (gnus-cache-generate-active, gnus-cache-rename-group)
        (gnus-cache-delete-group, gnus-cache-update-file-total-fetched-for)
 -      (gnus-cache-update-overview-total-fetched-for): Bind
 -      file-name-coding-system to nnmail-pathname-coding-system.
 -      (gnus-cache-decoded-group-names, gnus-cache-unified-group-names): New
 -      variables.
 +      (gnus-cache-update-overview-total-fetched-for):
 +      Bind file-name-coding-system to nnmail-pathname-coding-system.
 +      (gnus-cache-decoded-group-names, gnus-cache-unified-group-names):
 +      New variables.
        (gnus-cache-decoded-group-name): New function.
        (gnus-cache-file-name): Use it.
        (gnus-cache-generate-active): Use non-decoded group name for active.
        (gnus-agent-retrieve-headers, gnus-agent-request-article)
        (gnus-agent-regenerate-group)
        (gnus-agent-update-files-total-fetched-for)
 -      (gnus-agent-update-view-total-fetched-for): Bind
 -      file-name-coding-system to nnmail-pathname-coding-system.
 +      (gnus-agent-update-view-total-fetched-for):
 +      Bind file-name-coding-system to nnmail-pathname-coding-system.
        (gnus-agent-group-pathname): Don't encode file names by
        nnmail-pathname-coding-system.
        (gnus-agent-save-local): Bind file-name-coding-system correctly; bind
        * nnrss.el (nnrss-file-coding-system): Doc fix; make it begin with *.
        (nnrss-request-delete-group): Bind file-name-coding-system to
        nnmail-pathname-coding-system.
 -      (nnrss-read-server-data, nnrss-read-group-data): Bind
 -      file-name-coding-system correctly.
 +      (nnrss-read-server-data, nnrss-read-group-data):
 +      Bind file-name-coding-system correctly.
        (nnrss-check-group): Pass nnrss-file-coding-system to md5.
  
        * nntp.el: Require gnus-group for the function gnus-group-name-charset.
  
        * message.el (message-fix-before-sending): Skip raw message part to be
        forwarded while checking illegible text.
 -      (message-forward-make-body-mime, message-forward-make-body): Mark
 -      signed or encrypted raw message as having no illegible text.
 +      (message-forward-make-body-mime, message-forward-make-body):
 +      Mark signed or encrypted raw message as having no illegible text.
  
  2007-06-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2007-06-14  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-agent.el (gnus-agent-fetch-headers)
 -      (gnus-agent-retrieve-headers): Bind
 -      gnus-decode-encoded-address-function to identity.
 +      (gnus-agent-retrieve-headers):
 +      Bind gnus-decode-encoded-address-function to identity.
  
        * nntp.el (nntp-send-xover-command): Recognize an xover command is
        available also when the server returns simply a dot.
  
  2007-05-29  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-sum.el (gnus-summary-limit-to-address): New function.  Suggested
 -      by Loic Dachary <loic@dachary.org>.
 +      * gnus-sum.el (gnus-summary-limit-to-address): New function.
 +      Suggested by Loic Dachary <loic@dachary.org>.
        (gnus-summary-limit-map, gnus-summary-make-menu-bar): Add it.
  
  2007-05-28  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-util.el (gnus-limit-string): Delete this function.
  
 -      * gnus-sum.el (gnus-simplify-subject-fully): Use
 -      `truncate-string-to-width' instead.
 +      * gnus-sum.el (gnus-simplify-subject-fully):
 +      Use `truncate-string-to-width' instead.
  
  2007-05-11  Michaël Cadilhac  <michael@cadilhac.name>
  
 -      * gnus-sum.el (gnus-summary-next-group-on-exit): New variable.  Tell
 -      if, on summary exit, the next group has to be selected.
 +      * gnus-sum.el (gnus-summary-next-group-on-exit): New variable.
 +      Tell if, on summary exit, the next group has to be selected.
        (gnus-summary-exit): Use it.
  
  2007-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
  
  2007-04-27  Didier Verna  <didier@xemacs.org>
  
 -      * gnus-util.el (gnus-orify-regexp): Moved and renamed to ...
 -      * gmm-utils.el (gmm-regexp-concat): here.
 +      * gnus-util.el (gnus-orify-regexp): Move and rename to ...
 +      * gmm-utils.el (gmm-regexp-concat): ... here.
        * message.el: Don't require 'gnus-util.
        (message-dont-reply-to-names): Handle name change above.
        * gnus-sum.el (gnus-ignored-from-addresses): Ditto.
  
  2007-04-16  Didier Verna  <didier@xemacs.org>
  
 -      * gnus-msg.el (gnus-configure-posting-styles): Handle
 -      message-signature-directory properly with :file syntax.  Reported by
 -      "Leo".
 +      * gnus-msg.el (gnus-configure-posting-styles):
 +      Handle message-signature-directory properly with :file syntax.
 +      Reported by "Leo".
  
  2007-04-11  Didier Verna  <didier@xemacs.org>
  
  
  2007-04-10  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-msg.el (gnus-inews-yank-articles): Use
 -      message-exchange-point-and-mark instead of exchange-point-and-mark.
 +      * gnus-msg.el (gnus-inews-yank-articles):
 +      Use message-exchange-point-and-mark instead of exchange-point-and-mark.
  
  2007-04-09  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2007-02-20  Daiki Ueno  <ueno@unixuser.org>
  
 -      * mml2015.el (mml2015-epg-verify): Simplified.
 +      * mml2015.el (mml2015-epg-verify): Simplify.
  
  2007-02-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        (gnus-message-citation-keywords): Set LAXMATCH flag in every HIGHLIGHT.
        (gnus-message-add-citation-keywords): Append keywords rather than
        prepending; emulate font-lock-add-keywords if it is not available.
 -      (gnus-message-remove-citation-keywords): Emulate
 -      font-lock-remove-keywords if it is not available.
 +      (gnus-message-remove-citation-keywords):
 +      Emulate font-lock-remove-keywords if it is not available.
  
        * gnus-msg.el (gnus-message-highlight-citation): Default to t.
  
  
  2007-01-23  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-score.el (gnus-home-score-file, gnus-home-adapt-file): Fix
 -      custom choice.
 +      * gnus-score.el (gnus-home-score-file, gnus-home-adapt-file):
 +      Fix custom choice.
  
        * gnus-art.el (gnus-signature-limit): Fix custom choice.
  
  
        * gnus-sum.el (gnus-auto-select-first): Improve doc string.
  
 -      * message.el (message-cite-original-1): Call
 -      gnus-article-highlight-citation if requested.
 +      * message.el (message-cite-original-1):
 +      Call gnus-article-highlight-citation if requested.
        (message-make-from): Allow name and address as optional arguments.
  
        * gnus-cite.el (gnus-article-highlight-citation): Add SAME-BUFFER arg.
  
  2006-12-29  Jouni K. Seppänen  <jks@iki.fi>
  
 -      * nnimap.el (nnimap-expunge-search-string): Mention
 -      nnimap-search-uids-not-since-is-evil in docstring.
 +      * nnimap.el (nnimap-expunge-search-string):
 +      Mention nnimap-search-uids-not-since-is-evil in docstring.
  
  2006-12-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
        make-obsolete-variable.
        (spam-bsfilter-path, spam-bsfilter-program)
        (spam-spamassassin-path, spam-spamassassin-program)
 -      (spam-sa-learn-path, spam-sa-learn-program): Rename variables.  Don't
 -      use "path" inappropriately.
 +      (spam-sa-learn-path, spam-sa-learn-program): Rename variables.
 +      Don't use "path" inappropriately.
        (spam-check-spamassassin, spam-spamassassin-register-with-sa-learn)
        (spam-check-bsfilter, spam-bsfilter-register-with-bsfilter): Use new
        variable names.
        (spam-spamoracle-database, spam-get-ifile-database-parameter): Fix doc
        strings.
        (spam-check-ifile, spam-ifile-register-with-ifile)
 -      (spam-check-bogofilter, spam-bogofilter-register-with-bogofilter): Use
 -      new variable names.
 +      (spam-check-bogofilter, spam-bogofilter-register-with-bogofilter):
 +      Use new variable names.
  
        * gnus-art.el (gnus-treat-display-x-face, gnus-treat-display-face)
        (gnus-treat-display-smileys): Simplify using
        specifying array size.
        (gnus-summary-insert-line, gnus-summary-prepare-threads): Regrow indent
        array if it is too small.
 -      (gnus-sort-threads-recursive): Renamed from gnus-sort-thread-1.
 +      (gnus-sort-threads-recursive): Rename from gnus-sort-thread-1.
        (gnus-sort-threads-loop): New function.
  
  2006-12-06  Chris Moore  <dooglus@gmail.com>
  
  2006-11-29  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * nneething.el (nneething-decode-file-name): Replace
 -      decode-coding-string with mm-decode-coding-string.
 +      * nneething.el (nneething-decode-file-name):
 +      Replace decode-coding-string with mm-decode-coding-string.
  
        * gnus-int.el (gnus-open-server): Say failed server's name.
  
  
  2006-11-13  Daiki Ueno  <ueno@unixuser.org>
  
 -      * mml2015.el (mml2015-epg-encrypt): Removed backward compatibility for
 +      * mml2015.el (mml2015-epg-encrypt): Remove backward compatibility for
        EasyPG (< 0.0.6).
        (mml2015-always-trust): New user option.
        (mml2015-epg-passphrase-callback): Display key ID on the passphrase
  2006-11-07  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * message.el (message-strip-subject-encoded-words): Reformat prompt.
 -      (message-simplify-subject-functions): Enable
 -      message-strip-subject-encoded-words by default.
 +      (message-simplify-subject-functions):
 +      Enable message-strip-subject-encoded-words by default.
  
  2006-11-06  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * message.el (message-strip-subject-encoded-words): New function
 +      * message.el (message-strip-subject-encoded-words): New function.
        (message-simplify-subject-functions): New variable.
        (message-simplify-subject): Use it.  Fix typo in doc string.
        Support message-strip-subject-encoded-words.
        (mm-setup-codepage-iso-8859, mm-setup-codepage-ibm): New functions.
        (mm-charset-synonym-alist): Move some entries to
        mm-codepage-iso-8859-list.
 -      (mm-charset-synonym-alist, mm-charset-override-alist): Add
 -      iso-8859-8/windows-1255 and iso-8859-9/windows-1254.
 +      (mm-charset-synonym-alist, mm-charset-override-alist):
 +      Add iso-8859-8/windows-1255 and iso-8859-9/windows-1254.
  
  2006-10-29  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2006-10-24  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * mm-util.el (mm-codepage-iso-8859-list, mm-codepage-ibm-list): New
 -      variables.
 +      * mm-util.el (mm-codepage-iso-8859-list, mm-codepage-ibm-list):
 +      New variables.
        (mm-setup-codepage-iso-8859, mm-setup-codepage-ibm): New functions.
        (mm-charset-synonym-alist): Move some entries to
        mm-codepage-iso-8859-list.
  
  2006-10-20  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * spam.el (spam-check-BBDB, spam-enter-ham-BBDB, spam-parse-list): Use
 -      car-safe to avoid bad parses.
 +      * spam.el (spam-check-BBDB, spam-enter-ham-BBDB, spam-parse-list):
 +      Use car-safe to avoid bad parses.
  
  2006-10-20  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2006-10-16  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * spam.el (spam-check-BBDB, spam-enter-ham-BBDB, spam-parse-list): Use
 -      ietf-drums-parse-address instead of gnus-extract-address-components.
 +      * spam.el (spam-check-BBDB, spam-enter-ham-BBDB, spam-parse-list):
 +      Use ietf-drums-parse-address instead of gnus-extract-address-components.
        Reported by Damien Elmes <damien@repose.cx>.
  
  2006-10-19  Reiner Steib  <Reiner.Steib@gmx.de>
  
  2006-10-04  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * mm-util.el (mm-charset-synonym-alist, mm-charset-override-alist): Add
 -      iso-8859-8/windows-1255 and iso-8859-9/windows-1254.
 +      * mm-util.el (mm-charset-synonym-alist, mm-charset-override-alist):
 +      Add iso-8859-8/windows-1255 and iso-8859-9/windows-1254.
  
        * nnheader.el (nnheader-find-file-noselect): Inhibit version-control.
  
        (message-simplify-subject): New function to remove duplicate code.
        (message-reply, message-followup): Use it.
  
 -      * gnus-sum.el (gnus-summary-make-menu-bar): Clarify
 -      gnus-summary-limit-to-articles.
 +      * gnus-sum.el (gnus-summary-make-menu-bar):
 +      Clarify gnus-summary-limit-to-articles.
  
  2006-10-03  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
        * gmm-utils.el (gmm): Adjust custom version.
  
 -      * mm-util.el (mm-charset-override-alist, mm-charset-eval-alist): Adjust
 -      custom version.
 +      * mm-util.el (mm-charset-override-alist, mm-charset-eval-alist):
 +      Adjust custom version.
  
        * gnus-draft.el (gnus-draft-mode): Don't call `mml-mode'.
  
  
  2006-09-20  Maxime Edouard Robert Froumentin  <max@lapin-bleu.net>
  
 -      (gnus-insert-mime-button, gnus-insert-mime-security-button): Apply
 -      gnus-article-button-face to MIME and security buttons.
 +      * gnus-art.el (gnus-insert-mime-button)
 +      (gnus-insert-mime-security-button):
 +      Apply gnus-article-button-face to MIME and security buttons.
  
  2006-09-20  Reiner Steib  <Reiner.Steib@gmx.de>
  
  2006-08-09  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * compface.el (uncompface): Make sure the eol conversion doesn't take
 -      place when communicating with the external programs.  Reported by
 -      ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
 +      place when communicating with the external programs.
 +      Reported by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
  
  2006-07-31  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        (mml2015-function-alist): Add epg.
        (mml2015-epg-passphrase-callback, mml2015-epg-decrypt)
        (mml2015-epg-clear-decrypt, mml2015-epg-verify)
 -      (mml2015-epg-clear-verify, mml2015-epg-sign, mml2015-epg-encrypt): New
 -      functions.
 +      (mml2015-epg-clear-verify, mml2015-epg-sign, mml2015-epg-encrypt):
 +      New functions.
  
  2006-07-08  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
  
  
  2006-06-27  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
  
 -      * gnus-group.el (gnus-group-sort-by-unread): Fix typo.  Reported by
 -      Kenneth Jacker <khj@be.cs.appstate.edu>.
 +      * gnus-group.el (gnus-group-sort-by-unread): Fix typo.
 +      Reported by Kenneth Jacker <khj@be.cs.appstate.edu>.
  
  2006-06-26  Reiner Steib  <Reiner.Steib@gmx.de>
  
        nnmail-fix-eudora-headers.
        (nnmail-fix-eudora-headers): Now obsolete.
  
 -      * gnus-art.el (gnus-button-handle-custom): Support
 -      `customize-apropos*'.
 +      * gnus-art.el (gnus-button-handle-custom):
 +      Support `customize-apropos*'.
  
  2006-06-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
        (gnus-bookmark-write-file): Simplify.
        (gnus-bookmark-maybe-sort-alist): Use `when'.
        (gnus-bookmark-get-bookmark): Fix typo in doc string.
 -      (gnus-bookmark-set-bookmark-name, gnus-bookmark-get-bookmark): Add
 -      FIXME about Emacs 21 and XEmacs compatibility.
 +      (gnus-bookmark-set-bookmark-name, gnus-bookmark-get-bookmark):
 +      Add FIXME about Emacs 21 and XEmacs compatibility.
        (gnus-bookmark-set-bookmark-name): Use `gnus-replace-in-string' for
        compatibility.
        (gnus-bookmark-bmenu-mode): Use `gnus-run-mode-hooks' for
  
  2006-05-29  Kevin Greiner  <kevin.greiner@compsol.cc>
  
 -      * gnus-agent.el: Added gnus-agent-flush* to purge agent info.
 -      (gnus-agent-read-agentview): Fixed handling of end-of-file error.
 -      (gnus-agent-read-local): All symbols allocated in my-obarray
 +      * gnus-agent.el: Add gnus-agent-flush* to purge agent info.
 +      (gnus-agent-read-agentview): Fix handling of end-of-file error.
 +      (gnus-agent-read-local): All symbols allocated in my-obarray.
        (gnus-agent-set-local): Skip invalid entries (min and/or max is nil).
        (gnus-agent-regenerate-group): Check numeric names to see if they are
        messages or groups.
        (gnus-agent-total-fetched-for): Ignore 'dummy.group' (there should be a
        better way of do this...)
  
 -      * gnus-cache.el (gnus-agent-total-fetched-for): Ignore
 -      'dummy.group' (there should be a better way of do this...)
 +      * gnus-cache.el (gnus-agent-total-fetched-for):
 +      Ignore 'dummy.group' (there should be a better way of do this...)
  
  2006-05-29  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        (gnus-article-mode): Use it.
        (gnus-article-toggle-truncate-lines): New function.
  
 -      * gnus-sum.el (gnus-summary-wash-map, gnus-summary-make-menu-bar): Add
 -      gnus-article-toggle-truncate-lines.
 +      * gnus-sum.el (gnus-summary-wash-map, gnus-summary-make-menu-bar):
 +      Add gnus-article-toggle-truncate-lines.
  
        * uudecode.el (uudecode-decode-region-external): nil isn't a valid
        coding system in XEmacs, use binary.
  
  2006-05-25  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (gnus-default-article-saver): Add
 -      gnus-summary-write-body-to-file.
 +      * gnus-art.el (gnus-default-article-saver):
 +      Add gnus-summary-write-body-to-file.
        (gnus-article-save-coding-system): Don't use coding system object
        in XEmacs.
        (gnus-read-save-file-name): Add optional `dir-var' argument which
        * gnus-art.el (gnus-button-alist): Improve gnus-button-handle-symbol
        entry.
  
 -      * gnus-sum.el (gnus-summary-make-menu-bar): Add
 -      gnus-article-browse-html-article.
 +      * gnus-sum.el (gnus-summary-make-menu-bar):
 +      Add gnus-article-browse-html-article.
  
  2006-05-23  Hynek Schlawack  <hynek@ularx.de>
  
 -      * gnus-sum.el (gnus-summary-mime-map): Add
 -      gnus-article-browse-html-article.
 +      * gnus-sum.el (gnus-summary-mime-map):
 +      Add gnus-article-browse-html-article.
 +
  2006-05-23  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-sum.el (gnus-summary-save-article-coding-system): Offer some
        (gnus-summary-expire-articles-now): Shorten prompt.
  
        * gmm-utils.el (wid-edit): Require.
 -      (defun-gmm): Renamed from `gmm-defun-compat'.
 +      (defun-gmm): Rename from `gmm-defun-compat'.
        (gmm-image-search-load-path): Use it.
        (gmm-image-load-path-for-library): Use it.  Sync with `mh-compat.el'.
  
  2006-05-17  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-sum.el (gnus-summary-save-article-coding-system): New
 -      variable.
 -      (gnus-summary-save-article): Add optional `decode' argument.  If
 -      it is set and gnus-summary-save-article-coding-system is non-nil,
 +      * gnus-sum.el (gnus-summary-save-article-coding-system):
 +      New variable.
 +      (gnus-summary-save-article): Add optional `decode' argument.
 +      If it is set and gnus-summary-save-article-coding-system is non-nil,
        save decoded article.
        (gnus-summary-write-article-file): Save decoded article if
        gnus-summary-save-article-coding-system is non-nil.
        * gnus-art.el (gnus-article-setup-buffer): Go to summary buffer
        first to test gnus-single-article-buffer which may be buffer-local.
  
 -      * gnus-sum.el (gnus-summary-setup-buffer): Make
 -      gnus-single-article-buffer buffer-local and nil in ephemeral
 +      * gnus-sum.el (gnus-summary-setup-buffer):
 +      Make gnus-single-article-buffer buffer-local and nil in ephemeral
        group; make gnus-article-buffer, gnus-article-current, and
        gnus-original-article-buffer always buffer-local.
        (gnus-summary-exit): Kill article buffer belonging to ephemeral
        (message-signature-file, message-signature-insert-empty-line):
        Remove autoloads.
  
 -      * gnus-art.el (gnus-buttonized-mime-types): Remove
 -      "multipart/signed".  Revert 2006-04-26 change.
 +      * gnus-art.el (gnus-buttonized-mime-types):
 +      Remove "multipart/signed".  Revert 2006-04-26 change.
  
  2006-05-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  
        * message.el (hashcash): Require hashcash as normal.
  
 -      * ecomplete.el (ecomplete-highlight-match-line): Use
 -      point-at-eol.
 +      * ecomplete.el (ecomplete-highlight-match-line):
 +      Use point-at-eol.
        (ecomplete-highlight-match-line): Use `highlight', because that
        face exists in both Emacs and XEmacs.
  
  
        * message.el (message-citation-line-format): New variable.
        (message-insert-formated-citation-line): New function.
 -      (message-citation-line-function): Add
 -      `message-insert-formated-citation-line' to custom type.
 +      (message-citation-line-function):
 +      Add `message-insert-formated-citation-line' to custom type.
  
        * mm-decode.el (mm-verify-option): Add gnus-buttonized-mime-types
        to doc string.
        (message-mode): Ditto.
        (message-strip-forbidden-properties): Ditto.
  
 -      * ecomplete.el (ecomplete-database-file-coding-system): New
 -      variable.
 +      * ecomplete.el (ecomplete-database-file-coding-system):
 +      New variable.
        (ecomplete-save): Use it.
        (ecomplete-setup): Use it.
  
  
        * rfc2231.el (rfc2231-parse-string): Sort the parameters first.
  
 -      * message.el (message-forward-make-body-plain): Allow
 -      message-forward-ignored-headers to be a list.
 +      * message.el (message-forward-make-body-plain):
 +      Allow message-forward-ignored-headers to be a list.
        (message-remove-ignored-headers): Factor out into function.
        (message-forward-make-body-mml): Use it.
        * rfc2231.el (rfc2231-parse-string): Remove dead code.
  
  2006-04-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * message.el (message-put-addresses-in-ecomplete): Use
 -      gnus-replace-in-string.
 +      * message.el (message-put-addresses-in-ecomplete):
 +      Use gnus-replace-in-string.
        (message-is-yours-p): Use the more correct
        mail-header-parse-address instead of
        mail-extract-address-components.
  
        * message.el (message-hidden-headers): Add X-Draft-From.
  
 -      * gnus-sum.el (gnus-summary-repeat-search-article-forward): New
 -      command.
 +      * gnus-sum.el (gnus-summary-repeat-search-article-forward):
 +      New command.
        (gnus-summary-repeat-search-article-backward): New command.
  
        * gnus-topic.el (gnus-topic-display-missing-topic): Skip past
  
  2006-04-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-art.el (gnus-face-properties-alist): Moved here from
 +      * gnus-art.el (gnus-face-properties-alist): Move here from
        gnus-fun.
  
        * gnus-fun.el (gnus-face-properties-alist): Move to gnus-art.
  
  2006-04-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * hashcash.el (hashcash-insert-payment-async-2): Use
 -      message-goto-eoh instead of doing it manually.
 +      * hashcash.el (hashcash-insert-payment-async-2):
 +      Use message-goto-eoh instead of doing it manually.
        (mail-add-payment): Use message-narrow-to-header instead of trying
        to do the same itself.
  
        * ecomplete.el (ecomplete-display-matches): Allow automatic
        display.
  
 -      * message.el (message-strip-forbidden-properties): Display
 -      abbrevs.
 +      * message.el (message-strip-forbidden-properties):
 +      Display abbrevs.
        (message-display-abbrev): Get automatic display right.
  
        * ecomplete.el (ecomplete-display-matches): Use M-n/M-p
        TODO: Backport to v5-10!
  
        * gnus-util.el (gnus-alist-to-hashtable, gnus-hashtable-to-alist):
 -      Moved here (and renamed) from gnus-registry.el.
 +      Move here (and rename) from gnus-registry.el.
  
        * gnus-registry.el: Require gnus-util.
        Use `gnus-alist-to-hashtable' and `gnus-hashtable-to-alist'.
  
  2006-04-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-group.el (gnus-group-catchup-current): Change
 -      if-then-else-if-then-else into cond.
 +      * gnus-group.el (gnus-group-catchup-current):
 +      Change if-then-else-if-then-else into cond.
        (gnus-group-catchup): Indent.
        (group-name-at-point): New function.
        (gnus-fetch-group): Provide default from thing at point.
  
        * message.el (message-display-abbrev): Fix regexp.
  
 -      * ecomplete.el (ecomplete-highlight-match-line): Reimplement
 -      choosing.
 +      * ecomplete.el (ecomplete-highlight-match-line):
 +      Reimplement choosing.
        (ecomplete-highlight-match-line): Fix up code rewrite, remove
        dead variables.
  
  
  2006-04-12  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-art.el (gnus-article-mode): Set
 -      cursor-in-non-selected-windows to nil.
 +      * gnus-art.el (gnus-article-mode):
 +      Set cursor-in-non-selected-windows to nil.
  
        * smiley.el: Revert previous change.
        (smiley-data-directory): defvar it before using it in the
  
        * ecomplete.el (ecomplete-add-item): Chop off decimals.
  
 -      * gnus-sum.el (gnus-summary-save-parts): Bind
 -      gnus-summary-save-parts-counter and use it to make unique file
 +      * gnus-sum.el (gnus-summary-save-parts):
 +      Bind gnus-summary-save-parts-counter and use it to make unique file
        names.
  
        * gnus-art.el (gnus-ignored-headers): Add some more headers.
  
  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.
 +      * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region):
 +      Wait for BEGIN_SIGNING too, new in GnuPG 1.4.3.
  
  2006-04-04  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
  
  
  2006-04-04  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Check
 -      gnus-extra-headers for 'Newsgroups.
 +      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups):
 +      Check gnus-extra-headers for 'Newsgroups.
  
        * message.el (message-tool-bar-gnome): Check if `flyspell-mode' is
        bound.
  
  2006-03-27  Karl Kleinpaste  <karl@charcoal.com>
  
 -      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Improve
 -      newsgroups handling for NNTP overviews which don't include
 +      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups):
 +      Improve newsgroups handling for NNTP overviews which don't include
        Newsgroups.
  
  2006-03-26  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
  
  2006-03-14  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gmm-utils.el (gmm-image-load-path-for-library): Fix typo.  Use
 -      `defun' instead of `gmm-defun-compat'.
 +      * gmm-utils.el (gmm-image-load-path-for-library): Fix typo.
 +      Use `defun' instead of `gmm-defun-compat'.
  
  2006-03-14  Simon Josefsson  <jas@extundo.com>
  
        * gnus-group.el (gnus-group-make-tool-bar): Use add-hook.
        Suggested by Stefan Monnier <monnier@iro.umontreal.ca>.
  
 -      * gnus-art.el (gnus-article-browse-delete-temp-files): Simplify
 -      resetting gnus-article-browse-html-temp-list.
 +      * gnus-art.el (gnus-article-browse-delete-temp-files):
 +      Simplify resetting gnus-article-browse-html-temp-list.
  
        * gmm-utils.el (gmm-image-load-path-for-library): Sync with
        mh-compat.el at 2006-03-04T21:23:21Z!wohler@newt.com in Emacs.  Rename `gmm-image-load-path'.
  
        * gnus-art.el (gnus-article-browse-html-temp-list): Rename from
        gnus-article-browse-html-temp.
 -      (gnus-article-browse-delete-temp): Make it customizable.  Add
 -      `file'.  Adjust doc string.
 -      (gnus-article-browse-delete-temp-files): Add argument.  Allow
 -      query for each file.  Adjust doc string.
 -      (gnus-article-browse-html-parts): Add
 -      `gnus-article-browse-delete-temp-files' to
 +      (gnus-article-browse-delete-temp): Make it customizable.
 +      Add `file'.  Adjust doc string.
 +      (gnus-article-browse-delete-temp-files): Add argument.
 +      Allow query for each file.  Adjust doc string.
 +      (gnus-article-browse-html-parts):
 +      Add `gnus-article-browse-delete-temp-files' to
        `gnus-summary-prepare-exit-hook' and `gnus-exit-gnus-hook'.
  
  2006-03-02  Hynek Schlawack  <hynek@ularx.de>
        string.
  
        * gnus-sum.el (gnus-summary-tool-bar-gnome): Don't use
 -      gnus-summary-insert-new-articles when unplugged.  Remove
 -      gnus-summary-search-article-forward.
 +      gnus-summary-insert-new-articles when unplugged.
 +      Remove gnus-summary-search-article-forward.
  
        * gmm-utils.el (gmm-tool-bar-style): Test tool-bar-mode and
        display-visual-class instead of display-color-cells.
        * gnus-art.el (gnus-button): New face.
        (gnus-article-button-face): Use it.
  
 -      * gnus-sum.el (gnus-summary-tool-bar-gnome): Add
 -      gnus-summary-next-page.  Re-order.
 +      * gnus-sum.el (gnus-summary-tool-bar-gnome):
 +      Add gnus-summary-next-page.  Re-order.
  
        * gnus-group.el (gnus-group-tool-bar-gnome): prev-node and
        next-node are now included.
  
        * spam.el (spam-spamassassin-score-regexp): New internal variable.
        (spam-extra-header-to-number, spam-check-spamassassin-headers):
 -      Use it to match format of Spamassassin 3.0 and later.  Reported by
 -      IRIE Tetsuya <irie@t.email.ne.jp>.
 +      Use it to match format of Spamassassin 3.0 and later.
 +      Reported by IRIE Tetsuya <irie@t.email.ne.jp>.
        (spam-check-bogofilter)
        (spam-bogofilter-register-with-bogofilter): Fix args of
        `gnus-error' calls.
  2006-02-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-draft.el (gnus-draft-send): Bind message-signature to avoid
 -      unnecessary interaction when sending queued mails.  Reported by
 -      TAKAHASHI Yoshio <tkh@jp.fujitsu.com>.
 +      unnecessary interaction when sending queued mails.
 +      Reported by TAKAHASHI Yoshio <tkh@jp.fujitsu.com>.
  
  2006-02-27  Reiner Steib  <Reiner.Steib@gmx.de>
  
  
  2006-02-23  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-group.el (gnus-group-tool-bar-gnome): Fix
 -      gnus-agent-toggle-plugged.  Re-order icons.
 -      (gnus-group-tool-bar-gnome): Add
 -      gnus-group-{prev,next}-unread-group.
 +      * gnus-group.el (gnus-group-tool-bar-gnome):
 +      Fix gnus-agent-toggle-plugged.  Re-order icons.
 +      (gnus-group-tool-bar-gnome):
 +      Add gnus-group-{prev,next}-unread-group.
        (gnus-group-tool-bar-gnome): Re-order icons.
  
 -      * gnus-sum.el (gnus-summary-tool-bar-gnome): Move
 -      gnus-summary-insert-new-articles.
 +      * gnus-sum.el (gnus-summary-tool-bar-gnome):
 +      Move gnus-summary-insert-new-articles.
  
 -      * message.el (message-tool-bar-gnome, message-tool-bar-retro): Fix
 -      comments.
 +      * message.el (message-tool-bar-gnome, message-tool-bar-retro):
 +      Fix comments.
  
        * utf7.el (utf7-utf-16-coding-system): Fix comment.  utf-16-be is
        also available in Emacs 21.3.
  
        * message.el (message-make-tool-bar): Ditto.
  
 -      * mml.el (mml-preview): Added comment concerning tool bar icons.
 +      * mml.el (mml-preview): Add comment concerning tool bar icons.
  
        * gnus-group.el (gnus-group-tool-bar-gnome): Use new icon names.
        (gnus-group-make-tool-bar): Use `gmm-image-load-path'.
        * message.el (message-tool-bar-gnome): Use new icon names.
        (message-make-tool-bar): Use `gmm-image-load-path'.
  
 -      * gmm-utils.el (gmm-defun-compat, gmm-image-search-load-path): New
 -      functions from MH-E.
 +      * gmm-utils.el (gmm-defun-compat, gmm-image-search-load-path):
 +      New functions from MH-E.
        (gmm-image-load-path): New variable from MH-E.
 -      (gmm-image-load-path): New function from MH-E.  Added arguments
 +      (gmm-image-load-path): New function from MH-E.  Add arguments
        LIBRARY, IMAGE and PATH.  Don't modify paths.  Don't use
        *-image-load-path-called-flag.
  
  
        * mm-util.el (mm-charset-override-alist): Fix type in doc string.
  
 -      * gnus-art.el (mm-url-insert-file-contents-external): Autoload
 -      mm-url.
 +      * gnus-art.el (mm-url-insert-file-contents-external):
 +      Autoload mm-url.
  
        * mm-uu.el (mm-uu-type-alist): Improve `LaTeX'.
  
  
  2006-02-17  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (article-strip-banner): Call
 -      article-really-strip-banner only when the regexp match is made.
 +      * gnus-art.el (article-strip-banner):
 +      Call article-really-strip-banner only when the regexp match is made.
  
  2006-02-16  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (article-strip-banner): Use
 -      gnus-extract-address-components instead of
 +      * gnus-art.el (article-strip-banner):
 +      Use gnus-extract-address-components instead of
        mail-header-parse-addresses to make it work with non-ASCII text;
        remove mail-encode-encoded-word-string.
  
  
  2006-02-08  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * nnfolder.el (nnfolder-insert-newsgroup-line): Use
 -      message-make-date instead of current-time-string.
 +      * nnfolder.el (nnfolder-insert-newsgroup-line):
 +      Use message-make-date instead of current-time-string.
  
        * mm-view.el (mm-inline-message): Don't set gnus-newsgroup-charset
        to gnus-decoded which mm-uu might set.
  
  2006-01-26  Steve Youngs  <steve@sxemacs.org>
  
 -      * gmm-utils.el (gmm-tool-bar-item, gmm-tool-bar-zap-list): Don't
 -      autoload.
 +      * gmm-utils.el (gmm-tool-bar-item, gmm-tool-bar-zap-list):
 +      Don't autoload.
  
  2006-01-26  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        `gmm-tool-bar-from-list'.
  
        * gnus-group.el (gnus-group-tool-bar, gnus-group-tool-bar-gnome)
 -      (gnus-group-tool-bar-retro, gnus-group-tool-bar-zap-list): New
 -      variables.
 +      (gnus-group-tool-bar-retro, gnus-group-tool-bar-zap-list):
 +      New variables.
        (gnus-group-make-tool-bar): Complete rewrite using
        `gmm-tool-bar-from-list'.
        (gnus-group-tool-bar-update): New function.
        (mm-inline-text-html-render-with-w3m-standalone): Use it to alter
        w3m usage.
  
 -      * gnus-art.el (gnus-article-wash-html-with-w3m-standalone): Use
 -      mm-w3m-standalone-supports-m17n-p to alter w3m usage.
 +      * gnus-art.el (gnus-article-wash-html-with-w3m-standalone):
 +      Use mm-w3m-standalone-supports-m17n-p to alter w3m usage.
  
  2006-01-23  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * message.el (message-tool-bar-zap-list): Use
 -      gmm-tool-bar-zap-list as custom type.
 +      * message.el (message-tool-bar-zap-list):
 +      Use gmm-tool-bar-zap-list as custom type.
        (message-tool-bar-update): New function.
        (message-tool-bar, message-tool-bar-gnome)
        (message-tool-bar-retro): Add message-tool-bar-update.
  
  2006-01-13  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (article-wash-html): Use
 -      gnus-summary-show-article-charset-alist if a numeric arg is given.
 +      * gnus-art.el (article-wash-html):
 +      Use gnus-summary-show-article-charset-alist if a numeric arg is given.
        (gnus-article-wash-html-with-w3m-standalone): New function.
  
        * mm-view.el (mm-text-html-renderer-alist): Map w3m-standalone to
        * gnus-cus.el (gnus-group-parameters): Sync posting-style with
        custom definition of `gnus-posting-styles'.
  
 -      * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bind
 -      print-circle.  Suggested by Kalle Olavi Niemitalo <kon@iki.fi>.
 +      * gnus-start.el (gnus-gnus-to-quick-newsrc-format):
 +      Bind print-circle.  Suggested by Kalle Olavi Niemitalo <kon@iki.fi>.
  
  2006-01-05  Reiner Steib  <Reiner.Steib@gmx.de>
  
        `customize-apropos' for any "M-x customize-*" button but the
        function called for.  Accept both the function name and its
        argument in order to achieve this.
 -      (gnus-button-alist): Remove support for "custom:" URL's.  Pass
 -      function name to `gnus-button-handle-custom' in case of "M-x
 +      (gnus-button-alist): Remove support for "custom:" URL's.
 +      Pass function name to `gnus-button-handle-custom' in case of "M-x
        customize-*" buttons.
  
  2005-12-12  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2005-12-12  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * rfc2047.el (rfc2047-charset-to-coding-system): Recognize
 -      us-ascii as a MIME charset.
 +      * rfc2047.el (rfc2047-charset-to-coding-system):
 +      Recognize us-ascii as a MIME charset.
  
 -      * mm-bodies.el (mm-decode-content-transfer-encoding): Protect
 -      against the case where the 2nd arg TYPE is nil.
 +      * mm-bodies.el (mm-decode-content-transfer-encoding):
 +      Protect against the case where the 2nd arg TYPE is nil.
  
  2005-12-09  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-fun.el (gnus-face-from-file): Decrease quant in smaller
        steps when < 10.
  
 -      * gnus-start.el (gnus-no-server-1): Mention
 -      `gnus-level-default-subscribed' in doc string.
 +      * gnus-start.el (gnus-no-server-1):
 +      Mention `gnus-level-default-subscribed' in doc string.
  
  2005-12-02  ARISAWA Akihiro  <ari@mbf.ocn.ne.jp>  (tiny change)
  
  
  2005-11-12  Kevin Greiner  <kevin.greiner@compsol.cc>
  
 -      * gnus-agent.el (gnus-agent-article-alist-save-format): Changed
 -      internal variable to a custom variable.  Changed default value
 +      * gnus-agent.el (gnus-agent-article-alist-save-format):
 +      Change internal variable to a custom variable.  Change default value
        from compressed(2) to uncompressed(1).
        (gnus-agent-read-agentview): Reversed revision 7.8 to restore
        support for uncompressed agentview files.  Taken together, reading
  
  2005-12-09  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-start.el (gnus-start-draft-setup): Enforce
 -      `gnus-draft-mode' for nndraft:drafts at startup.
 +      * gnus-start.el (gnus-start-draft-setup):
 +      Enforce `gnus-draft-mode' for nndraft:drafts at startup.
  
        * gnus.el (gnus-splash): Change custom group.
 -      (gnus-group-get-parameter, gnus-group-parameter-value): Describe
 -      allow-list argument.
 +      (gnus-group-get-parameter, gnus-group-parameter-value):
 +      Describe allow-list argument.
  
        * gnus-agent.el (gnus-agent-article-alist-save-format): Format doc
        string.
  
        * mm-uu.el (mm-uu-verbatim-marks-extract): Add four start and end
        arguments.
 -      (mm-uu-type-alist): Add message-marks and insert-marks.  Pass
 -      arguments to mm-uu-verbatim-marks-extract.
 +      (mm-uu-type-alist): Add message-marks and insert-marks.
 +      Pass arguments to mm-uu-verbatim-marks-extract.
        (mm-uu-hide-markers): New variable.
        (mm-uu-extract): Use face similar to `gnus-cite-3'.
  
  
        * message.el (message-tool-bar-local-item-from-menu): Fix comment.
  
 -      * mm-bodies.el (mm-decode-string): Call
 -      `mm-charset-to-coding-system' with allow-override argument.
 +      * mm-bodies.el (mm-decode-string):
 +      Call `mm-charset-to-coding-system' with allow-override argument.
  
  2005-10-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2005-10-15  Bill Wohler  <wohler@newt.com>
  
 -      * message.el (message-tool-bar-map): Renamed image file from
 +      * message.el (message-tool-bar-map): Rename image file from
        mail_send to mail/send.
  
  2005-10-16  Masatake YAMATO  <jet@gyve.org>
  
        * mml-sec.el (mml-secure-method): New internal variable.
        (mml-secure-sign, mml-secure-encrypt, mml-secure-message-sign)
 -      (mml-secure-message-sign-encrypt, mml-secure-message-encrypt): New
 -      functions using mml-secure-method.
 +      (mml-secure-message-sign-encrypt, mml-secure-message-encrypt):
 +      New functions using mml-secure-method.
  
        * mml.el (mml-mode-map): Add key bindings for those functions.
        (mml-menu): Simplify security menu entries.  Suggested by Jesper
        Harder <harder@myrealbox.com>.
 -      (mml-attach-file, mml-attach-buffer, mml-attach-external): Goto
 -      end of message if point is the headers of the message.
 +      (mml-attach-file, mml-attach-buffer, mml-attach-external):
 +      Goto end of message if point is the headers of the message.
  
        * message.el (message-in-body-p): New function.
  
        * mm-util.el (mm-charset-to-coding-system): Add allow-override.
        Use `mm-charset-override-alist' only when decoding.
  
 -      * mm-bodies.el (mm-decode-body): Call
 -      `mm-charset-to-coding-system' with allow-override argument.
 +      * mm-bodies.el (mm-decode-body):
 +      Call `mm-charset-to-coding-system' with allow-override argument.
  
        * gnus-art.el (gnus-mime-view-part-as-type-internal): Try to fetch
        `filename' from Content-Disposition if Content-Type doesn't
        (mm-charset-to-coding-system): Use it.
        (mm-codepage-setup): New helper function.
        (mm-charset-eval-alist): New variable.
 -      (mm-charset-to-coding-system): Use mm-charset-eval-alist.  Warn
 -      about unknown charsets.
 +      (mm-charset-to-coding-system): Use mm-charset-eval-alist.
 +      Warn about unknown charsets.
  
  2005-10-04  David Hansen  <david.hansen@gmx.net>
  
  
  2005-09-29  Simon Josefsson  <jas@extundo.com>
  
 -      * spam.el: Load hashcash when compiling, to avoid warnings.  Don't
 -      autoload mail-check-payment.
 +      * spam.el: Load hashcash when compiling, to avoid warnings.
 +      Don't autoload mail-check-payment.
        (spam-check-hashcash): Define unconditionally, since hashcash.el
        is part of Gnus now.  Ignore errors from payment checking.
  
  2005-09-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * message.el (message-bold-region, message-unbold-region): Rename
 -      from `bold-region' and `unbold-region'.
 +      * message.el (message-bold-region, message-unbold-region):
 +      Rename from `bold-region' and `unbold-region'.
  
        * message.el: Remove useless autoloads.
  
        * gnus-agent.el (gnus-agent-synchronize-flags): Explain why the
        default value is nil.
  
 -      * mm-uu.el (mm-uu-type-alist): Added slrn style verbatim-marks.
 +      * mm-uu.el (mm-uu-type-alist): Add slrn style verbatim-marks.
        (mm-uu-verbatim-marks-extract): New function.
        (mm-uu-extract): New face.
        (mm-uu-copy-to-buffer): Use it.
  
 -      * spam-report.el (spam-report-gmane-ham): Renamed from
 +      * spam-report.el (spam-report-gmane-ham): Rename from
        `spam-report-gmane-unspam'.
 -      (spam-report-gmane-internal): Renamed from `spam-report-gmane'.
 +      (spam-report-gmane-internal): Rename from `spam-report-gmane'.
        Simplify use of UNSPAM argument.  Fetch "X-Report-Unspam" header.
  
        * spam.el (spam-report-gmane-spam, spam-report-gmane-ham):
        Autoload.
 -      (spam-report-gmane-unregister-routine): Renamed
 -      `spam-report-gmane-unspam' to `spam-report-gmane-ham'.
 +      (spam-report-gmane-unregister-routine):
 +      Rename `spam-report-gmane-unspam' to `spam-report-gmane-ham'.
  
  2005-09-21  Teodor Zlatanov  <tzz@lifelogs.com>
  
        * gnus-art.el (gnus-article-replace-part)
        (gnus-mime-replace-part): New functions.
        (gnus-mime-action-alist, gnus-mime-button-commands)
 -      (gnus-mime-save-part-and-strip): Added file argument.
 -      (gnus-article-part-wrapper): Added interactive argument.
 +      (gnus-mime-save-part-and-strip): Add file argument.
 +      (gnus-article-part-wrapper): Add interactive argument.
  
 -      * gnus-sum.el (gnus-summary-mime-map): Add
 -      `gnus-article-replace-part'.
 +      * gnus-sum.el (gnus-summary-mime-map):
 +      Add `gnus-article-replace-part'.
  
  2005-09-19  Didier Verna  <didier@xemacs.org>
  
        (message-setup-1): Call `message-use-alternative-email-as-from'
        after `message-setup-hook' to give it precedence over posting
        styles, etc.
 -      (message-use-alternative-email-as-from): Add docstring.  Remove
 -      the original From header if present.
 +      (message-use-alternative-email-as-from): Add docstring.
 +      Remove the original From header if present.
  
        * nnml.el (nnml-compressed-files-size-threshold): New variable.
        (nnml-save-mail): Use it.
  
  2005-09-04  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * mml.el (mml-dnd-protocol-alist, mml-dnd-attach-options): New
 -      variables.
 +      * mml.el (mml-dnd-protocol-alist, mml-dnd-attach-options):
 +      New variables.
        (mml-dnd-attach-file, mml-mode): Use them.
  
        * nnweb.el (nnweb-type-definition, nnweb-google-wash-article):
 -      Make fetching article by MID work again for Google Groups.  Added
 -      FIXME concerning gnus-group-make-web-group.
 +      Make fetching article by MID work again for Google Groups.
 +      Add FIXME concerning gnus-group-make-web-group.
  
        * mml-smime.el (mml-smime-sign-query, mml-smime-get-dns-cert):
        Don't depend on Gnus by using mail-extract-address-components if
  
  2005-09-02  Hrvoje Niksic  <hniksic@xemacs.org>
  
 -      * mm-encode.el (mm-encode-content-transfer-encoding): Likewise
 -      when encoding.
 +      * mm-encode.el (mm-encode-content-transfer-encoding):
 +      Likewise when encoding.
  
        * mm-bodies.el (mm-decode-content-transfer-encoding):
        De-canonicalize CRLF for all text content types, not just
  
  2005-08-29  Jari Aalto  <jari.aalto@cante.net>
  
 -      * gnus-msg.el (gnus-inews-add-send-actions): Made
 -      `message-post-method' lambda parameter ARG `&optional'.
 +      * gnus-msg.el (gnus-inews-add-send-actions):
 +      Make `message-post-method' lambda parameter ARG `&optional'.
  
  2005-08-29  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-sum.el (gnus-summary-mime-map): Added
 -      gnus-article-save-part-and-strip, gnus-article-delete-part and
 +      * gnus-sum.el (gnus-summary-mime-map):
 +      Add gnus-article-save-part-and-strip, gnus-article-delete-part and
        gnus-article-jump-to-part.
  
 -      * gnus-art.el (gnus-article-edit-article): Added quiet argument.
 +      * gnus-art.el (gnus-article-edit-article): Add quiet argument.
        (gnus-article-edit-part): Use it.
 -      (gnus-article-part-wrapper): Added no-handle argument.
 -      (gnus-article-save-part-and-strip, gnus-article-delete-part): New
 -      functions.
 +      (gnus-article-part-wrapper): Add no-handle argument.
 +      (gnus-article-save-part-and-strip, gnus-article-delete-part):
 +      New functions.
  
  2005-08-29  Romain Francoise  <romain@orebokech.com>
  
        * pgg.el (url-insert-file-contents): Don't autoload it, Emacs has
        it in url-handlers.el and XEmacs in url.el.  Reported by Luca
        Capello and Romain Francoise.
 -      (pgg-fetch-key-function): Removed, not used?
 +      (pgg-fetch-key-function): Remove, not used?
        (pgg-insert-url-with-w3): Require url, to get
        url-insert-file-contents regardless of where it is defined.
  
  
  2005-08-02  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * sieve-manage.el (sieve-manage-interactive-login): Use
 -      make-local-variable rather than make-variable-buffer-local.
 +      * sieve-manage.el (sieve-manage-interactive-login):
 +      Use make-local-variable rather than make-variable-buffer-local.
        (sieve-manage-open): Ditto.
        (sieve-manage-authenticate): Ditto.
  
  
  2005-07-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-msg.el (gnus-button-mailto): Remove
 -      save-selected-window-window hackery because it relies on
 +      * gnus-msg.el (gnus-button-mailto):
 +      Remove save-selected-window-window hackery because it relies on
        save-selected-window internals.
  
  2005-07-15  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2005-07-14  Hiroshi Fujishima  <hiroshi.fujishima@gmail.com>  (tiny change)
  
 -      * gnus-score.el (gnus-score-edit-all-score): Set
 -      gnus-score-edit-exit-function to gnus-score-edit-done and call
 +      * gnus-score.el (gnus-score-edit-all-score):
 +      Set gnus-score-edit-exit-function to gnus-score-edit-done and call
        gnus-message.
  
  2005-07-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-msg.el (gnus-button-mailto): Remove
 -      save-selected-window-window hackery because it relies on
 +      * gnus-msg.el (gnus-button-mailto):
 +      Remove save-selected-window-window hackery because it relies on
        save-selected-window internals.
  
  2005-07-13  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2005-04-21  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * message.el (message-kill-buffer-query): Renamed from
 -      `message-kill-buffer-query-if-modified'.  Added :version.
 +      * message.el (message-kill-buffer-query): Rename from
 +      `message-kill-buffer-query-if-modified'.  Add :version.
  
  2005-04-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        to get all the groups a message ID is in.
  
        * spam-stat.el (spam-stat-split-fancy-spam-threshold)
 -      (spam-stat-split-fancy): Change "threshhold" to "threshold"
 +      (spam-stat-split-fancy): Change "threshhold" to "threshold".
        (spam-stat-score-buffer-user-functions): Add :number custom type.
  
  2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2005-03-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-msg.el (gnus-confirm-mail-reply-to-news): Add
 -      gnus-expert-user to default.
 +      * gnus-msg.el (gnus-confirm-mail-reply-to-news):
 +      Add gnus-expert-user to default.
  
  2005-03-08  Juergen Kreileder  <jk@blackdown.de>  (tiny change)
  
  
  2005-03-06  Kevin Greiner  <kevin.greiner@compsol.cc>
  
 -      * gnus-start.el (gnus-convert-old-newsrc): Fixed numeric
 +      * gnus-start.el (gnus-convert-old-newsrc): Fix numeric
        comparison on string.
  
        * gnus-agent.el (gnus-agent-long-article, gnus-agent-short-article)
 -      (gnus-agent-score): Renamed category keywords to match gnus-cus.
 -      (gnus-agent-summary-fetch-series): Modified to protect against
 +      (gnus-agent-score): Rename category keywords to match gnus-cus.
 +      (gnus-agent-summary-fetch-series): Modify to protect against
        gnus-agent-summary-fetch-group clearing processable flags.
        (gnus-agent-synchronize-group-flags): Update live group buffer as
        synchronization may occur due to the user toggle the plugged
        successfully downloaded.
        (gnus-agent-expire-group-1): Avoid using markers when the overview
        is in ascending order; greatly improves performance.
 -      (gnus-agent-regenerate-group): Use
 -      gnus-agent-synchronize-group-flags to reset read status in both
 +      (gnus-agent-regenerate-group):
 +      Use gnus-agent-synchronize-group-flags to reset read status in both
        gnus and server.
 -      (gnus-agent-update-files-total-fetched-for): Fixed initial size.
 +      (gnus-agent-update-files-total-fetched-for): Fix initial size.
  
  2005-03-04  Reiner Steib  <Reiner.Steib@gmx.de>
  
  
  2005-02-25  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-sum.el (gnus-summary-move-article): Set
 -      gnus-sum-hint-move-is-internal for gnus-request-move-article and
 +      * gnus-sum.el (gnus-summary-move-article):
 +      Set gnus-sum-hint-move-is-internal for gnus-request-move-article and
        whatever it calls (right now, only nnimap-request-move article
        respects it).
  
 -      * nnimap.el (nnimap-request-move-article): When
 -      gnus-sum-hint-move-is-internal is set, don't do the extra
 +      * nnimap.el (nnimap-request-move-article):
 +      When gnus-sum-hint-move-is-internal is set, don't do the extra
        nnimap-request-article.
  
  2005-02-24  Reiner Steib  <Reiner.Steib@gmx.de>
  
  2005-02-21  Arne Jørgensen  <arne@arnested.dk>
  
 -      * nnrss.el (nnrss-verbose): Removed.
 +      * nnrss.el (nnrss-verbose): Remove.
        (nnrss-request-group): Use `nnheader-message' instead.
  
  2005-02-19  Mark Plaksin  <happy@usg.edu>  (tiny change)
        * smime.el (smime-cert-by-dns): Add doc-string.
        (smime-cert-by-ldap-1): Indent.
  
 -      * mml-smime.el (mml-smime-get-ldap-cert): Renamed from
 +      * mml-smime.el (mml-smime-get-ldap-cert): Rename from
        mml-smime-get-dns-ldap.
        (mml-smime-encrypt-query): Use new function.  Default to ldap.
  
        * mm-view.el (mm-display-inline-fontify): Allow the name parameter
        as well as the filename parameter.
  
 -      * mm-util.el (mm-decompress-buffer): Merge
 -      gnus-mime-jka-compr-maybe-uncompress.
 +      * mm-util.el (mm-decompress-buffer):
 +      Merge gnus-mime-jka-compr-maybe-uncompress.
        (mm-find-buffer-file-coding-system): Doc fix; force decompressing
        of compressed data.
  
  
  2005-01-26  Steve Youngs  <steve@sxemacs.org>
  
 -      * run-at-time.el: Removed.  It is no longer needed as
 +      * run-at-time.el: Remove.  It is no longer needed as
        timer-funcs.el in the xemacs-base package has a working version of
        `run-at-time'.
  
  2005-01-10  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus.el (gnus-user-agent): Use list of symbols instead of
 -      symbols.  Display full version number for (S)XEmacs.  Optionally
 -      display (S)XEmacs codename.
 +      symbols.  Display full version number for (S)XEmacs.
 +      Optionally display (S)XEmacs codename.
  
        * gnus-util.el (gnus-emacs-version): Update for new
        `gnus-user-agent'.
  
  2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * message.el (message-forbidden-properties): Fixed typo in doc
 +      * message.el (message-forbidden-properties): Fix typo in doc
        string.
  
  2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-util.el (gnus-replace-in-string): Added doc string.
 +      * gnus-util.el (gnus-replace-in-string): Add doc string.
  
        * nnmail.el (nnmail-split-header-length-limit): Increase to 2048
        to avoid problems when splitting mails with many recipients.
  
  2004-12-03  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-sum.el (gnus-summary-limit-to-recipient): Implement
 -      not-matching option.
 +      * gnus-sum.el (gnus-summary-limit-to-recipient):
 +      Implement not-matching option.
  
  2004-12-02  Reiner Steib  <Reiner.Steib@gmx.de>
  
  
  2004-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * message.el (message-strip-forbidden-properties): Bind
 -      buffer-read-only (etc) to nil.
 +      * message.el (message-strip-forbidden-properties):
 +      Bind buffer-read-only (etc) to nil.
  
  2004-11-23  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2004-11-14  Magnus Henoch  <mange@freemail.hu>
  
 -      * hashcash.el (hashcash-default-payment): Change default to 20
 -      (hashcash-default-accept-payment): Change default to 20
 -      (hashcash-process-alist): New variable
 -      (hashcash-generate-payment-async): Add
 -      (hashcash-already-paid-p): Add
 -      (hashcash-insert-payment): Don't generate payments twice
 -      (hashcash-insert-payment-async): Add
 -      (hashcash-insert-payment-async-2): Add
 -      (hashcash-cancel-async): Add
 -      (hashcash-wait-async): Add
 -      (hashcash-processes-running-p): Add
 -      (hashcash-wait-or-cancel): Add
 +      * hashcash.el (hashcash-default-payment): Change default to 20.
 +      (hashcash-default-accept-payment): Change default to 20.
 +      (hashcash-process-alist): New variable.
 +      (hashcash-generate-payment-async): Add.
 +      (hashcash-already-paid-p): Add.
 +      (hashcash-insert-payment): Don't generate payments twice.
 +      (hashcash-insert-payment-async): Add.
 +      (hashcash-insert-payment-async-2): Add.
 +      (hashcash-cancel-async): Add.
 +      (hashcash-wait-async): Add.
 +      (hashcash-processes-running-p): Add.
 +      (hashcash-wait-or-cancel): Add.
        (mail-add-payment): New optional argument.  Conditionally start
        asynchronous calculation.
 -      (mail-add-payment-async): Add
 +      (mail-add-payment-async): Add.
  
        * message.el (message-send-mail): Wait for asynchronous hashcash
        results.  Don't clobber existing X-Hashcash headers.
  
        * deuglify.el (gnus-outlook-deuglify): Add :version.
  
 -      * html2text.el: Beautify code.  Improve doc strings.  Some
 -      checkdoc cleanup.
 +      * html2text.el: Beautify code.  Improve doc strings.
 +      Some checkdoc cleanup.
        (html2text-get-attr, html2text-fix-paragraph): Simplify code.
  
  2004-11-01  Alfred M. Szmidt  <ams@kemisten.nu>  (tiny change)
        for people who want to override the default SpamAssassin over
        Bogofilter preference (when both are set).
        (spam-necessary-extra-headers): Add spam-use-bogofilter as an option.
 -      (spam-user-format-function-S): Check
 -      spam-summary-score-preferred-header.
 +      (spam-user-format-function-S):
 +      Check spam-summary-score-preferred-header.
        (spam-extra-header-to-number): Add X-Bogosity header parsing.
        (spam-user-format-function-S): Format the score correctly.
  
  2004-10-18  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-art.el (gnus-copy-article-ignored-headers): Default to
 -      nil.  Changed custom type.
 +      nil.  Change custom type.
  
  2004-10-17  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * netrc.el (netrc-machine-user-or-password): Add convenience wrapper
        for netrc-machine.
  
 -      * nnimap.el (nnimap-open-connection): Use
 -      netrc-machine-user-or-password.
 +      * nnimap.el (nnimap-open-connection):
 +      Use netrc-machine-user-or-password.
  
  2004-10-17  Richard M. Stallman  <rms@gnu.org>
  
  
        * pop3.el (pop3-maildrop, pop3-mailhost, pop3-port)
        (pop3-password-required, pop3-authentication-scheme)
 -      (pop3-leave-mail-on-server): Made customizable.
 +      (pop3-leave-mail-on-server): Make customizable.
        (pop3): New custom group.
        (pop3-retr): Remove `sleep-for' statements.
        Suggested by Dave Love <fx@gnu.org>.
        Windows/DOS.
  
        * imap.el (imap-parse-flag-list, imap-parse-body-extension)
 -      (imap-parse-body): Fix incorrect use of `assert'.  Suggested by
 -      Dave Love <fx@gnu.org>.
 +      (imap-parse-body): Fix incorrect use of `assert'.
 +      Suggested by Dave Love <fx@gnu.org>.
  
        * mml.el (mml-minibuffer-read-disposition): Require match.
        Suggested by Dave Love <fx@gnu.org>.
  
        * mm-decode.el (mm-dissect-singlepart): Revert 2004-08-18 change.
  
 -      * gnus-topic.el (gnus-topic-hierarchical-parameters): Use
 -      gnus-current-topics instead of gnus-current-topic.
 +      * gnus-topic.el (gnus-topic-hierarchical-parameters):
 +      Use gnus-current-topics instead of gnus-current-topic.
  
  2004-10-06  Jesper Harder  <harder@ifa.au.dk>
  
        (nnsoup-unpack-packets, nnsoup-make-active): Simplify.
  
        * nnspool.el (nnspool-find-id): Use with-temp-buffer.
 -      (nnspool-sift-nov-with-sed): Use last
 +      (nnspool-sift-nov-with-sed): Use last.
        (nnspool-retrieve-headers-with-nov): Use mapc.
        (nnspool-request-newgroups): Use dolist.
        (nnspool-request-group): Use last.
  
  2004-10-01  Kevin Greiner  <kgreiner@compsol.cc>
  
 -      * gnus-agent.el (gnus-agent-synchronize-group-flags): Added
 -      support for sync'ing tick marks.
 +      * gnus-agent.el (gnus-agent-synchronize-group-flags):
 +      Add support for sync'ing tick marks.
  
  2004-10-01  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2004-10-01  Kevin Greiner  <kgreiner@compsol.cc>
  
 -      * gnus-agent.el (gnus-agent-synchronize-group-flags): When
 -      necessary, pass full group name to gnus-request-set-marks.
 +      * gnus-agent.el (gnus-agent-synchronize-group-flags):
 +      When necessary, pass full group name to gnus-request-set-marks.
  
  2004-10-01  Simon Josefsson  <jas@extundo.com>
  
  
  2004-09-28  Kevin Greiner  <kgreiner@compsol.cc>
  
 -      * gnus-agent.el (gnus-agent-synchronize-group-flags): Replaced
 +      * gnus-agent.el (gnus-agent-synchronize-group-flags): Replace
        gnus-requst-update-info with explicit code to sync the in-memory
        info read flags with the marks being sync'd to the backend.
  
 -      *gnus-util.el (gnus-pp): Added optional stream to match pp API.
 +      *gnus-util.el (gnus-pp): Add optional stream to match pp API.
  
  2004-09-28  Teodor Zlatanov  <tzz@lifelogs.com>
  
  
  2004-09-28  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-registry.el (gnus-registry-split-fancy-with-parent): Use
 -      gnus-extract-references instead of gnus-split-references.
 +      * gnus-registry.el (gnus-registry-split-fancy-with-parent):
 +      Use gnus-extract-references instead of gnus-split-references.
  
        * gnus-util.el (gnus-extract-references): Add new function, analogous
        to gnus-split-references but extracts only the message-ID without
  
  2004-09-25  Kevin Greiner  <kgreiner@compsol.cc>
  
 -      * gnus-agent.el (gnus-agent-check-overview-buffer): Fixed range of
 +      * gnus-agent.el (gnus-agent-check-overview-buffer): Fix range of
        deletion to remove entire duplicate line.  Fixes merged article
        number bug.
  
        Updates marks in memory (in the info structure) AND in the
        backend.
  
 -      * gnus-util.el (gnus-remassoc): Fixed typo in documentation.
 +      * gnus-util.el (gnus-remassoc): Fix typo in documentation.
  
 -      * nnagent.el (nnagent-request-set-mark): Use
 -      gnus-agent-synchronize-group-flags, not backend's request-set-mark
 +      * nnagent.el (nnagent-request-set-mark):
 +      Use gnus-agent-synchronize-group-flags, not backend's request-set-mark
        method, to ensure that synchronization updates marks in the
        backend and in the info (in memory) structure.
  
        an error.
  
        * gnus-int.el (gnus-request-set-mark, gnus-request-update-mark):
 -      Reverted 2004-09-21 change.  The backend must be opened while
 +      Revert 2004-09-21 change.  The backend must be opened while
        synchronizing flags even when the backend stores the flags
        locally.
  
  
        * nnimap.el (nnimap-split-download-body, nnimap-dont-close)
        (nnimap-retrieve-groups-asynchronous): Add :version.
 -      (nnimap-close-asynchronous): Add :version.  Fixed typo in doc string.
 +      (nnimap-close-asynchronous): Add :version.  Fix typo in doc string.
  
        * mml.el (mml-content-disposition-parameters)
        (mml-insert-mime-headers-always): Add :version.
  
  2004-09-09  Kevin Greiner  <kgreiner@compsol.cc>
  
 -      * gnus-agent.el (directory-files-and-attributes): Optionally
 -      defined to support XEmacs.
 +      * gnus-agent.el (directory-files-and-attributes):
 +      Optionally defined to support XEmacs.
  
  2004-09-09  Kevin Greiner  <kgreiner@compsol.cc>
  
        article numbers even when local .overview file is missing.
        (gnus-agent-read-article-number): New function.  Only accepts
        27-bit article numbers.
 -      (gnus-agent-copy-nov-line, gnus-agent-uncached-articles): Use
 -      gnus-agent-read-article-number.
 +      (gnus-agent-copy-nov-line, gnus-agent-uncached-articles):
 +      Use gnus-agent-read-article-number.
        (gnus-agent-braid-nov): Rewrote to validate article numbers coming
        from backend while recognizing that article numbers in .overview
        must be valid.
 -      (gnus-agent-update-files-total-fetched-for): Use
 -      directory-files-and-attributes to improve performance.
 -      * gnus-int.el (gnus-request-move-article): Use
 -      gnus-agent-unfetch-articles in place of gnus-agent-expire to
 +      (gnus-agent-update-files-total-fetched-for):
 +      Use directory-files-and-attributes to improve performance.
 +      * gnus-int.el (gnus-request-move-article):
 +      Use gnus-agent-unfetch-articles in place of gnus-agent-expire to
        improve performance.
  
 -      * gnus-start.el (gnus-convert-old-newsrc): Changed message text as
 +      * gnus-start.el (gnus-convert-old-newsrc): Change message text as
        some users confused by references to .newsrc when they only have a
        .newsrc.eld file.
        (gnus-convert-mark-converter-prompt)
 -      (gnus-convert-converter-needs-prompt): Fixed use of property list.
 +      (gnus-convert-converter-needs-prompt): Fix use of property list.
        * legacy-gnus-agent.el (gnus-agent-convert-to-compressed-agentview-prompt):
        New function.  Used internally to only display 'gnus converting
        files' message when actually necessary.
  
 -      * gnus-sum.el (): Removed (require 'gnus-agent) as required
 +      * gnus-sum.el (): Remove (require 'gnus-agent) as required
        methods now autoloaded.
  
  2004-09-03  Katsumi Yamaoka  <yamaoka@jpl.org>
        * message.el: Don't autoload sha1 (there is a autoload cookie in
        sha1.el).
  
 -      * sha1-el.el: Renamed to sha1.el.
 +      * sha1-el.el: Rename to sha1.el.
  
  2004-08-30  Juanma Barranquero  <lektu@terra.es>
  
  
        * gnus-sum.el (gnus-summary-make-menu-bar): Add help texts.
  
 -      * gnus-art.el (gnus-button-alist): Improve
 -      `gnus-button-handle-library' entry.
 +      * gnus-art.el (gnus-button-alist):
 +      Improve `gnus-button-handle-library' entry.
  
  2004-08-19  Sebastian Freundt  <hroptatyr@gna.org>  (tiny change)
  
 -      * nnmaildir.el (nnmaildir--emlink-p, nnmaildir--enoent-p): Use
 -      downcase, since XEmacs capitalizes error messages differently.
 +      * nnmaildir.el (nnmaildir--emlink-p, nnmaildir--enoent-p):
 +      Use downcase, since XEmacs capitalizes error messages differently.
  
  2004-08-18  Jesper Harder  <harder@ifa.au.dk>
  
  
  2004-08-18  Florian Weimer  <fw@deneb.enyo.de>
  
 -      * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Bind
 -      `mm-fill-flowed'.
 +      * gnus-sum.el (gnus-summary-force-verify-and-decrypt):
 +      Bind `mm-fill-flowed'.
  
        * mm-decode.el (mm-dissect-singlepart): Check it.
  
  
  2004-08-06  Simon Josefsson  <jas@extundo.com>
  
 -      * gnus-sum.el (gnus-article-loose-mime): Change default to t.  Doc
 -      fix.
 +      * gnus-sum.el (gnus-article-loose-mime): Change default to t.
 +      Doc fix.
  
  2004-08-05  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2004-08-04  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * gnus-registry.el (gnus-registry-split-fancy-with-parent): Try
 -      to append in-reply-to: data to the references: header.
 +      * gnus-registry.el (gnus-registry-split-fancy-with-parent):
 +      Try to append in-reply-to: data to the references: header.
  
 -      * netrc.el: Remove old encryption support, autoload gnus-encrypt.el
 +      * netrc.el: Remove old encryption support, autoload gnus-encrypt.el.
        (netrc-parse): Use gnus-encrypt.el functions.
  
        * gnus-encrypt.el: Add new file for encryption support; currently
  
  2004-07-25  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * rfc2047.el (rfc2047-encode-region): Don't infloop.  Suggested by
 -      Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>.
 +      * rfc2047.el (rfc2047-encode-region): Don't infloop.
 +      Suggested by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>.
  
  2004-07-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  
  2004-07-02  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * mm-encode.el (mm-content-transfer-encoding-defaults): Use
 -      qp-or-base64 for the application/* types.
 +      * mm-encode.el (mm-content-transfer-encoding-defaults):
 +      Use qp-or-base64 for the application/* types.
  
  2004-07-02  Joakim Verona  <joakim@verona.se>  (tiny change)
  
  
  2004-06-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-group.el (gnus-group-get-new-news-this-group): Don't
 -      update info that isn't there.
 +      * gnus-group.el (gnus-group-get-new-news-this-group):
 +      Don't update info that isn't there.
  
  2004-06-29  Ilya N. Golubev  <gin@mo.msk.ru>.
  
        (mm-coding-system-priorities): Use shift_jis and iso-8859-1
        instead of japanese-shift-jis and iso-latin-1 respectively in
        order to share the default value with both Emacs and XEmacs-mule.
 -      (mm-mule-charset-to-mime-charset): Make
 -      mm-coding-system-priorities effective.
 +      (mm-mule-charset-to-mime-charset):
 +      Make mm-coding-system-priorities effective.
        (mm-sort-coding-systems-predicate): Canonicalize coding-systems
        while predicating of candidates upon the priorities.
  
  2004-06-27  Jesper Harder  <harder@ifa.au.dk>
  
 -      * gnus-sum.el (gnus-summary-make-menu-bar): Add
 -      gnus-uu-invert-processable.
 +      * gnus-sum.el (gnus-summary-make-menu-bar):
 +      Add gnus-uu-invert-processable.
  
        * gnus.el: Autoload gnus-uu-invert-processable.
  
  2004-06-23  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * gnus-cite.el (gnus-cite-ignore-quoted-from): New user option.
 -      (gnus-cite-parse): Ignore quoted envelope From_.  Suggested by
 -      Karl Chen <quarl@nospam.quarl.org>.
 +      (gnus-cite-parse): Ignore quoted envelope From_.
 +      Suggested by Karl Chen <quarl@nospam.quarl.org>.
  
  2004-06-23  Jesper Harder  <harder@ifa.au.dk>
  
        (spam-move-ham-routine): Add code to copy/move ham or spam.
        (spam-fetch-field-fast): Improve doc and code, plus allow the
        'number request.
 -      (spam-list-of-checks, spam-list-of-statistical-checks): Remove
 -      variables.
 +      (spam-list-of-checks, spam-list-of-statistical-checks):
 +      Remove variables.
        (spam-split, spam-find-spam): Use the new backend code.
        (spam-registration-functions): Remove variable.
        (spam-unregister-routine): Add convenience wrapper.
        (nnheader-fake-message-id-p): Change regex to accommodate new fake
        ID format.
  
 -      * gnus-sum.el (gnus-get-newsgroup-headers): Call
 -      nnheader-generate-fake-message-id with the article number.
 +      * gnus-sum.el (gnus-get-newsgroup-headers):
 +      Call nnheader-generate-fake-message-id with the article number.
  
  2004-06-12  YAGI Tatsuya  <ynyaaa@ybb.ne.jp>  (tiny change)
  
  
  2004-06-06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * message.el (message-cite-articles-with-x-no-archive): New
 -      variable.
 +      * message.el (message-cite-articles-with-x-no-archive):
 +      New variable.
        (message-cite-original): Use it.
  
  2004-06-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  2004-05-28  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-art.el (gnus-button-alist): Fixed regexp for manual links.
 +      * gnus-art.el (gnus-button-alist): Fix regexp for manual links.
  
 -      * gnus-group.el (gnus-group-get-new-news-this-group): Added
 -      doc-string.
 +      * gnus-group.el (gnus-group-get-new-news-this-group):
 +      Add doc-string.
  
 -      * gnus-start.el (gnus-activate-group): Added doc-string.
 +      * gnus-start.el (gnus-activate-group): Add doc-string.
  
  2004-05-28  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2004-05-27  Daniel Pittman  <daniel@rimspace.net>
  
 -      * spam.el (spam-report-resend-register-routine): Allow
 -      spam-report-resend-to to be a group parameter or a global value.
 +      * spam.el (spam-report-resend-register-routine):
 +      Allow spam-report-resend-to to be a group parameter or a global value.
  
  2004-05-26  Simon Josefsson  <jas@extundo.com>
  
        * starttls.el: Merge with my GNUTLS based starttls.el.
        (starttls-gnutls-program, starttls-use-gnutls)
        (starttls-extra-arguments, starttls-process-connection-type)
 -      (starttls-connect, starttls-failure, starttls-success): New
 -      variables.
 +      (starttls-connect, starttls-failure, starttls-success):
 +      New variables.
        (starttls-program, starttls-extra-args): Doc fix.
 -      (starttls-negotiate-gnutls, starttls-open-stream-gnutls): New
 -      functions.
 -      (starttls-negotiate, starttls-open-stream): Check
 -      `starttls-use-gnutls' and pass on to corresponding *-gnutls
 +      (starttls-negotiate-gnutls, starttls-open-stream-gnutls):
 +      New functions.
 +      (starttls-negotiate, starttls-open-stream):
 +      Check `starttls-use-gnutls' and pass on to corresponding *-gnutls
        function if it is set.
  
  2004-05-27  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2004-05-26  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * spam.el (spam-mark-new-messages-in-spam-group-as-spam): Add
 -      variable.
 +      * spam.el (spam-mark-new-messages-in-spam-group-as-spam):
 +      Add variable.
        (spam-mark-junk-as-spam-routine): Use it.  Allow to disable
        assigning the spam-mark to new messages.
  
  2004-05-26  Adam Sjøgren  <asjo@koldfront.dk>  (tiny change)
  
 -      (spam-ham-copy-or-move-routine): Don't declare `todo' twice.
 +      * spam.el (spam-ham-copy-or-move-routine): Don't declare `todo' twice.
  
  2004-05-26  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  
  2004-05-24  Daniel Pittman  <daniel@rimspace.net>
  
 -      * spam-report.el (spam-report-resend-to, spam-report-resend): Start
 -      with resend-to set to nil, and then ask the user if necessary.
 +      * spam-report.el (spam-report-resend-to, spam-report-resend):
 +      Start with resend-to set to nil, and then ask the user if necessary.
        (spam-report-resend): spam-report-resend takes a list of articles, not
        separate article numbers.
  
        (spam-crm114-register-spam-routine)
        (spam-crm114-unregister-spam-routine)
        (spam-crm114-register-ham-routine)
 -      (spam-crm114-unregister-ham-routine): Add CRM114 support.  From
 -      asjo@koldfront.dk (Adam Sjøgren).
 +      (spam-crm114-unregister-ham-routine): Add CRM114 support.
 +      From asjo@koldfront.dk (Adam Sjøgren).
  
        * gnus.el: Add spam-use-crm114.
  
  
  2004-05-20  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * rfc2047.el (rfc2047-encode-function-alist): Renamed from
 +      * rfc2047.el (rfc2047-encode-function-alist): Rename from
        `rfc2047-encoding-function-alist' in order to avoid conflicting
        with the old version.
        (rfc2047-encode-region): Concatenate words containing non-ASCII
        iso-2022-* charsets.
        (rfc2047-fold-region): Use existing whitespace for LWSP; make it
        sure not to break a line just after the header name.
 -      (rfc2047-b-encode-region): Removed.
 +      (rfc2047-b-encode-region): Remove.
        (rfc2047-b-encode-string): New function.
 -      (rfc2047-q-encode-region): Removed.
 +      (rfc2047-q-encode-region): Remove.
        (rfc2047-q-encode-string): New function.
  
        * mm-util.el (mm-replace-in-string): New function.
  
  2004-05-20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-msg.el (gnus-inews-make-draft-meta-information): Really
 -      get it right.
 +      * gnus-msg.el (gnus-inews-make-draft-meta-information):
 +      Really get it right.
        (gnus-inews-make-draft): Really.
  
  2004-05-19  Ben Menasha  <bmenasha@benmenasha.net>
        * gnus-msg.el (gnus-inews-make-draft-meta-information): Fix quote
        stuff.
  
 -      * gnus-start.el (gnus-subscribe-hierarchical-interactive): Match
 -      on real group name.
 +      * gnus-start.el (gnus-subscribe-hierarchical-interactive):
 +      Match on real group name.
  
        * gnus-art.el (gnus-signature-limit): Doc fix.
  
  
  2004-05-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-draft.el (gnus-draft-send): Bind
 -      rfc2047-encode-encoded-words.
 +      * gnus-draft.el (gnus-draft-send):
 +      Bind rfc2047-encode-encoded-words.
  
        * rfc2047.el (rfc2047-encode-region): Encode =? strings.
        (rfc2047-encodable-p): Say that =? needs encoding.
  
  2004-05-19  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-msg.el (gnus-summary-followup-with-original): Document
 -      yanking of region when active.
 +      * gnus-msg.el (gnus-summary-followup-with-original):
 +      Document yanking of region when active.
  
  2004-05-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2004-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-group.el (gnus-group-jump-to-group-prompt): Allow an alist.
 -      (gnus-group-jump-to-group): Added prefix argument using
 +      (gnus-group-jump-to-group): Add prefix argument using
        `gnus-group-jump-to-group-prompt'.  Query before jumping to
        non-active group.
  
  2004-05-18  Reiner Steib  <Reiner.Steib@gmx.de>
  
        * gnus-picon.el (gnus-picon-style): New variable.
 -      (gnus-picon-insert-glyph): Added optional `nostring' argument.
 -      (gnus-picon-transform-address): Support `gnus-picon-style'.  From
 -      Jesper Harder <harder@ifa.au.dk>.
 +      (gnus-picon-insert-glyph): Add optional `nostring' argument.
 +      (gnus-picon-transform-address): Support `gnus-picon-style'.
 +      From Jesper Harder <harder@ifa.au.dk>.
  
  2004-05-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
        (message-fill-field-address): Rename.
        (message-narrow-to-field): Find the start of the header.
        (message-header-format-alist): Don't pre-fill.
 -      (message-fill-header): Removed.
 +      (message-fill-header): Remove.
        (message-insert-header): New function.
        (message-shorten-references): Use it.
  
  
  2004-05-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * message.el (message-idna-inside-rhs-p): Removed.
 +      * message.el (message-idna-inside-rhs-p): Remove.
        (message-idna-to-ascii-rhs-1): Use proper address parsing.
  
 -      * gnus-art.el (gnus-emphasis-alist): Removed strikethru; too many
 +      * gnus-art.el (gnus-emphasis-alist): Remove strikethru; too many
        false positives.
  
  2004-05-16  Kim-Minh Kaplan  <kmkaplan-AwwS6Bc0PDVoiYX5Tdu9fQ@public.gmane.org>
  
  2004-05-15  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * spam.el (spam-summary-prepare-exit): Fixed (length).
 +      * spam.el (spam-summary-prepare-exit): Fix (length).
  
  2004-05-14  Teodor Zlatanov  <tzz@lifelogs.com>
  
  
  2004-05-14  Kai Grossjohann  <kgrossjo@eu.uu.net>
  
 -      * nntp.el (nntp-request-set-mark, nntp-request-update-info): Call
 -      nntp-possibly-create-directory, not nntp-possibly-change-group.
 +      * nntp.el (nntp-request-set-mark, nntp-request-update-info):
 +      Call nntp-possibly-create-directory, not nntp-possibly-change-group.
        (nntp-marks-changed-p): New arg SERVER.
        (nntp-request-update-info): Adjust caller.
  
        (nntp-marks-modtime, nntp-marks-directory): New variables.
        (nntp-request-set-mark, nntp-request-update-info)
        (nntp-possibly-create-directory, nntp-marks-changed-p)
 -      (nntp-save-marks, nntp-open-marks, nntp-marks-directory): New
 -      functions.
 +      (nntp-save-marks, nntp-open-marks, nntp-marks-directory):
 +      New functions.
  
  2004-05-12  Jesper Harder  <harder@ifa.au.dk>
  
 -      * gnus-score.el (gnus-score-insert-help): Use
 -      gnus-select-lowest-window.
 +      * gnus-score.el (gnus-score-insert-help):
 +      Use gnus-select-lowest-window.
  
        * gnus-ems.el (gnus-select-lowest-window): Copy definition of
        appt-select-lowest-window and rename to gnus-select-lowest-window.
  
  2004-05-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus-agent.el (gnus-agent-read-agentview): Inline
 -      gnus-uncompress-range.
 +      * gnus-agent.el (gnus-agent-read-agentview):
 +      Inline gnus-uncompress-range.
  
  2004-05-01  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
  
  
  2004-04-30  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
  
 -      * gnus.el (spam-process, spam-autodetect-methods): Add
 -      bsfilter and bsfilter-headers.
 +      * gnus.el (spam-process, spam-autodetect-methods):
 +      Add bsfilter and bsfilter-headers.
  
        * spam.el (spam-bsfilter): New customize group.
        (spam-use-bsfilter, spam-use-bsfilter-headers, spam-bsfilter-path)
        * spam.el (spam-summary-prepare-exit)
        (spam-mark-junk-as-spam-routine, spam-fetch-field-fast)
        (spam-split, spam-find-spam, spam-log-undo-registration)
 -      (spam-check-blackholes, spam-enter-ham-BBDB): Changed message
 +      (spam-check-blackholes, spam-enter-ham-BBDB): Change message
        level from 5 to 6.
  
  2004-04-26  Katsumi Yamaoka  <yamaoka@jpl.org>
  2004-04-15  Kevin Greiner  <kgreiner@xpediantsolutions.com>
  
        * legacy-gnus-agent.el
 -      (gnus-agent-convert-to-compressed-agentview): Fixed typos with
 +      (gnus-agent-convert-to-compressed-agentview): Fix typos with
        help from Florian Weimer <fw@deneb.enyo.de>
  
  2004-04-15  Katsumi Yamaoka  <yamaoka@jpl.org>
        `method' parameter is nil.  Don't write nil entries into the
        active file.
        (gnus-agent-get-group-info): New function.
 -      (gnus-agent-fetch-articles): Use
 -      gnus-agent-update-files-total-fetched-for to increment disk space
 +      (gnus-agent-fetch-articles):
 +      Use gnus-agent-update-files-total-fetched-for to increment disk space
        used.
 -      (gnus-agent-fetch-headers, gnus-agent-save-alist): Use
 -      gnus-agent-update-view-total-fetched-for to increment disk space
 +      (gnus-agent-fetch-headers, gnus-agent-save-alist):
 +      Use gnus-agent-update-view-total-fetched-for to increment disk space
        used.
 -      (gnus-agent-get-local): Added optional parameters to avoid calling
 +      (gnus-agent-get-local): Add optional parameters to avoid calling
        gnus-group-real-name and gnus-find-method-for-group.
        (gnus-agent-set-local): Delete stored entry if either min, or max,
        are nil.
 -      (gnus-agent-fetch-session): Reworded error/quit messages.  On
 -      quit, use gnus-agent-regenerate-group to record existence of any
 +      (gnus-agent-fetch-session): Reworded error/quit messages.
 +      On quit, use gnus-agent-regenerate-group to record existence of any
        articles fetched to disk before the quit occurred.
        (gnus-agent-expire-group-1): Use gnus-agent-with-refreshed-group,
        gnus-agent-update-view-total-fetched-for, and
        gnus-agent-update-files-total-fetched-for to decrement disk space
        used.
 -      (gnus-agent-retrieve-headers): Use
 -      gnus-agent-update-view-total-fetched-for to increment disk space
 +      (gnus-agent-retrieve-headers):
 +      Use gnus-agent-update-view-total-fetched-for to increment disk space
        used.
        (gnus-agent-regenerate-group): Replace gnus-group-update-group
        with gnus-agent-update-files-total-fetched-for to decrement disk
        (gnus-agent-update-view-total-fetched-for): New function.
        (gnus-agent-total-fetched-for): New function.
  
 -      * gnus-cache.el (gnus-cache-save-buffers): Use
 -      gnus-cache-update-overview-total-fetched-for to change disk space
 +      * gnus-cache.el (gnus-cache-save-buffers):
 +      Use gnus-cache-update-overview-total-fetched-for to change disk space
        used by this group.
 -      (gnus-cache-possibly-enter-article): Use
 -      gnus-cache-update-file-total-fetched-for to increment disk space
 +      (gnus-cache-possibly-enter-article):
 +      Use gnus-cache-update-file-total-fetched-for to increment disk space
        used by this group.
 -      (gnus-cache-possibly-remove-article): Use
 -      gnus-cache-update-file-total-fetched-for to decrement disk space
 +      (gnus-cache-possibly-remove-article):
 +      Use gnus-cache-update-file-total-fetched-for to decrement disk space
        used by this group.
        (gnus-cache-generate-nov-databases): Purge total fetched cache.
        (gnus-cache-rename-group): New function.
  
        * gnus-group.el: Require gnus-sum and autoload functions to
        resolve warnings when gnus-group.el compiled alone.
 -      (gnus-group-line-format): Documented new %F
 +      (gnus-group-line-format): Documented new %F.
        (size of Fetched data) group line format; identifies disk space
        used by agent and cache.
        (gnus-group-line-format-alist): Defined new F format.
  
  2004-03-27  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * message.el (message-exchange-point-and-mark): Use
 -      message-mark-active-p.  Suggested by Jesper Harder
 +      * message.el (message-exchange-point-and-mark):
 +      Use message-mark-active-p.  Suggested by Jesper Harder
        <harder@ifa.au.dk>.
  
  2004-03-26  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2004-03-19  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * gnus-art.el (gnus-mime-recompute-hierarchical-structure): New
 -      user option.
 +      * gnus-art.el (gnus-mime-recompute-hierarchical-structure):
 +      New user option.
        (gnus-mime-multipart-functions): Doc and customization fix.
        (gnus-article-mime-hierarchy): New variable.
        (gnus-article-mime-hierarchy-next): New variable.
  
  2004-03-09  Kevin Greiner  <kgreiner@xpediantsolutions.com>
  
 -      * gnus-agent.el (gnus-agent-read-local): Bind
 -      nnheader-file-coding-system to gnus-agent-file-coding-system to
 +      * gnus-agent.el (gnus-agent-read-local):
 +      Bind nnheader-file-coding-system to gnus-agent-file-coding-system to
        avoid the implicit assumption that they will always be equal.
        (gnus-agent-save-local): Bind buffer-file-coding-system, not
        coding-system-for-write, as the with-temp-file macro first prints
  
  2004-03-08  Kevin Greiner  <kgreiner@xpediantsolutions.com>
  
 -      * gnus-agent.el (gnus-agent-read-agentview): Removed support for
 +      * gnus-agent.el (gnus-agent-read-agentview): Remove support for
        old file versions.
 -      (gnus-group-prepare-hook): Removed function that converted list
 +      (gnus-group-prepare-hook): Remove function that converted list
        form of gnus-agent-expire-days to group properties.
  
        * gnus-int.el: Autoload gnus-agent-regenerate-group.
        (gnus-request-accept-article): Re-indented.
  
        * gnus-start.el (gnus-convert-old-newsrc): Registered new
 -      converters to handle old agent file formats.  Added logic for a
 +      converters to handle old agent file formats.  Add logic for a
        "backup before upgrading warning".
        (gnus-convert-mark-converter-prompt): Developers can mark
        functions as needing (default), or not needing,
  
  2004-03-04  Kevin Greiner  <kgreiner@xpediantsolutions.com>
  
 -      * gnus-agent.el (gnus-agent-file-header-cache): Removed.
 +      * gnus-agent.el (gnus-agent-file-header-cache): Remove.
        (gnus-agent-possibly-alter-active): Avoid null in numeric
        comparison.
        (gnus-agent-set-local): Refuse to save null in local object table.
        * gnus-agent.el (gnus-agent-read-local, gnus-agent-save-local):
        Don't bind "obarray".
  
 -      * gnus-sum.el (gnus-thread-sort-functions): Added
 -      `gnus-thread-sort-by-most-recent-number' and
 +      * gnus-sum.el (gnus-thread-sort-functions):
 +      Add `gnus-thread-sort-by-most-recent-number' and
        `gnus-thread-sort-by-most-recent-date'.
        Reported by Kai Grossjohann <kai@emptydomain.de>.
  
  
  2004-03-02  Kevin Greiner  <kgreiner@xpediantsolutions.com>
  
 -      * gnus-cus.el (gnus-agent-customize-category): Removed
 -      ignore-errors macro reference that required cl to be loaded at
 +      * gnus-cus.el (gnus-agent-customize-category):
 +      Remove ignore-errors macro reference that required cl to be loaded at
        run-time.
  
        * gnus-range.el (gnus-sorted-range-intersection): Now accepts
        * gnus-msg.el (gnus-setup-message): Ignore an article copy while
        parsing gnus-posting-styles when the message is not for replying.
  
 -      * nnrss.el (nnrss-opml-export): Use
 -      mm-set-buffer-file-coding-system instead of
 +      * nnrss.el (nnrss-opml-export):
 +      Use mm-set-buffer-file-coding-system instead of
        set-buffer-file-coding-system.
  
  2004-02-27  Jesper Harder  <harder@ifa.au.dk>
  
        * spam-stat.el (spam-stat-washing-hook): New option.
        (spam-stat-buffer-words): Use it.
 -      (spam-stat-process-directory, spam-stat-test-directory): Use
 -      insert-file-contents-literally.
 +      (spam-stat-process-directory, spam-stat-test-directory):
 +      Use insert-file-contents-literally.
        (spam-stat-coding-system): New variable.
        (spam-stat-load, spam-stat-save): Use it.
  
  2004-02-25  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -      * spam-report.el (spam-report-plug-agent): Quote
 -      spam-report-url-to-file and spam-report-url-ping-plain.
 +      * spam-report.el (spam-report-plug-agent):
 +      Quote spam-report-url-to-file and spam-report-url-ping-plain.
  
  2004-02-25  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-art.el (gnus-button-alist, gnus-header-button-alist): Allow
 -      / in mailto URLs.
 +      * gnus-art.el (gnus-button-alist, gnus-header-button-alist):
 +      Allow / in mailto URLs.
  
  2004-02-24  Reiner Steib  <Reiner.Steib@gmx.de>
  
        (spam-report-url-ping-temp-agent-function, spam-report-plug-agent)
        (spam-report-unplug-agent): Doc fixes.
        (spam-report-url-ping-mm-url, spam-report-url-to-file)
 -      (spam-report-agentize, spam-report-deagentize): Autoload
 -
 -2004-02-24  Katsumi Yamaoka  <yamaoka@jpl.org>
 +      (spam-report-agentize, spam-report-deagentize):
 +      Autoload 2004-02-24  Katsumi Yamaoka  <yamaoka@jpl.org>
  
        * message.el (message-setup-fill-variables): Add mml tags to
        paragraph-start and paragraph-separate.  Suggested by Andrew Korty
        (nntp-send-buffer, nntp-retrieve-groups, nntp-handle-authinfo)
        (nntp-possibly-change-group): Use it.
  
 -      * nnnil.el (nnnil-retrieve-headers, nnnil-request-list): Use
 -      with-current-buffer.
 +      * nnnil.el (nnnil-retrieve-headers, nnnil-request-list):
 +      Use with-current-buffer.
  
  2004-02-12  TAKAI Kousuke  <tak@kmc.gr.jp>
  
  
  2004-02-03  Jesper Harder  <harder@ifa.au.dk>
  
 -      * spam.el (spam-check-spamoracle, spam-spamoracle-learn): Fix
 -      format string mismatch.
 +      * spam.el (spam-check-spamoracle, spam-spamoracle-learn):
 +      Fix format string mismatch.
  
        * sieve.el (sieve-deactivate-all): do.
  
        New macros and functions.
        * nnmaildir.el (nnmaildir--group-maxnum, nnmaildir--update-nov):
        Handle > NLINK_MAX messages.
 -      * nnmaildir.el (nnmaildir-request-set-mark): Use
 -      nnmaildir--emlink-p and nnmaildir--eexist-p.
 +      * nnmaildir.el (nnmaildir-request-set-mark):
 +      Use nnmaildir--emlink-p and nnmaildir--eexist-p.
  
  2004-01-25  Alex Schroeder  <alex@gnu.org>
  
  
  2004-01-23  Jesper Harder  <harder@ifa.au.dk>
  
 -      * spam-stat.el (spam-stat-store-gnus-article-buffer): Use
 -      with-current-buffer.
 +      * spam-stat.el (spam-stat-store-gnus-article-buffer):
 +      Use with-current-buffer.
        (spam-stat-store-current-buffer): Use insert-buffer-substring to
        avoid consing a string.
  
        (gnus-agent-prompt-send-queue): New variables.
        (gnus-agent-send-mail): Use gnus-agent-queue-mail.
        * gnus-draft.el (gnus-group-send-queue): Pass the group name
 -      "nndraft:queue" along to gnus-draft-send.  Use
 -      gnus-agent-prompt-send-queue.
 +      "nndraft:queue" along to gnus-draft-send.
 +      Use gnus-agent-prompt-send-queue.
        (gnus-draft-send): Rebind gnus-agent-queue-mail to nil when group
        is "nndraft:queue".  Suggested by Gaute Strokkenes
        <gs234@srcf.ucam.org>
  
 -      * gnus-agent.el (agent-disable-undownloaded-faces): Removed
 -      (agent-enable-undownloaded-faces): Added
 +      * gnus-agent.el (agent-disable-undownloaded-faces): Remove.
 +      (agent-enable-undownloaded-faces): Add.
        (gnus-agent-cat-groups): Use eval-and-compile, not
        eval-when-compile, to define gnus-agent-set-cat-groups as the setf
        method of gnus-agent-cat-groups even when the buffer has been
        evaled.
 -      (gnus-agent-save-active, gnus-agent-save-active-1): Merged to
 +      (gnus-agent-save-active, gnus-agent-save-active-1): Merge to
        delete gnus-agent-save-active-1.
 -      (gnus-agent-save-groups): Deleted.  Identical to
 +      (gnus-agent-save-groups): Delete.  Identical to
        gnus-agent-save-active.
        (gnus-agent-write-active): No longer adjust agent's copy of active
        file as agent's adjustments are now stored in their own
 -      file.  Removed optional parameter.
 +      file.  Remove optional parameter.
        (gnus-agent-possibly-alter-active): Ignore groups of unagentized
        servers.  Add use of min/max range limits from server's local
        file.
 -      (gnus-agent-save-alist): Removed unused optional argument.
 +      (gnus-agent-save-alist): Remove unused optional argument.
        (gnus-agent-load-local, gnus-agent-read-and-cache-local)
        (gnus-agent-read-local, gnus-agent-save-local, gnus-agent-get-local)
        (gnus-agent-set-local): A per-server file that keeps min/max range
        for altering many active ranges.
        (gnus-agent-expire-group, gnus-agent-expire): No longer save the
        active file (local makes it unnecessary).
 -      (gnus-agent-regenerate-group): Fixed XEmacs compatibility.
 +      (gnus-agent-regenerate-group): Fix XEmacs compatibility.
  
 -      * gnus-cus.el (agent-disable-undownloaded-faces): Removed
 -      (agent-enable-undownloaded-faces): Added
 +      * gnus-cus.el (agent-disable-undownloaded-faces): Remove.
 +      (agent-enable-undownloaded-faces): Add.
  
        * gnus-draft.el (gnus-draft-send): Bind gnus-agent-queue-mail to
        disable it when sending to "nndraft:queue".
        numbers of articles.  Use gnus-range-map to avoid having to
        uncompress the unread list.
        (gnus-group-archive-directory, gnus-group-recent-archive-directory):
 -      Fixed invalid ange-ftp reference.
 +      Fix invalid ange-ftp reference.
  
        * gnus-range.el (gnus-range-map): Iterate over list or sequence.
        (gnus-sorted-range-intersection): Intersection of two ranges
        and agentized articles.
        (gnus-convert-old-newsrc): Rewrote in anticipation of having
        multiple version-dependent converters.
 -      (gnus-groups-to-gnus-format): Replaced gnus-agent-save-groups with
 +      (gnus-groups-to-gnus-format): Replace gnus-agent-save-groups with
        gnus-agent-save-active.
        (gnus-save-newsrc-file): Save dirty agent range limits.
  
 -      * gnus-sum.el (gnus-select-newgroup): Replaced inline code with
 +      * gnus-sum.el (gnus-select-newgroup): Replace inline code with
        gnus-agent-possibly-alter-active.
        (gnus-adjust-marked-articles): Faster handling of simple lists
  
        spam-use-spamassassin or spam-use-spamassassin-headers is on;
        spam-bogofilter-score otherwise.
  
 -      * gnus.el (spam-process, spam-autodetect-methods): Add
 -      spamassassin and spamassassin-headers.
 +      * gnus.el (spam-process, spam-autodetect-methods):
 +      Add spamassassin and spamassassin-headers.
  
  2004-01-20  Nevin Kapur  <nkapur@cs.caltech.edu>
  
  
  2004-01-14  Kai Grossjohann  <kai@emptydomain.de>
  
 -      (message-kill-to-signature): Change docstring.
 +      * message.el (message-kill-to-signature): Change docstring.
  
  2004-01-14  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2004-01-13  Simon Josefsson  <jas@extundo.com>
  
        * gnus-score.el (gnus-score-edit-all-score): Fix prototype.
 -      Invoke gnus-score-mode.  Reported by
 -      bojohan+news@dd.chalmers.se (Johan Bockgård).
 +      Invoke gnus-score-mode.
 +      Reported by bojohan+news@dd.chalmers.se (Johan Bockgård).
  
 -      * gnus-range.el (gnus-compress-sequence): Doc fix.  Suggested by
 -      Jim Blandy <jimb@redhat.com> (tiny change).
 +      * gnus-range.el (gnus-compress-sequence): Doc fix.
 +      Suggested by Jim Blandy <jimb@redhat.com> (tiny change).
  
  2004-01-12  Jesper Harder  <harder@ifa.au.dk>
  
  
        * mm-bodies.el: base64 is always built-in.
  
 -      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Use
 -      with-current-buffer.
 +      * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups):
 +      Use with-current-buffer.
  
  2004-01-08  Katsumi Yamaoka  <yamaoka@jpl.org>
  
  2004-01-08  Jesper Harder  <harder@ifa.au.dk>
  
        * gnus-art.el (gnus-mime-view-all-parts)
 -      (gnus-article-part-wrapper, gnus-article-view-part): Use
 -      with-current-buffer.
 +      (gnus-article-part-wrapper, gnus-article-view-part):
 +      Use with-current-buffer.
  
  2004-01-07  Teodor Zlatanov  <tzz@lifelogs.com>
  
        (spam-find-spam): Don't try to guess spam-cache-lookups.
        (spam-enter-whitelist, spam-enter-blacklist): Clear the
        spam-caches entry.
 -      (spam-filelist-build-cache, spam-filelist-check-cache): Fix
 -      caching of whitelist/blacklist entries.
 -      (spam-check-whitelist, spam-check-blacklist): Invoke
 -      spam-from-listed-p with a type, not a cache variable.
 +      (spam-filelist-build-cache, spam-filelist-check-cache):
 +      Fix caching of whitelist/blacklist entries.
 +      (spam-check-whitelist, spam-check-blacklist):
 +      Invoke spam-from-listed-p with a type, not a cache variable.
        (spam-from-listed-p): Wrap around spam-filelist-check-cache.
  
  2004-01-07  Jesper Harder  <harder@ifa.au.dk>
  
  2004-01-06  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-art.el (gnus-treat-ansi-sequences): Changed default.
 +      * gnus-art.el (gnus-treat-ansi-sequences): Change default.
  
  2004-01-07  Steve Youngs  <sryoungs@bigpond.net.au>
  
        * gnus-art.el (gnus-button-push): Use set-text-properties instead
        of gnus-.
  
 -      * gnus.el: Changed calls to nnheader-run-at-time and
 +      * gnus.el: Change calls to nnheader-run-at-time and
        password-run-at-time throughout to use run-at-time directly.
  
 -      * password.el: Removed definition of run-at-time.
 +      * password.el: Remove definition of run-at-time.
  
  2004-01-05  Karl Pflästerer  <sigurd@12move.de>  (tiny change)
  
  
        * gnus-util.el (gnus-local-map-property): Remove.
  
 -      * mm-view.el (mm-view-pkcs7-decrypt): Replace
 -      gnus-completing-read-maybe-default with completing-read.
 +      * mm-view.el (mm-view-pkcs7-decrypt):
 +      Replace gnus-completing-read-maybe-default with completing-read.
  
        * gnus-util.el (gnus-completing-read): do.
        (gnus-completing-read-maybe-default): Remove.
  
        * netrc.el: Autoload password-read.
        (netrc): Add configuration group.
 -      (netrc-encoding-method, netrc-openssl-path): Add
 -      variables for encoding and decoding of files with symmetric
 +      (netrc-encoding-method, netrc-openssl-path):
 +      Add variables for encoding and decoding of files with symmetric
        ciphers.
        (netrc-encode): Add assistant function to encode a file with
        netrc-encoding-method.
  
  2004-01-05  Reiner Steib  <Reiner.Steib@gmx.de>
  
 -      * gnus-art.el (gnus-treat-ansi-sequences,
 +      * gnus-art.el (gnus-treat-ansi-sequences)
        (article-treat-ansi-sequences): New variable and function.
        Suggested by Dan Jacobson <jidanni@jidanni.org>.
  
  
        * smime.el (smime-point-at-eol): Replace with point-at-eol.
  
 -      * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-eol): Replace
 -      with point-at-{eol,bol}.
 +      * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-eol):
 +      Replace with point-at-{eol,bol}.
  
        * netrc.el (netrc-point-at-eol): Replace with point-at-eol.
  
        ntlm-smb-perm5, smb-perm6 into ntlm-smb-perm6, smb-sc into
        ntlm-smb-sc, smb-sbox into ntlm-smb-sbox, string-permute into
        ntlm-string-permute, string-lshift into ntlm-string-lshift,
 -      string-xor into ntlm-string-xor.  Suggested by
 -      Jesper Harder <harder@myrealbox.com>.
 +      string-xor into ntlm-string-xor.
 +      Suggested by Jesper Harder <harder@myrealbox.com>.
  
        * ntlm.el: Don't include poem.
  
 -      * md4.el (print-int32, print-string-hexa): Remove.  Suggested by
 -      Jesper Harder <harder@myrealbox.com>.
 +      * md4.el (print-int32, print-string-hexa): Remove.
 +      Suggested by Jesper Harder <harder@myrealbox.com>.
  
        * sasl-ntlm.el, ntlm.el, md4.el: New files.
  
        condition-case around loop.
  
        * pgg.el (pgg-passphrase-cache, pgg-run-at-time): Remove.
 -      (pgg-add-passphrase-cache, pgg-remove-passphrase-cache): Use
 -      the password package.
 +      (pgg-add-passphrase-cache, pgg-remove-passphrase-cache):
 +      Use the password package.
  
  2003-02-19  Simon Josefsson  <jas@extundo.com>
  
  2004-01-04  Mario Lang  <lang@zid.tugraz.at>
  
        * dns.el (dns-query-types): Fix typo.
 -      (dns-query-types): New function
 +      (dns-query-types): New function.
        (dns-read-type): Add support for AAAA records, see RFC 3596.  Parse MX,
        PTR and SOA replies, see RFC 1035.
  
  2004-01-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * gnus.el (gnus-logo-color-style): Changed colors to `no'.
 +      * gnus.el (gnus-logo-color-style): Change colors to `no'.
  
 -      * Moved to Changelog.2.
 +      * Move to Changelog.2.
  
  2004-01-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  
  See ChangeLog.2 for earlier changes.
  
 -    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +  Copyright (C) 2004-2011  Free Software Foundation, Inc.
  
    This file is part of GNU Emacs.
  
  ;; fill-column: 79
  ;; add-log-time-zone-rule: t
  ;; End:
 -
diff --combined lisp/gnus/gnus.el
index 4cbdee53ab41b25460afca3bc7e8d176e50210af,5180673386c221672855d39bd9d46ef2177022ee..42acb65ff9fed47c6b41215e4d4a754309641561
@@@ -1,12 -1,12 +1,12 @@@
  ;;; gnus.el --- a newsreader for GNU Emacs
  
 -;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998,
 -;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +;; Copyright (C) 1987-1990, 1993-1998, 2000-2011
  ;;   Free Software Foundation, Inc.
  
  ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
  ;;    Lars Magne Ingebrigtsen <larsi@gnus.org>
  ;; Keywords: news, mail
 +;; Version: 5.13
  
  ;; This file is part of GNU Emacs.
  
@@@ -29,7 -29,7 +29,7 @@@
  
  (eval '(run-hooks 'gnus-load-hook))
  
 -;; For Emacs < 22.2.
 +;; For Emacs <22.2 and XEmacs.
  (eval-and-compile
    (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
  
  
  (defgroup gnus-meta nil
    "Meta variables controlling major portions of Gnus.
- In general, modifying these variables does not take affect until Gnus
+ In general, modifying these variables does not take effect until Gnus
  is restarted, and sometimes reloaded."
    :group 'gnus)
  
@@@ -307,6 -307,14 +307,6 @@@ be set in `.emacs' instead.
    :group 'gnus-start
    :type 'boolean)
  
 -(defcustom gnus-play-startup-jingle nil
 -  "If non-nil, play the Gnus jingle at startup."
 -  :group 'gnus-start
 -  :type 'boolean)
 -
 -(unless (fboundp 'gnus-group-remove-excess-properties)
 -  (defalias 'gnus-group-remove-excess-properties 'ignore))
 -
  (unless (featurep 'gnus-xmas)
    (defalias 'gnus-make-overlay 'make-overlay)
    (defalias 'gnus-delete-overlay 'delete-overlay)
                     (list str))
            line)))
      (defalias 'gnus-mode-line-buffer-identification 'identity))
 -  (defalias 'gnus-characterp 'numberp)
    (defalias 'gnus-deactivate-mark 'deactivate-mark)
    (defalias 'gnus-window-edges 'window-edges)
    (defalias 'gnus-key-press-event-p 'numberp)
  ;;; Gnus buffers
  ;;;
  
 -(defvar gnus-buffers nil)
 +(defvar gnus-buffers nil
 +  "List of buffers handled by Gnus.")
  
  (defun gnus-get-buffer-create (name)
    "Do the same as `get-buffer-create', but store the created buffer."
  
  ;;; Splash screen.
  
 -(defvar gnus-group-buffer "*Group*")
 -
 -(autoload 'gnus-play-jingle "gnus-audio")
 +(defvar gnus-group-buffer "*Group*"
 +  "Name of the Gnus group buffer.")
  
  (defface gnus-splash
    '((((class color)
        (erase-buffer)
        (unless gnus-inhibit-startup-message
        (gnus-group-startup-message)
 -      (sit-for 0)
 -      (when gnus-play-startup-jingle
 -        (gnus-play-jingle))))))
 +      (sit-for 0)))))
  
  (defun gnus-indent-rigidly (start end arg)
    "Indent rigidly using only spaces and no tabs."
        (while (search-forward "\t" nil t)
          (replace-match "        " t t))))))
  
 -(defvar gnus-simple-splash nil)
 -
  ;;(format "%02x%02x%02x" 114 66 20) "724214"
  
  (defvar gnus-logo-color-alist
    "Insert startup message in current buffer."
    ;; Insert the message.
    (erase-buffer)
 -  (cond
 -   ((and
 -     (fboundp 'find-image)
 -     (display-graphic-p)
 -     ;; Make sure the library defining `image-load-path' is loaded
 -     ;; (`find-image' is autoloaded) (and discard the result).  Else, we may
 -     ;; get "defvar ignored because image-load-path is let-bound" when calling
 -     ;; `find-image' below.
 -     (or (find-image '(nil (:type xpm :file "gnus.xpm"))) t)
 -     (let* ((data-directory (nnheader-find-etc-directory "images/gnus"))
 -          (image-load-path (cond (data-directory
 -                                  (list data-directory))
 -                                 ((boundp 'image-load-path)
 -                                  (symbol-value 'image-load-path))
 -                                 (t load-path)))
 -          (image (find-image
 -                  `((:type svg :file "gnus.svg")
 -                    (:type png :file "gnus.png")
 -                    (:type xpm :file "gnus.xpm"
 -                           :color-symbols
 -                           (("thing" . ,(car gnus-logo-colors))
 -                            ("shadow" . ,(cadr gnus-logo-colors))
 -                            ("oort" . "#eeeeee")
 -                            ("background" . ,(face-background 'default))))
 -                    (:type pbm :file "gnus.pbm"
 -                           ;; Account for the pbm's blackground.
 -                           :background ,(face-foreground 'gnus-splash)
 -                           :foreground ,(face-background 'default))
 -                    (:type xbm :file "gnus.xbm"
 -                           ;; Account for the xbm's blackground.
 -                           :background ,(face-foreground 'gnus-splash)
 -                           :foreground ,(face-background 'default))))))
 -       (when image
 -       (let ((size (image-size image)))
 -         (insert-char ?\n (max 0 (round (- (window-height)
 -                                           (or y (cdr size)) 1) 2)))
 -         (insert-char ?\  (max 0 (round (- (window-width)
 -                                           (or x (car size))) 2)))
 -         (insert-image image))
 -       (setq gnus-simple-splash nil)
 -       t))))
 -   (t
 +  (unless (and
 +           (fboundp 'find-image)
 +           (display-graphic-p)
 +           ;; Make sure the library defining `image-load-path' is
 +           ;; loaded (`find-image' is autoloaded) (and discard the
 +           ;; result).  Else, we may get "defvar ignored because
 +           ;; image-load-path is let-bound" when calling `find-image'
 +           ;; below.
 +           (or (find-image '(nil (:type xpm :file "gnus.xpm"))) t)
 +           (let* ((data-directory (nnheader-find-etc-directory "images/gnus"))
 +                  (image-load-path (cond (data-directory
 +                                          (list data-directory))
 +                                         ((boundp 'image-load-path)
 +                                          (symbol-value 'image-load-path))
 +                                         (t load-path)))
 +                  (image (find-image
 +                          `((:type xpm :file "gnus.xpm"
 +                                   :color-symbols
 +                                   (("thing" . ,(car gnus-logo-colors))
 +                                    ("shadow" . ,(cadr gnus-logo-colors))))
 +                            (:type svg :file "gnus.svg")
 +                            (:type png :file "gnus.png")
 +                            (:type pbm :file "gnus.pbm"
 +                                   ;; Account for the pbm's background.
 +                                   :background ,(face-foreground 'gnus-splash)
 +                                   :foreground ,(face-background 'default))
 +                            (:type xbm :file "gnus.xbm"
 +                                   ;; Account for the xbm's background.
 +                                   :background ,(face-foreground 'gnus-splash)
 +                                   :foreground ,(face-background 'default))))))
 +             (when image
 +               (let ((size (image-size image)))
 +                 (insert-char ?\n (max 0 (round (- (window-height)
 +                                                   (or y (cdr size)) 1) 2)))
 +                 (insert-char ?\  (max 0 (round (- (window-width)
 +                                                   (or x (car size))) 2)))
 +                 (insert-image image))
 +             (goto-char (point-min))
 +               t)))
      (insert
 -     (format "              %s
 +     (format "
          _    ___ _             _
          _ ___ __ ___  __    _ ___
          __   _     ___    __  ___
            _
          __
  
 -"
 -           ""))
 +"))
      ;; And then hack it.
      (gnus-indent-rigidly (point-min) (point-max)
                         (/ (max (- (window-width) (or x 46)) 0) 2))
        (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
      ;; Fontify some.
      (put-text-property (point-min) (point-max) 'face 'gnus-splash)
 -    (setq gnus-simple-splash t)))
 -  (goto-char (point-min))
 -  (setq mode-line-buffer-identification (concat " " gnus-version))
 -  (set-buffer-modified-p t))
 +    (goto-char (point-min))
 +    (setq mode-line-buffer-identification (concat " " gnus-version))
 +    (set-buffer-modified-p t)))
  
  (eval-when (load)
    (let ((command (format "%s" this-command)))
@@@ -1257,6 -1275,15 +1257,6 @@@ by the user
  If you want to change servers, you should use `gnus-select-method'.
  See the documentation to that variable.")
  
 -;; Don't touch this variable.
 -(defvar gnus-nntp-service "nntp"
 -  "NNTP service name (\"nntp\" or 119).
 -This is an obsolete variable, which is scarcely used.  If you use an
 -nntp server for your newsgroup and want to change the port number
 -used to 899, you would say something along these lines:
 -
 - (setq gnus-select-method '(nntp \"my.nntp.server\" (nntp-port-number 899)))")
 -
  (defcustom gnus-nntpserver-file "/etc/nntpserver"
    "A file with only the name of the nntp server in it."
    :group 'gnus-files
@@@ -1280,11 -1307,20 +1280,11 @@@ Check the NNTPSERVER environment variab
  ;;;###autoload  (custom-autoload 'gnus-select-method "gnus"))
  
  (defcustom gnus-select-method
 -  (condition-case nil
 -      (nconc
 -       (list 'nntp (or (condition-case nil
 -                         (gnus-getenv-nntpserver)
 -                       (error nil))
 -                     (when (and gnus-default-nntp-server
 -                                (not (string= gnus-default-nntp-server "")))
 -                       gnus-default-nntp-server)
 -                     "news"))
 -       (if (or (null gnus-nntp-service)
 -             (equal gnus-nntp-service "nntp"))
 -         nil
 -       (list gnus-nntp-service)))
 -    (error nil))
 +  (list 'nntp (or (gnus-getenv-nntpserver)
 +                  (when (and gnus-default-nntp-server
 +                             (not (string= gnus-default-nntp-server "")))
 +                    gnus-default-nntp-server)
 +                  "news"))
    "Default method for selecting a newsgroup.
  This variable should be a list, where the first element is how the
  news is to be fetched, the second is the address.
@@@ -1328,12 -1364,12 +1328,12 @@@ updated if the value of this variable i
  value of `gnus-message-archive-method' afterward.  If you want the
  saved \"archive\" method to be updated whenever you change the value of
  `gnus-message-archive-method', set this variable to a non-nil value."
 -  :version "23.1" ;; No Gnus
 +  :version "23.1"
    :group 'gnus-server
    :group 'gnus-message
    :type 'boolean)
  
 -(defcustom gnus-message-archive-group nil
 +(defcustom gnus-message-archive-group '((format-time-string "sent.%Y-%m"))
    "*Name of the group in which to save the messages you've written.
  This can either be a string; a list of strings; or an alist
  of regexps/functions/forms to be evaluated to return a string (or a list
@@@ -1353,12 -1389,8 +1353,12 @@@ unprefixed -- which implicitly means \"
  However, you may wish to store the message on some other server.  In
  that case, just return a fully prefixed name of the group --
  \"nnml+private:mail.misc\", for instance."
 +  :version "24.1"
    :group 'gnus-message
    :type '(choice (const :tag "none" nil)
 +               (const :tag "Weekly" ((format-time-string "sent.%Yw%U")))
 +               (const :tag "Monthly" ((format-time-string "sent.%Y-%m")))
 +               (const :tag "Yearly" ((format-time-string "sent.%Y")))
                 function
                 sexp
                 string))
@@@ -1369,14 -1401,14 +1369,14 @@@ To make Gnus query you for a server, yo
  non-numeric prefix - `C-u M-x gnus', in short."
    :group 'gnus-server
    :type '(repeat string))
 +(make-obsolete-variable 'gnus-secondary-servers 'gnus-select-method "24.1")
  
  (defcustom gnus-nntp-server nil
 -  "*The name of the host running the NNTP server.
 -This variable is semi-obsolete.  Use the `gnus-select-method'
 -variable instead."
 +  "The name of the host running the NNTP server."
    :group 'gnus-server
    :type '(choice (const :tag "disable" nil)
                 string))
 +(make-obsolete-variable 'gnus-nntp-server 'gnus-select-method "24.1")
  
  (defcustom gnus-secondary-select-methods nil
    "A list of secondary methods that will be used for reading news.
@@@ -1390,6 -1422,11 +1390,6 @@@ you could set this variable
    :group 'gnus-server
    :type '(repeat gnus-select-method))
  
 -(defvar gnus-backup-default-subscribed-newsgroups
 -  '("news.announce.newusers" "news.groups.questions" "gnu.emacs.gnus")
 -  "Default default new newsgroups the first time Gnus is run.
 -Should be set in paths.el, and shouldn't be touched by the user.")
 -
  (defcustom gnus-local-domain nil
    "Local domain name without a host name.
  The DOMAINNAME environment variable is used instead if it is defined.
@@@ -1398,11 -1435,14 +1398,11 @@@ no need to set this variable.
    :group 'gnus-message
    :type '(choice (const :tag "default" nil)
                 string))
 -
 -(defvar gnus-local-organization nil
 -  "String with a description of what organization (if any) the user belongs to.
 -Obsolete variable; use `message-user-organization' instead.")
 +(make-obsolete-variable 'gnus-local-domain nil "Emacs 24.1")
  
  ;; Customization variables
  
 -(defcustom gnus-refer-article-method nil
 +(defcustom gnus-refer-article-method 'current
    "Preferred method for fetching an article by Message-ID.
  If you are reading news from the local spool (with nnspool), fetching
  articles by Message-ID is painfully slow.  By setting this method to an
@@@ -1414,7 -1454,6 +1414,7 @@@ in the documentation of `gnus-select-me
  It can also be a list of select methods, as well as the special symbol
  `current', which means to use the current select method.  If it is a
  list, Gnus will try all the methods in the list until it finds a match."
 +  :version "24.1"
    :group 'gnus-server
    :type '(choice (const :tag "default" nil)
                 (const current)
                                        (nnweb "refer" (nnweb-type google)))
                                 gnus-select-method))))
  
 -(defcustom gnus-group-faq-directory
 -  '("/ftp@mirrors.aol.com:/pub/rtfm/usenet/"
 -    "/ftp@sunsite.doc.ic.ac.uk:/pub/usenet/news-faqs/"
 -    "/ftp@src.doc.ic.ac.uk:/usenet/news-FAQS/"
 -    "/ftp@ftp.seas.gwu.edu:/pub/rtfm/"
 -    "/ftp@ftp.pasteur.fr:/pub/FAQ/"
 -    "/ftp@rtfm.mit.edu:/pub/usenet/"
 -    "/ftp@ftp.uni-paderborn.de:/pub/FAQ/"
 -    "/ftp@ftp.sunet.se:/pub/usenet/"
 -    "/ftp@nctuccca.nctu.edu.tw:/pub/Documents/rtfm/usenet-by-group/"
 -    "/ftp@hwarang.postech.ac.kr:/pub/usenet/"
 -    "/ftp@ftp.hk.super.net:/mirror/faqs/")
 -  "*Directory where the group FAQs are stored.
 -This will most commonly be on a remote machine, and the file will be
 -fetched by ange-ftp.
 -
 -This variable can also be a list of directories.  In that case, the
 -first element in the list will be used by default.  The others can
 -be used when being prompted for a site.
 -
 -Note that Gnus uses an aol machine as the default directory.  If this
 -feels fundamentally unclean, just think of it as a way to finally get
 -something of value back from them.
 -
 -If the default site is too slow, try one of these:
 -
 -   North America: mirrors.aol.com              /pub/rtfm/usenet
 -                ftp.seas.gwu.edu               /pub/rtfm
 -                rtfm.mit.edu                   /pub/usenet
 -   Europe:      ftp.uni-paderborn.de           /pub/FAQ
 -                src.doc.ic.ac.uk               /usenet/news-FAQS
 -                ftp.sunet.se                   /pub/usenet
 -                ftp.pasteur.fr                 /pub/FAQ
 -   Asia:        nctuccca.nctu.edu.tw           /pub/Documents/rtfm/usenet-by-group/
 -                hwarang.postech.ac.kr          /pub/usenet
 -                ftp.hk.super.net               /mirror/faqs"
 -  :group 'gnus-group-various
 -  :type '(choice directory
 -               (repeat directory)))
 -
 -(defcustom gnus-group-charter-alist
 -  '(("no" . (concat "http://no.news-admin.org/charter/" name ".txt"))
 -    ("de" . (concat "http://purl.net/charta/" name ".html"))
 -    ("dk" . (concat "http://www.usenet.dk/grupper.pl?get=" name))
 -    ("england" . (concat "http://england.news-admin.org/charters/" name))
 -    ("fr" . (concat "http://www.usenet-fr.net/fur/chartes/" name ".html"))
 -    ("europa" . (concat "http://www.europa.usenet.eu.org/chartas/charta-en-"
 -                      (gnus-replace-in-string name "europa\\." "") ".html"))
 -    ("nl" . (concat "http://www.xs4all.nl/~sister/usenet/charters/" name))
 -    ("aus" . (concat "http://aus.news-admin.org/groupinfo.cgi/" name))
 -    ("pl" . (concat "http://www.usenet.pl/opisy/" name))
 -    ("ch" . (concat "http://www.use-net.ch/Usenet/charter.html#" name))
 -    ("at" . (concat "http://www.usenet.at/chartas/" name "/charta"))
 -    ("uk" . (concat "http://www.usenet.org.uk/" name ".html"))
 -    ("dfw" . (concat "http://www.cirr.com/dfw/charters/" name ".html"))
 -    ("se" . (concat "http://www.usenet-se.net/Reglementen/"
 -                  (gnus-replace-in-string name "\\." "_") ".html"))
 -    ("milw" . (concat "http://usenet.mil.wi.us/"
 -                    (gnus-replace-in-string name "milw\\." "") "-charter"))
 -    ("ca" . (concat "http://www.sbay.org/ca/charter-" name ".html"))
 -    ("netins" . (concat "http://www.netins.net/usenet/charter/"
 -                      (gnus-replace-in-string name "\\." "-") "-charter.html")))
 -  "*An alist of (HIERARCHY . FORM) pairs used to construct the URL of a charter.
 -When FORM is evaluated `name' is bound to the name of the group."
 -  :version "22.1"
 -  :group 'gnus-group-various
 -  :type '(repeat (cons (string :tag "Hierarchy") (sexp :tag "Form"))))
 -(put 'gnus-group-charter-alist 'risky-local-variable t)
 -
 -(defcustom gnus-group-fetch-control-use-browse-url nil
 -  "*Non-nil means that control messages are displayed using `browse-url'.
 -Otherwise they are fetched with ange-ftp and displayed in an ephemeral
 -group."
 -  :version "22.1"
 -  :group 'gnus-group-various
 -  :type 'boolean)
 -
  (defcustom gnus-use-cross-reference t
    "*Non-nil means that cross referenced articles will be marked as read.
  If nil, ignore cross references.  If t, mark articles as read in
@@@ -1450,15 -1566,13 +1450,15 @@@ newsgroups.
    "*The number of articles which indicates a large newsgroup.
  If the number of articles in a newsgroup is greater than this value,
  confirmation is required for selecting the newsgroup.
 -If it is nil, no confirmation is required."
 +If it is nil, no confirmation is required.
 +
 +Also see `gnus-large-ephemeral-newsgroup'."
    :group 'gnus-group-select
    :type '(choice (const :tag "No limit" nil)
                 integer))
  
  (defcustom gnus-use-long-file-name (not (memq system-type '(usg-unix-v)))
 -  "*Non-nil means that the default name of a file to save articles in is the group name.
 +  "Non-nil means that the default name of a file to save articles in is the group name.
  If it's nil, the directory form of the group name is used instead.
  
  If this variable is a list, and the list contains the element
@@@ -1468,8 -1582,8 +1468,8 @@@ saving; and if it contains the element 
  will not be used for kill files.
  
  Note that the default for this variable varies according to what system
 -type you're using.  On `usg-unix-v' and `xenix' this variable defaults
 -to nil while on all other systems it defaults to t."
 +type you're using.  On `usg-unix-v' this variable defaults to nil while
 +on all other systems it defaults to t."
    :group 'gnus-start
    :type '(radio (sexp :format "Non-nil\n"
                      :match (lambda (widget value)
@@@ -1533,6 -1647,25 +1533,6 @@@ articles.  This is not a good idea.
                 (sexp :format "all"
                       :value t)))
  
 -(defcustom gnus-use-nocem nil
 -  "*If non-nil, Gnus will read NoCeM cancel messages.
 -You can also set this variable to a positive number as a group level.
 -In that case, Gnus scans NoCeM messages when checking new news if this
 -value is not exceeding a group level that you specify as the prefix
 -argument to some commands, e.g. `gnus', `gnus-group-get-new-news', etc.
 -Otherwise, Gnus does not scan NoCeM messages if you specify a group
 -level to those commands."
 -  :group 'gnus-meta
 -  :type '(choice
 -        (const :tag "off" nil)
 -        (const :tag "on" t)
 -        (list :convert-widget
 -              (lambda (widget)
 -                (list 'integer :tag "group level"
 -                      :value (if (boundp 'gnus-level-default-subscribed)
 -                                 gnus-level-default-subscribed
 -                               3))))))
 -
  (defcustom gnus-suppress-duplicates nil
    "*If non-nil, Gnus will mark duplicate copies of the same article as read."
    :group 'gnus-meta
@@@ -1585,6 -1718,11 +1585,6 @@@ slower.
                (function-item mail-extract-address-components)
                (function :tag "Other")))
  
 -(defcustom gnus-carpal nil
 -  "*If non-nil, display clickable icons."
 -  :group 'gnus-meta
 -  :type 'boolean)
 -
  (defcustom gnus-shell-command-separator ";"
    "String used to separate shell commands."
    :group 'gnus-files
      ("nneething" none address prompt-address physical-address)
      ("nndoc" none address prompt-address)
      ("nnbabyl" mail address respool)
 -    ("nnkiboze" post virtual)
 -    ("nnsoup" post-mail address)
      ("nndraft" post-mail)
      ("nnfolder" mail respool address)
      ("nngateway" post-mail address prompt-address physical-address)
      ("nnweb" none)
 -    ("nngoogle" post)
 -    ("nnslashdot" post)
 -    ("nnultimate" none)
      ("nnrss" none)
 -    ("nnwfm" none)
 -    ("nnwarchive" none)
 -    ("nnlistserv" none)
      ("nnagent" post-mail)
 -    ("nnimap" post-mail address prompt-address physical-address)
 +    ("nnimap" post-mail address prompt-address physical-address respool)
      ("nnmaildir" mail respool address)
      ("nnnil" none))
    "*An alist of valid select methods.
@@@ -1628,8 -1774,7 +1628,8 @@@ this variable.  I think.
                                   (const :format "%v " prompt-address)
                                   (const :format "%v " physical-address)
                                   (const :format "%v " virtual)
 -                                 (const respool)))))
 +                                 (const respool))))
 +  :version "24.1")
  
  (defun gnus-redefine-select-method-widget ()
    "Recomputes the select-method widget based on the value of
@@@ -1665,11 -1810,12 +1665,11 @@@ If this variable is nil, screen refres
              (const summary)
              (const tree)))
  
 -;; Added by Keinonen Kari <kk85613@cs.tut.fi>.
 -(defcustom gnus-mode-non-string-length nil
 +(defcustom gnus-mode-non-string-length 30
    "*Max length of mode-line non-string contents.
  If this is nil, Gnus will take space as is needed, leaving the rest
 -of the mode line intact.  Note that the default of nil is unlikely
 -to be desirable; see the manual for further details."
 +of the mode line intact."
 +  :version "24.1"
    :group 'gnus-various
    :type '(choice (const nil)
                 integer))
@@@ -2542,12 -2688,6 +2542,12 @@@ a string, be sure to use a valid format
  (defvar gnus-newsgroup-name nil)
  (defvar gnus-ephemeral-servers nil)
  (defvar gnus-server-method-cache nil)
 +(defvar gnus-extended-servers nil)
 +
 +;; The carpal mode has been removed, but define the variable for
 +;; backwards compatability.
 +(defvar gnus-carpal nil)
 +(make-obsolete-variable 'gnus-carpal nil "Emacs 24.1")
  
  (defvar gnus-agent-fetching nil
    "Whether Gnus agent is in fetching mode.")
  (defvar gnus-tree-buffer "*Tree*"
    "Buffer where Gnus thread trees are displayed.")
  
 -;; Dummy variable.
 -(defvar gnus-use-generic-from nil)
 -
  ;; Variable holding the user answers to all method prompts.
  (defvar gnus-method-history nil)
  
        ,(nnheader-concat gnus-cache-directory "active"))))
    "List of predefined (convenience) servers.")
  
 -(defvar gnus-topic-indentation "") ;; Obsolete variable.
 -
  (defconst gnus-article-mark-lists
    '((marked . tick) (replied . reply)
      (expirable . expire) (killed . killed)
    '((seen range)
      (killed range)
      (bookmark tuple)
 +    (uid tuple)
 +    (active tuple)
      (score tuple)))
  
  ;; Propagate flags to server, with the following exceptions:
@@@ -2747,12 -2890,17 +2747,12 @@@ gnus-registry.el will populate this if 
        rmail-summary-exists rmail-select-summary)
       ;; Only used in gnus-util, which has an autoload.
       ("rmailsum" rmail-update-summary)
 -     ("gnus-audio" :interactive t gnus-audio-play)
       ("gnus-xmas" gnus-xmas-splash)
 -     ("gnus-soup" :interactive t
 -      gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
 -      gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
 -     ("nnsoup" nnsoup-pack-replies)
       ("score-mode" :interactive t gnus-score-mode)
       ("gnus-mh" gnus-summary-save-article-folder
        gnus-Folder-save-name gnus-folder-save-name)
       ("gnus-mh" :interactive t gnus-summary-save-in-folder)
 -     ("gnus-demon" gnus-demon-add-nocem gnus-demon-add-scanmail
 +     ("gnus-demon" gnus-demon-add-scanmail
        gnus-demon-add-rescan gnus-demon-add-scan-timestamps
        gnus-demon-add-disconnection gnus-demon-add-handler
        gnus-demon-remove-handler)
        gnus-convert-image-to-gray-x-face gnus-convert-face-to-png
        gnus-face-from-file)
       ("gnus-salt" gnus-highlight-selected-tree gnus-possibly-generate-tree
 -      gnus-tree-open gnus-tree-close gnus-carpal-setup-buffer)
 -     ("gnus-nocem" gnus-nocem-scan-groups gnus-nocem-close
 -      gnus-nocem-unwanted-article-p)
 +      gnus-tree-open gnus-tree-close)
       ("gnus-srvr" gnus-enter-server-buffer gnus-server-set-info
        gnus-server-server-name)
       ("gnus-srvr" gnus-browse-foreign-server)
       ("gnus-cite" :interactive t
        gnus-article-highlight-citation gnus-article-hide-citation-maybe
        gnus-article-hide-citation gnus-article-fill-cited-article
 -      gnus-article-hide-citation-in-followups)
 +      gnus-article-hide-citation-in-followups
 +      gnus-article-fill-cited-long-lines)
       ("gnus-kill" gnus-kill gnus-apply-kill-file-internal
        gnus-kill-file-edit-file gnus-kill-file-raise-followups-to-author
        gnus-execute gnus-expunge gnus-batch-kill gnus-batch-score)
        gnus-dup-enter-articles)
       ("gnus-range" gnus-copy-sequence)
       ("gnus-eform" gnus-edit-form)
 -     ("gnus-move" :interactive t
 -      gnus-group-move-group-to-server gnus-change-server)
       ("gnus-logic" gnus-score-advanced)
       ("gnus-undo" gnus-undo-mode gnus-undo-register)
       ("gnus-async" gnus-async-request-fetched-article gnus-async-prefetch-next
  It works along the same lines as a normal formatting string,
  with some simple extensions.
  
 -%N   Article number, left padded with spaces (string)
 -%S   Subject (string)
 -%s   Subject if it is at the root of a thread, and \"\" otherwise (string)
 -%n   Name of the poster (string)
 -%a   Extracted name of the poster (string)
 -%A   Extracted address of the poster (string)
 -%F   Contents of the From: header (string)
 -%f   Contents of the From: or To: headers (string)
 -%x   Contents of the Xref: header (string)
 -%D   Date of the article (string)
 -%d   Date of the article (string) in DD-MMM format
 -%o   Date of the article (string) in YYYYMMDD`T'HHMMSS format
 -%M   Message-id of the article (string)
 -%r   References of the article (string)
 -%c   Number of characters in the article (integer)
 -%k   Pretty-printed version of the above (string)
 -     For example, \"1.2k\" or \"0.4M\".
 -%L   Number of lines in the article (integer)
 -%I   Indentation based on thread level (a string of spaces)
 -%B   A complex trn-style thread tree (string)
 -     The variables `gnus-sum-thread-*' can be used for customization.
 -%T   A string with two possible values: 80 spaces if the article
 -     is on thread level two or larger and 0 spaces on level one
 -%R   \"A\" if this article has been replied to, \" \" otherwise (character)
 -%U   Status of this article (character, \"R\", \"K\", \"-\" or \" \")
 -%[   Opening bracket (character, \"[\" or \"<\")
 -%]   Closing bracket (character, \"]\" or \">\")
 -%>   Spaces of length thread-level (string)
 -%<   Spaces of length (- 20 thread-level) (string)
 -%i   Article score (number)
 -%z   Article zcore (character)
 -%t   Number of articles under the current thread (number).
 -%e   Whether the thread is empty or not (character).
 -%V   Total thread score (number).
 -%P   The line number (number).
 -%O   Download mark (character).
 -%*   If present, indicates desired cursor position
 -     (instead of after first colon).
 -%u   User defined specifier.  The next character in the format string should
 -     be a letter.  Gnus will call the function gnus-user-format-function-X,
 -     where X is the letter following %u.  The function will be passed the
 -     current header as argument.  The function should return a string, which
 -     will be inserted into the summary just like information from any other
 -     summary specifier.
 +%N          Article number, left padded with spaces (string)
 +%S          Subject (string)
 +%s          Subject if it is at the root of a thread, and \"\"
 +            otherwise (string)
 +%n          Name of the poster (string)
 +%a          Extracted name of the poster (string)
 +%A          Extracted address of the poster (string)
 +%F          Contents of the From: header (string)
 +%f          Contents of the From: or To: headers (string)
 +%x          Contents of the Xref: header (string)
 +%D          Date of the article (string)
 +%d          Date of the article (string) in DD-MMM format
 +%o          Date of the article (string) in YYYYMMDD`T'HHMMSS
 +            format
 +%M          Message-id of the article (string)
 +%r          References of the article (string)
 +%c          Number of characters in the article (integer)
 +%k          Pretty-printed version of the above (string)
 +            For example, \"1.2k\" or \"0.4M\".
 +%L          Number of lines in the article (integer)
 +%I          Indentation based on thread level (a string of
 +            spaces)
 +%B          A complex trn-style thread tree (string)
 +            The variables `gnus-sum-thread-*' can be used for
 +            customization.
 +%T          A string with two possible values: 80 spaces if the
 +            article is on thread level two or larger and 0 spaces
 +            on level one
 +%R          \"A\" if this article has been replied to, \" \"
 +            otherwise (character)
 +%U          Status of this article (character, \"R\", \"K\",
 +            \"-\" or \" \")
 +%[          Opening bracket (character, \"[\" or \"<\")
 +%]          Closing bracket (character, \"]\" or \">\")
 +%>          Spaces of length thread-level (string)
 +%<          Spaces of length (- 20 thread-level) (string)
 +%i          Article score (number)
 +%z          Article zcore (character)
 +%t          Number of articles under the current thread (number).
 +%e          Whether the thread is empty or not (character).
 +%V          Total thread score (number).
 +%P          The line number (number).
 +%O          Download mark (character).
 +%*          If present, indicates desired cursor position
 +            (instead of after first colon).
 +%u          User defined specifier. The next character in the
 +            format string should be a letter. Gnus will call the
 +            function gnus-user-format-function-X, where X is the
 +            letter following %u. The function will be passed the
 +            current header as argument. The function should
 +            return a string, which will be inserted into the
 +            summary just like information from any other summary
 +            specifier.
 +&user-date; Age sensitive date format. Various date format is
 +            defined in `gnus-summary-user-date-format-alist'.
 +
  
  The %U (status), %R (replied) and %z (zcore) specs have to be handled
  with care.  For reasons of efficiency, Gnus will compute what column
@@@ -3159,12 -3298,12 +3159,12 @@@ with a `subscribed' parameter.
  (defmacro gnus-string-or (&rest strings)
    "Return the first element of STRINGS that is a non-blank string.
  STRINGS will be evaluated in normal `or' order."
 -  `(gnus-string-or-1 ',strings))
 +  `(gnus-string-or-1 (list ,@strings)))
  
  (defun gnus-string-or-1 (strings)
    (let (string)
      (while strings
 -      (setq string (eval (pop strings)))
 +      (setq string (pop strings))
        (if (string-match "^[ \t]*$" string)
          (setq string nil)
        (setq strings nil)))
@@@ -3180,6 -3319,7 +3180,6 @@@ If ARG, insert string at point.
  
  (defun gnus-continuum-version (&optional version)
    "Return VERSION as a floating point number."
 -  (interactive)
    (unless version
      (setq version gnus-version))
    (when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version)
@@@ -3363,14 -3503,14 +3363,14 @@@ that that variable is buffer-local to t
  (defun gnus-news-group-p (group &optional article)
    "Return non-nil if GROUP (and ARTICLE) come from a news server."
    (cond ((gnus-member-of-valid 'post group) ;Ordinary news group
 -       t)                             ;is news of course.
 +       t)                                 ;is news of course.
        ((not (gnus-member-of-valid 'post-mail group)) ;Non-combined.
         nil)                           ;must be mail then.
        ((vectorp article)              ;Has header info.
         (eq (gnus-request-type group (mail-header-id article)) 'news))
 -      ((null article)                 ;Hasn't header info
 +      ((null article)                        ;Hasn't header info
         (eq (gnus-request-type group) 'news)) ;(unknown ==> mail)
 -      ((< article 0)                  ;Virtual message
 +      ((< article 0)                         ;Virtual message
         nil)                           ;we don't know, guess mail.
        (t                              ;Has positive number
         (eq (gnus-request-type group article) 'news)))) ;use it.
                                   (nth 1 method))))
        method)))
  
 -(defsubst gnus-method-to-server (method &optional nocache)
 +(defsubst gnus-method-to-server (method &optional nocache no-enter-cache)
    (catch 'server-name
      (setq method (or method gnus-select-method))
  
                     (format "%s" (car method))
                   (format "%s:%s" (car method) (cadr method))))
           (name-method (cons name method)))
 -      (unless (member name-method gnus-server-method-cache)
 +      (when (and (not (member name-method gnus-server-method-cache))
 +               (not no-enter-cache)
 +               (not (assoc (car name-method) gnus-server-method-cache)))
        (push name-method gnus-server-method-cache))
        name)))
  
                (while alist
                  (setq method (gnus-info-method (pop alist)))
                  (when (and (not (stringp method))
 -                           (equal server (gnus-method-to-server method)))
 +                           (equal server
 +                                  (gnus-method-to-server method nil t)))
                    (setq match method
                          alist nil)))
                match))))
 -      (when result
 +      (when (and result
 +                 (not (assoc server gnus-server-method-cache)))
          (push (cons server result) gnus-server-method-cache))
        result)))
  
                                            gnus-valid-select-methods)))
                 (equal (nth 1 m1) (nth 1 m2)))))))
  
 +(defsubst gnus-sloppily-equal-method-parameters (m1 m2)
 +  ;; Check parameters for sloppy equalness.
 +  (let ((p1 (copy-sequence (cddr m1)))
 +      (p2 (copy-sequence (cddr m2)))
 +      e1 e2)
 +    (block nil
 +      (while (setq e1 (pop p1))
 +      (unless (setq e2 (assq (car e1) p2))
 +        ;; The parameter doesn't exist in p2.
 +        (return nil))
 +      (setq p2 (delq e2 p2))
 +      (unless (equal e1 e2)
 +        (if (not (and (stringp (cadr e1))
 +                      (stringp (cadr e2))))
 +            (return nil)
 +          ;; Special-case string parameter comparison so that we
 +          ;; can uniquify them.
 +          (let ((s1 (cadr e1))
 +                (s2 (cadr e2)))
 +            (when (string-match "/$" s1)
 +              (setq s1 (directory-file-name s1)))
 +            (when (string-match "/$" s2)
 +              (setq s2 (directory-file-name s2)))
 +            (unless (equal s1 s2)
 +              (return nil))))))
 +      ;; If p2 now is empty, they were equal.
 +      (null p2))))
 +
 +(defun gnus-methods-sloppily-equal (m1 m2)
 +  ;; Same method.
 +  (or
 +   (eq m1 m2)
 +   ;; Type and name are equal.
 +   (and
 +    (eq (car m1) (car m2))
 +    (equal (cadr m1) (cadr m2))
 +    (gnus-sloppily-equal-method-parameters m1 m2))))
 +
  (defun gnus-server-equal (m1 m2)
    "Say whether two methods are equal."
    (let ((m1 (cond ((null m1) gnus-select-method)
@@@ -3787,13 -3885,12 +3787,13 @@@ You should probably use `gnus-find-meth
  
  (defun gnus-expand-group-parameter (match value group)
    "Use MATCH to expand VALUE in GROUP."
 -  (with-temp-buffer
 -    (insert group)
 -    (goto-char (point-min))
 -    (while (re-search-forward match nil t)
 -      (replace-match value))
 -    (buffer-string)))
 +  (let ((start (string-match match group)))
 +    (if start
 +        (let ((matched-string (substring group start (match-end 0))))
 +          ;; Build match groups
 +          (string-match match matched-string)
 +          (replace-match value nil nil matched-string))
 +      group)))
  
  (defun gnus-expand-group-parameters (match parameters group)
    "Go through PARAMETERS and expand them according to the match data."
@@@ -3837,7 -3934,9 +3837,7 @@@ The function `gnus-group-find-parameter
              ;; Expand if necessary.
              (if (and (stringp result) (string-match "\\\\[0-9&]" result))
                  (setq result (gnus-expand-group-parameter (car head)
 -                                                          result group)))
 -            ;; Exit the loop early.
 -            (setq tail nil))))
 +                                                          result group))))))
        ;; Done.
        result))))
  
@@@ -3847,7 -3946,8 +3847,7 @@@ If SYMBOL, return the value of that sym
  
  If you call this function inside a loop, consider using the faster
  `gnus-group-fast-parameter' instead."
 -  (save-excursion
 -    (set-buffer gnus-group-buffer)
 +  (with-current-buffer gnus-group-buffer
      (if symbol
        (gnus-group-fast-parameter group symbol allow-list)
        (nconc
@@@ -3895,11 -3995,8 +3895,11 @@@ If ALLOW-LIST, also allow list as a res
                           group 'params))))
  
  (defun gnus-group-set-parameter (group name value)
 -  "Set parameter NAME to VALUE in GROUP."
 -  (let ((info (gnus-get-info group)))
 +  "Set parameter NAME to VALUE in GROUP.
 +GROUP can also be an INFO structure."
 +  (let ((info (if (listp group)
 +                group
 +              (gnus-get-info group))))
      (when info
        (gnus-group-remove-parameter group name)
        (let ((old-params (gnus-info-params info))
                    (not (eq (caar old-params) name)))
            (setq new-params (append new-params (list (car old-params)))))
          (setq old-params (cdr old-params)))
 -      (gnus-group-set-info new-params group 'params)))))
 +      (if (listp group)
 +          (gnus-info-set-params info new-params t)
 +        (gnus-group-set-info new-params (gnus-info-group info) 'params))))))
  
  (defun gnus-group-remove-parameter (group name)
 -  "Remove parameter NAME from GROUP."
 -  (let ((info (gnus-get-info group)))
 +  "Remove parameter NAME from GROUP.
 +GROUP can also be an INFO structure."
 +  (let ((info (if (listp group)
 +                group
 +              (gnus-get-info group))))
      (when info
        (let ((params (gnus-info-params info)))
        (when params
          (setq params (delq name params))
          (while (assq name params)
 -          (gnus-pull name params))
 +          (gnus-alist-pull name params))
          (gnus-info-set-params info params))))))
  
  (defun gnus-group-add-score (group &optional score)
@@@ -4014,7 -4106,8 +4014,7 @@@ Returns the number of articles marked a
  (defun gnus-kill-save-kill-buffer ()
    (let ((file (gnus-newsgroup-kill-file gnus-newsgroup-name)))
      (when (get-file-buffer file)
 -      (save-excursion
 -      (set-buffer (get-file-buffer file))
 +      (with-current-buffer (get-file-buffer file)
        (when (buffer-modified-p)
          (save-buffer))
        (kill-buffer (current-buffer))))))
@@@ -4061,19 -4154,13 +4061,19 @@@ If NEWSGROUP is nil, return the global 
                      gnus-valid-select-methods)))
  
  (defun gnus-similar-server-opened (method)
 -  (let ((opened gnus-opened-servers))
 +  "Return non-nil if we have a similar server opened.
 +This is defined as a server with the same name, but different
 +parameters."
 +  (let ((opened gnus-opened-servers)
 +      open)
      (while (and method opened)
 -      (when (and (equal (cadr method) (cadaar opened))
 -               (equal (car method) (caaar opened))
 -               (not (equal method (caar opened))))
 -      (setq method nil))
 -      (pop opened))
 +      (setq open (car (pop opened)))
 +      ;; Type and name are the same...
 +      (when (and (equal (car method) (car open))
 +               (equal (cadr method) (cadr open))
 +               ;; ... but the rest of the parameters differ.
 +               (not (gnus-methods-sloppily-equal method open)))
 +      (setq method nil)))
      (not method)))
  
  (defun gnus-server-extend-method (group method)
    (if (or (not (inline (gnus-similar-server-opened method)))
          (not (cddr method)))
        method
 -    `(,(car method) ,(concat (cadr method) "+" group)
 -      (,(intern (format "%s-address" (car method))) ,(cadr method))
 -      ,@(cddr method))))
 +    (setq method
 +        `(,(car method) ,(concat (cadr method) "+" group)
 +          (,(intern (format "%s-address" (car method))) ,(cadr method))
 +          ,@(cddr method)))
 +    (push method gnus-extended-servers)
 +    method))
  
  (defun gnus-server-status (method)
    "Return the status of METHOD."
        (format "%s using %s" address (car server))
        (format "%s" (car server)))))
  
 +(defun gnus-same-method-different-name (method)
 +  (let ((slot (intern (concat (symbol-name (car method)) "-address"))))
 +    (unless (assq slot (cddr method))
 +      (setq method
 +          (append method (list (list slot (nth 1 method)))))))
 +  (let ((methods gnus-extended-servers)
 +      open found)
 +    (while (and (not found)
 +              (setq open (pop methods)))
 +      (when (and (eq (car method) (car open))
 +               (gnus-sloppily-equal-method-parameters method open))
 +      (setq found open)))
 +    found))
 +
  (defun gnus-find-method-for-group (group &optional info)
    "Find the select method that GROUP uses."
    (or gnus-override-method
                (cond ((stringp method)
                       (inline (gnus-server-to-method method)))
                      ((stringp (cadr method))
 -                     (inline (gnus-server-extend-method group method)))
 +                     (or
 +                      (inline
 +                       (gnus-same-method-different-name method))
 +                      (inline (gnus-server-extend-method group method))))
                      (t
                       method)))
          (cond ((equal (cadr method) "")
@@@ -4224,9 -4291,9 +4224,9 @@@ Allow completion over sensible values.
                  gnus-predefined-server-alist
                  gnus-server-alist))
         (method
 -        (completing-read
 -         prompt servers
 -         nil t nil 'gnus-method-history)))
 +        (gnus-completing-read
 +         prompt (mapcar 'car servers)
 +         t nil 'gnus-method-history)))
      (cond
       ((equal method "")
        (setq method gnus-select-method))
@@@ -4342,16 -4409,10 +4342,16 @@@ If ARG is non-nil and a positive number
  startup level.  If ARG is non-nil and not a positive number, Gnus will
  prompt the user for the name of an NNTP server to use."
    (interactive "P")
 +  ;; When using the development version of Gnus, load the gnus-load
 +  ;; file.
 +  (unless (string-match "^Gnus" gnus-version)
 +    (load "gnus-load" nil t))
    (unless (byte-code-function-p (symbol-function 'gnus))
      (message "You should byte-compile Gnus")
      (sit-for 2))
 -  (gnus-1 arg dont-connect slave))
 +  (let ((gnus-action-message-log (list nil)))
 +    (gnus-1 arg dont-connect slave)
 +    (gnus-final-warning)))
  
  ;; Allow redefinition of Gnus functions.
  
  
  (provide 'gnus)
  
 -;; arch-tag: acebeeab-f331-4f8f-a7ea-89c58c84f636
  ;;; gnus.el ends here
diff --combined lisp/gnus/nnfolder.el
index dd11ff71dd3be3fe487f2c2e99624c17fa54092d,d90e836e246a3188fe4ed2b7d0c63f3182861f9e..c6b4c0825e305719b49d4b08c2ca6c3063b1ee06
@@@ -1,6 -1,7 +1,6 @@@
  ;;; nnfolder.el --- mail folder access for Gnus
  
 -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 -;;   2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 +;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
  
  ;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
  ;;      ShengHuo Zhu <zsh@cs.rochester.edu> (adding NOV)
@@@ -28,7 -29,7 +28,7 @@@
  
  ;;; Code:
  
 -;; For Emacs < 22.2.
 +;; For Emacs <22.2 and XEmacs.
  (eval-and-compile
    (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
  
@@@ -156,7 -157,8 +156,7 @@@ the group.  Then the marks file will b
  (nnoo-define-basics nnfolder)
  
  (deffoo nnfolder-retrieve-headers (articles &optional group server fetch-old)
 -  (save-excursion
 -    (set-buffer nntp-server-buffer)
 +  (with-current-buffer nntp-server-buffer
      (erase-buffer)
      (let (article start stop num)
        (nnfolder-possibly-change-group group server)
  
  (deffoo nnfolder-request-article (article &optional group server buffer)
    (nnfolder-possibly-change-group group server)
 -  (save-excursion
 -    (set-buffer nnfolder-current-buffer)
 +  (with-current-buffer nnfolder-current-buffer
      (goto-char (point-min))
      (when (nnfolder-goto-article article)
        (let (start stop)
                                      (point) (point-at-eol)))
                    -1))))))))
  
 -(deffoo nnfolder-request-group (group &optional server dont-check)
 +(deffoo nnfolder-request-group (group &optional server dont-check info)
    (nnfolder-possibly-change-group group server t)
    (save-excursion
      (cond ((not (assoc group nnfolder-group-alist))
    (when nnfolder-get-new-mail
      (nnfolder-possibly-change-group group server)
      (nnmail-get-new-mail
 -     'nnfolder
 -     (lambda ()
 -       (let ((bufs nnfolder-buffer-alist))
 -       (save-excursion
 -         (while bufs
 -           (if (not (gnus-buffer-live-p (nth 1 (car bufs))))
 -               (setq nnfolder-buffer-alist
 -                     (delq (car bufs) nnfolder-buffer-alist))
 -             (set-buffer (nth 1 (car bufs)))
 -             (nnfolder-save-buffer)
 -             (kill-buffer (current-buffer)))
 -           (setq bufs (cdr bufs))))))
 -     nnfolder-directory
 -     group)))
 +     'nnfolder 'nnfolder-save-all-buffers
 +     nnfolder-directory group)))
 +
 +(defun nnfolder-save-all-buffers ()
 +  (let ((bufs nnfolder-buffer-alist))
 +    (save-excursion
 +      (while bufs
 +      (if (not (gnus-buffer-live-p (nth 1 (car bufs))))
 +          (setq nnfolder-buffer-alist
 +                (delq (car bufs) nnfolder-buffer-alist))
 +        (set-buffer (nth 1 (car bufs)))
 +        (nnfolder-save-buffer)
 +        (kill-buffer (current-buffer)))
 +      (setq bufs (cdr bufs))))))
  
  ;; Don't close the buffer if we're not shutting down the server.  This way,
  ;; we can keep the buffer in the group buffer cache, and not have to grovel
              nnfolder-current-group (car inf))))
      (when (and nnfolder-current-buffer
               (buffer-name nnfolder-current-buffer))
 -      (save-excursion
 -      (set-buffer nnfolder-current-buffer)
 +      (with-current-buffer nnfolder-current-buffer
        ;; If the buffer was modified, write the file out now.
        (nnfolder-save-buffer)
        ;; If we're shutting the server down, we need to kill the
        target)
      (nnmail-activate 'nnfolder)
  
 -    (save-excursion
 -      (set-buffer nnfolder-current-buffer)
 +    (with-current-buffer nnfolder-current-buffer
        ;; Since messages are sorted in arrival order and expired in the
        ;; same order, we can stop as soon as we find a message that is
        ;; too old.
        (nnfolder-save-buffer)
        (nnfolder-adjust-min-active newsgroup)
        (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
 +      (nnfolder-save-all-buffers)
        (gnus-sorted-difference articles (nreverse deleted-articles)))))
  
 -(deffoo nnfolder-request-move-article (article group server accept-form 
 +(deffoo nnfolder-request-move-article (article group server accept-form
                                               &optional last move-is-internal)
    (save-excursion
      (let ((buf (get-buffer-create " *nnfolder move*"))
          result)
        (and
         (nnfolder-request-article article group server)
 -       (save-excursion
 -       (set-buffer buf)
 +       (with-current-buffer buf
         (erase-buffer)
         (insert-buffer-substring nntp-server-buffer)
         (goto-char (point-min))
        (while (re-search-backward (concat "^" nnfolder-article-marker) nil t)
          (delete-region (point) (progn (forward-line 1) (point))))
        (when nnmail-cache-accepted-message-ids
 -        (nnmail-cache-insert (nnmail-fetch-field "message-id") 
 +        (nnmail-cache-insert (nnmail-fetch-field "message-id")
                               group
                               (nnmail-fetch-field "subject")
                               (nnmail-fetch-field "from")))
  
  (deffoo nnfolder-request-replace-article (article group buffer)
    (nnfolder-possibly-change-group group)
 -  (save-excursion
 -    (set-buffer buffer)
 +  (with-current-buffer buffer
      (goto-char (point-min))
      (if (not (looking-at "X-From-Line: "))
        (insert "From nobody " (current-time-string) "\n")
        (nnfolder-delete-mail)
        (insert-buffer-substring buffer)
        (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
 -      (save-excursion
 -        (set-buffer buffer)
 +      (with-current-buffer buffer
          (let ((headers (nnfolder-parse-head article
                                              (point-min) (point-max))))
            (with-current-buffer (nnfolder-open-nov group)
  
  (deffoo nnfolder-request-rename-group (group new-name &optional server)
    (nnfolder-possibly-change-group group server)
 -  (save-excursion
 -    (set-buffer nnfolder-current-buffer)
 +  (with-current-buffer nnfolder-current-buffer
      (and (file-writable-p buffer-file-name)
         (ignore-errors
           (let ((new-file (nnfolder-group-pathname new-name)))
         (marker (concat "\n" nnfolder-article-marker))
         (number "[0-9]+")
         (activemin (cdr active)))
 -    (save-excursion
 -      (set-buffer nnfolder-current-buffer)
 +    (with-current-buffer nnfolder-current-buffer
        (goto-char (point-min))
        (while (and (search-forward marker nil t)
                  (re-search-forward number nil t))
@@@ -1090,8 -1099,8 +1090,8 @@@ This command does not work if you use s
      (gnus-make-directory (file-name-directory (buffer-file-name)))
      (let ((coding-system-for-write
           (or nnfolder-file-coding-system-for-write
-              nnfolder-file-coding-system))
-         (copyright-update nil))
+              nnfolder-file-coding-system)))
+       (set (make-local-variable 'copyright-update) nil)
        (save-buffer)))
    (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
      (nnfolder-save-nov)))
  (defun nnfolder-open-nov (group)
    (or (cdr (assoc group nnfolder-nov-buffer-alist))
        (let ((buffer (get-buffer-create (format " *nnfolder overview %s*" group))))
 -      (save-excursion
 -        (set-buffer buffer)
 +      (with-current-buffer buffer
          (set (make-local-variable 'nnfolder-nov-buffer-file-name)
               (nnfolder-group-nov-pathname group))
          (erase-buffer)
        (setq nnfolder-nov-buffer-alist (cdr nnfolder-nov-buffer-alist)))))
  
  (defun nnfolder-nov-delete-article (group article)
 -  (save-excursion
 -    (set-buffer (nnfolder-open-nov group))
 +  (with-current-buffer (nnfolder-open-nov group)
      (when (nnheader-find-nov-line article)
        (delete-region (point) (progn (forward-line 1) (point))))
      t))
        nil
      (let ((nov (nnfolder-group-nov-pathname nnfolder-current-group)))
        (when (file-exists-p nov)
 -      (save-excursion
 -        (set-buffer nntp-server-buffer)
 +      (with-current-buffer nntp-server-buffer
          (erase-buffer)
          (nnheader-insert-file-contents nov)
          (if (and fetch-old
  
  (defun nnfolder-add-nov (group article headers)
    "Add a nov line for the GROUP base."
 -  (save-excursion
 -    (set-buffer (nnfolder-open-nov group))
 +  (with-current-buffer (nnfolder-open-nov group)
      (goto-char (point-max))
      (mail-header-set-number headers article)
      (nnheader-insert-nov headers)))
      (nnfolder-open-server server))
    (unless nnfolder-marks-is-evil
      (nnfolder-open-marks group server)
 -    (dolist (action actions)
 -      (let ((range (nth 0 action))
 -          (what  (nth 1 action))
 -          (marks (nth 2 action)))
 -      (assert (or (eq what 'add) (eq what 'del)) nil
 -              "Unknown request-set-mark action: %s" what)
 -      (dolist (mark marks)
 -        (setq nnfolder-marks (gnus-update-alist-soft
 -                          mark
 -                          (funcall (if (eq what 'add) 'gnus-range-add
 -                                     'gnus-remove-from-range)
 -                                   (cdr (assoc mark nnfolder-marks)) range)
 -                          nnfolder-marks)))))
 +    (setq nnfolder-marks (nnheader-update-marks-actions nnfolder-marks actions))
      (nnfolder-save-marks group server))
    nil)
  
 -(deffoo nnfolder-request-update-info (group info &optional server)
 +(deffoo nnfolder-request-marks (group info &optional server)
    ;; Change servers.
    (when (and server
             (not (nnfolder-server-opened server)))
  
  (provide 'nnfolder)
  
 -;; arch-tag: a040d0f4-4f4e-445f-8972-839575c5f7e6
  ;;; nnfolder.el ends here
index d610da0aab6ba951bdb07ab681e3459b4be42272,0ca4a7405862ccec29c0209e546dfcfc3af45388..8672fca3a8539d035fb01dda125f79b68b8aa86b
@@@ -1,6 -1,7 +1,6 @@@
  ;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
  
 -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 -;;   2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +;; Copyright (C) 1997-2011  Free Software Foundation, Inc.
  ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
  ;;   2005, 2006, 2007, 2008, 2009, 2010, 2011
  ;;   National Institute of Advanced Industrial Science and Technology (AIST)
  
      (define-key-after map [describe-language-environment]
        `(menu-item ,(purecopy "Describe Language Environment")
 -            describe-language-environment-map
 +            ,describe-language-environment-map
              :help ,(purecopy "Show multilingual settings for a specific language")))
      (define-key-after map [describe-input-method]
        `(menu-item ,(purecopy "Describe Input Method...") describe-input-method
@@@ -285,8 -286,9 +285,8 @@@ wrong, use this command again to toggl
    "Display the HELLO file, which lists many languages and characters."
    (interactive)
    ;; We have to decode the file in any environment.
 -  (letf (((default-value 'enable-multibyte-characters) t)
 -       (coding-system-for-read 'iso-2022-7bit))
 -      (view-file (expand-file-name "HELLO" data-directory))))
 +  (letf ((coding-system-for-read 'iso-2022-7bit))
 +    (view-file (expand-file-name "HELLO" data-directory))))
  
  (defun universal-coding-system-argument (coding-system)
    "Execute an I/O command using the specified coding system."
@@@ -2034,7 -2036,7 +2034,7 @@@ See `set-language-info-alist' for use i
  
  (defun princ-list (&rest args)
    "Print all arguments with `princ', then print \"\\n\"."
 -  (while args (princ (car args)) (setq args (cdr args)))
 +  (mapc #'princ args)
    (princ "\n"))
  (make-obsolete 'princ-list "use mapc and princ instead" "23.3")
  
      ("af" . "Latin-1") ; Afrikaans
      ("am" "Ethiopic" utf-8) ; Amharic
      ("an" . "Latin-9") ; Aragonese
 -    ; ar Arabic glibc uses 8859-6
 +    ("ar" . "Arabic")
      ; as Assamese
      ; ay Aymara
      ("az" . "UTF-8") ; Azerbaijani
@@@ -2882,10 -2884,8 +2882,10 @@@ on encoding.
    :group 'mule
    :global t)
  
 -(defvar nonascii-insert-offset 0 "This variable is obsolete.")
 -(defvar nonascii-translation-table nil "This variable is obsolete.")
 +(defvar nonascii-insert-offset 0)
 +(make-obsolete-variable 'nonascii-insert-offset "do not use it." "23.1")
 +(defvar nonascii-translation-table nil)
 +(make-obsolete-variable 'nonascii-translation-table "do not use it." "23.1")
  
  (defvar ucs-names nil
    "Alist of cached (CHAR-NAME . CHAR-CODE) pairs.")
    (or ucs-names
        (let ((bmp-ranges
             '((#x0000 . #x33FF)
 -             ;; (#x3400 . #x4DBF) CJK Ideograph Extension A
 +             ;; (#x3400 . #x4DBF) CJK Ideographs Extension A
               (#x4DC0 . #x4DFF)
 -             ;; (#x4E00 . #x9FFF) CJK Ideograph
 -             (#xA000 . #x0D7FF)
 +             ;; (#x4E00 . #x9FFF) CJK Unified Ideographs
 +             (#xA000 . #xD7FF)
               ;; (#xD800 . #xFAFF) Surrogate/Private
               (#xFB00 . #xFFFD)))
            (upper-ranges
             '((#x10000 . #x134FF)
 -             ;; (#x13500 . #x1CFFF) unused
 +             ;; (#x13500 . #x167FF) unused
 +             (#x16800 . #x16A3F)
 +             ;; (#x16A40 . #x1AFFF) unused
 +             (#x1B000 . #x1B0FF)
 +             ;; (#x1B100 . #x1CFFF) unused
               (#x1D000 . #x1FFFF)
               ;; (#x20000 . #xDFFFF) CJK Ideograph Extension A, B, etc, unused
               (#xE0000 . #xE01FF)))
  (defun read-char-by-name (prompt)
    "Read a character by its Unicode name or hex number string.
  Display PROMPT and read a string that represents a character by its
- Unicode property `name' or `old-name'.  You can type a few of first
- letters of the Unicode name and use completion.  This function also
- accepts a hexadecimal number of Unicode code point or a number in
- hash notation, e.g. #o21430 for octal, #x2318 for hex, or #10r8984
- for decimal.  Returns a character as a number."
+ Unicode property `name' or `old-name'.
+ This function returns the character as a number.
+ You can type a few of the first letters of the Unicode name and
+ use completion.  If you type a substring of the Unicode name
+ preceded by an asterisk `*' and use completion, it will show all
+ the characters whose names include that substring, not necessarily
+ at the beginning of the name.
+ This function also accepts a hexadecimal number of Unicode code
+ point or a number in hash notation, e.g. #o21430 for octal,
+ #x2318 for hex, or #10r8984 for decimal."
    (let* ((completion-ignore-case t)
         (input (completing-read prompt ucs-completions)))
      (cond
    "Insert COUNT copies of CHARACTER of the given Unicode code point.
  Interactively, prompts for a Unicode character name or a hex number
  using `read-char-by-name'.
+ You can type a few of the first letters of the Unicode name and
+ use completion.  If you type a substring of the Unicode name
+ preceded by an asterisk `*' and use completion, it will show all
+ the characters whose names include that substring, not necessarily
+ at the beginning of the name.
  The optional third arg INHERIT (non-nil when called interactively),
  says to inherit text properties from adjoining text, if those
  properties are sticky."
  
  (define-key ctl-x-map "8\r" 'ucs-insert)
  
 -;; arch-tag: b382c432-4b36-460e-bf4c-05efd0bb18dc
  ;;; mule-cmds.el ends here
diff --combined lisp/mail/rmail.el
index 07f6920a1283bd1bcd94646e819ea167080d6f9e,fc4b642e8bbc756737bb7a61f137c246be13c00f..4c8c821419504216183205c66e2973cb2064fd0c
@@@ -1,6 -1,7 +1,6 @@@
  ;;; rmail.el --- main code of "RMAIL" mail reader for Emacs
  
 -;; Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998,
 -;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +;; Copyright (C) 1985-1988, 1993-1998, 2000-2011
  ;;   Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
@@@ -191,7 -192,7 +191,7 @@@ please report it with \\[report-emacs-b
    :group 'rmail-retrieve
    :type '(repeat (directory)))
  
 -(declare-function rmail-dont-reply-to "mail-utils" (destinations))
 +(declare-function mail-dont-reply-to "mail-utils" (destinations))
  (declare-function rmail-update-summary "rmailsum" (&rest ignore))
  
  (defun rmail-probe (prog)
@@@ -283,16 -284,26 +283,16 @@@ Setting this variable has an effect onl
    :version "21.1")
  
  ;;;###autoload
 -(defcustom rmail-dont-reply-to-names nil
 -  "A regexp specifying addresses to prune from a reply message.
 -If this is nil, it is set the first time you compose a reply, to
 -a value which excludes your own email address, plus whatever is
 -specified by `rmail-default-dont-reply-to-names'.
 -
 -Matching addresses are excluded from the CC field in replies, and
 -also the To field, unless this would leave an empty To field."
 -  :type '(choice regexp (const :tag "Your Name" nil))
 -  :group 'rmail-reply)
 +(defvaralias 'rmail-dont-reply-to-names 'mail-dont-reply-to-names)
  
  ;;;###autoload
 -(defvar rmail-default-dont-reply-to-names (purecopy "\\`info-")
 -  "Regexp specifying part of the default value of `rmail-dont-reply-to-names'.
 -This is used when the user does not set `rmail-dont-reply-to-names'
 -explicitly.  (The other part of the default value is the user's
 -email address and name.)  It is useful to set this variable in
 -the site customization file.  The default value is conventionally
 -used for large mailing lists to broadcast announcements.")
 -;; Is it really useful to set this site-wide?
 +(defvar rmail-default-dont-reply-to-names nil
 +  "Regexp specifying part of the default value of `mail-dont-reply-to-names'.
 +This is used when the user does not set `mail-dont-reply-to-names'
 +explicitly.")
 +;;;###autoload
 +(make-obsolete-variable 'rmail-default-dont-reply-to-names
 +                        'mail-dont-reply-to-names "24.1")
  
  ;;;###autoload
  (defcustom rmail-ignored-headers
@@@ -3430,62 -3441,30 +3430,62 @@@ does not pop any summary buffer.
  ;;;; *** Rmail Mailing Commands ***
  
  (defun rmail-start-mail (&optional noerase to subject in-reply-to cc
 -                                 replybuffer sendactions same-window others)
 -  (let (yank-action)
 +                                 replybuffer sendactions same-window
 +                                 other-headers)
 +  (let ((switch-function
 +       (cond (same-window nil)
 +             (rmail-mail-new-frame 'switch-to-buffer-other-frame)
 +             (t 'switch-to-buffer-other-window)))
 +      yank-action)
      (if replybuffer
        ;; The function used here must behave like insert-buffer wrt
        ;; point and mark (see doc of sc-cite-original).
        (setq yank-action (list 'insert-buffer replybuffer)))
 -    (setq others (cons (cons "cc" cc) others))
 -    (setq others (cons (cons "in-reply-to" in-reply-to) others))
 -    (if same-window
 -      (compose-mail to subject others
 -                    noerase nil
 -                    yank-action sendactions)
 -      (if rmail-mail-new-frame
 -        (prog1
 -            (compose-mail to subject others
 -                          noerase 'switch-to-buffer-other-frame
 -                          yank-action sendactions)
 -          ;; This is not a standard frame parameter;
 -          ;; nothing except sendmail.el looks at it.
 -          (modify-frame-parameters (selected-frame)
 -                                   '((mail-dedicated-frame . t))))
 -      (compose-mail to subject others
 -                    noerase 'switch-to-buffer-other-window
 -                    yank-action sendactions)))))
 +    (push (cons "cc" cc) other-headers)
 +    (push (cons "in-reply-to" in-reply-to) other-headers)
 +    (prog1
 +      (compose-mail to subject other-headers noerase
 +                    switch-function yank-action sendactions
 +                    '(rmail-mail-return))
 +      (if (eq switch-function 'switch-to-buffer-other-frame)
 +        ;; This is not a standard frame parameter; nothing except
 +        ;; sendmail.el looks at it.
 +        (modify-frame-parameters (selected-frame)
 +                                 '((mail-dedicated-frame . t)))))))
 +
 +(defun rmail-mail-return ()
 +  (cond
 +   ;; If there is only one visible frame with no special handling,
 +   ;; consider deleting the mail window to return to Rmail.
 +   ((or (null (delq (selected-frame) (visible-frame-list)))
 +      (not (or (window-dedicated-p (frame-selected-window))
 +               (and pop-up-frames (one-window-p))
 +               (cdr (assq 'mail-dedicated-frame
 +                          (frame-parameters))))))
 +    (let (rmail-flag summary-buffer)
 +      (and (not (one-window-p))
 +         (with-current-buffer
 +             (window-buffer (next-window (selected-window) 'not))
 +           (setq rmail-flag (eq major-mode 'rmail-mode))
 +           (setq summary-buffer
 +                 (and (boundp 'mail-bury-selects-summary)
 +                      mail-bury-selects-summary
 +                      (boundp 'rmail-summary-buffer)
 +                      rmail-summary-buffer
 +                      (buffer-name rmail-summary-buffer)
 +                      (not (get-buffer-window rmail-summary-buffer))
 +                      rmail-summary-buffer))))
 +      (if rmail-flag
 +        ;; If the Rmail buffer has a summary, show that.
 +        (if summary-buffer (switch-to-buffer summary-buffer)
 +          (delete-window)))))
 +   ;; If the frame was probably made for this buffer, the user
 +   ;; probably wants to delete it now.
 +   ((display-multi-frame-p)
 +    (delete-frame (selected-frame)))
 +   ;; The previous frame is where normally they have the Rmail buffer
 +   ;; displayed.
 +   (t (other-frame -1))))
  
  (defun rmail-mail ()
    "Send mail in another window.
@@@ -3568,14 -3547,15 +3568,14 @@@ use \\[mail-yank-original] to yank the 
       ;; Remove unwanted names from reply-to, since Mail-Followup-To
       ;; header causes all the names in it to wind up in reply-to, not
       ;; in cc.  But if what's left is an empty list, use the original.
 -     (let* ((reply-to-list (rmail-dont-reply-to reply-to)))
 +     (let* ((reply-to-list (mail-dont-reply-to reply-to)))
         (if (string= reply-to-list "") reply-to reply-to-list))
       subject
       (rmail-make-in-reply-to-field from date message-id)
       (if just-sender
         nil
 -       ;; mail-strip-quoted-names is NOT necessary for rmail-dont-reply-to
 -       ;; to do its job.
 -       (let* ((cc-list (rmail-dont-reply-to
 +       ;; `mail-dont-reply-to' doesn't need `mail-strip-quoted-names'.
 +       (let* ((cc-list (mail-dont-reply-to
                        (mail-strip-quoted-names
                         (if (null cc) to (concat to ", " cc))))))
         (if (string= cc-list "") nil cc-list)))
@@@ -3851,7 -3831,9 +3851,7 @@@ The message should be narrowed to just 
                           (1- (point))
                         (point-max)))))))
  
 -(declare-function mail-sendmail-delimit-header "sendmail" ())
 -(declare-function mail-header-end "sendmail" ())
 -(declare-function mail-position-on-field "sendmail" (field &optional soft))
 +(autoload 'mail-position-on-field "sendmail")
  
  (defun rmail-retry-failure ()
    "Edit a mail message which is based on the contents of the current message.
@@@ -3937,19 -3919,18 +3937,19 @@@ specifying headers which should not be 
          ;; Insert original text as initial text of new draft message.
          ;; Bind inhibit-read-only since the header delimiter
          ;; of the previous message was probably read-only.
 -        (let ((inhibit-read-only t))
 +        (let ((inhibit-read-only t)
 +              eoh)
            (erase-buffer)
            (insert-buffer-substring rmail-this-buffer
                                     bounce-start bounce-end)
            (goto-char (point-min))
            (if bounce-indent
                (indent-rigidly (point-min) (point-max) bounce-indent))
 -          ;; FIXME better to replace sendmail functions.
 -          (require 'sendmail)
 -          (mail-sendmail-delimit-header)
 +          (rfc822-goto-eoh)
 +          (setq eoh (point))
 +          (insert mail-header-separator)
            (save-restriction
 -            (narrow-to-region (point-min) (mail-header-end))
 +            (narrow-to-region (point-min) eoh)
              (rmail-delete-headers rmail-retry-ignored-headers)
              (rmail-delete-headers "^\\(sender\\|return-path\\|received\\):")
              (setq resending (mail-fetch-field "resent-to"))
@@@ -4251,7 -4232,7 +4251,7 @@@ encoded string (and the same mask) wil
  ;;; Start of automatically extracted autoloads.
  \f
  ;;;### (autoloads (rmail-edit-current-message) "rmailedit" "rmailedit.el"
 -;;;;;;  "ecd28d8d92983488673388eced6fbf50")
 +;;;;;;  "090ad9432c3bf9a6098bb9c3d7c71baf")
  ;;; Generated autoloads from rmailedit.el
  
  (autoload 'rmail-edit-current-message "rmailedit" "\
@@@ -4263,7 -4244,7 +4263,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"
 -;;;;;;  "rmailkwd.el" "bc72ffe3652be6f4c72048ae8f226fce")
 +;;;;;;  "rmailkwd.el" "08c288c88cfe7be50830122c064e3884")
  ;;; Generated autoloads from rmailkwd.el
  
  (autoload 'rmail-add-label "rmailkwd" "\
@@@ -4306,7 -4287,7 +4306,7 @@@ With prefix argument N moves forward N 
  
  ;;;***
  \f
- ;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "3e235bdf4c2e54da06abcdd72e7f7649")
+ ;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "9c0902449733cabd5c7e7d17092a7c69")
  ;;; Generated autoloads from rmailmm.el
  
  (autoload 'rmail-mime "rmailmm" "\
@@@ -4332,7 -4313,7 +4332,7 @@@ attachments as specfied by `rmail-mime-
  ;;;***
  \f
  ;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "rmailmsc.el"
 -;;;;;;  "9319e5b606ad5786c0c5994a307a38e8")
 +;;;;;;  "ca19b2f8a3e8aa01aa75ca7413f8a5ef")
  ;;; Generated autoloads from rmailmsc.el
  
  (autoload 'set-rmail-inbox-list "rmailmsc" "\
@@@ -4348,7 -4329,7 +4348,7 @@@ This applies only to the current sessio
  \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" "rmailsort.el" "16144a77fdc880034875fd624e4d73e6")
 +;;;;;;  rmail-sort-by-date) "rmailsort" "rmailsort.el" "ad1c98fe868c0e5804cf945d6c980d0b")
  ;;; Generated autoloads from rmailsort.el
  
  (autoload 'rmail-sort-by-date "rmailsort" "\
@@@ -4382,7 -4363,7 +4382,7 @@@ If prefix argument REVERSE is non-nil, 
  Sort messages of current Rmail buffer by other correspondent.
  This uses either the \"From\", \"Sender\", \"To\", or
  \"Apparently-To\" header, downcased.  Uses the first header not
 -excluded by `rmail-dont-reply-to-names'.  If prefix argument
 +excluded by `mail-dont-reply-to-names'.  If prefix argument
  REVERSE is non-nil, sorts in reverse order.
  
  \(fn REVERSE)" t nil)
@@@ -4407,7 -4388,7 +4407,7 @@@ If prefix argument REVERSE is non-nil, 
  \f
  ;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic
  ;;;;;;  rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels
 -;;;;;;  rmail-summary) "rmailsum" "rmailsum.el" "6bcfd5937a56902944a929b89b33adaa")
 +;;;;;;  rmail-summary) "rmailsum" "rmailsum.el" "3817e21639db697abe5832d3223ecfc2")
  ;;; Generated autoloads from rmailsum.el
  
  (autoload 'rmail-summary "rmailsum" "\
@@@ -4455,7 -4436,7 +4455,7 @@@ SENDERS is a string of regexps separate
  ;;;***
  \f
  ;;;### (autoloads (unforward-rmail-message undigestify-rmail-message)
 -;;;;;;  "undigest" "undigest.el" "2869c38a0051d0acab1a5968627fa57d")
 +;;;;;;  "undigest" "undigest.el" "41e6a48ea63224385c447a944528feb6")
  ;;; Generated autoloads from undigest.el
  
  (autoload 'undigestify-rmail-message "undigest" "\
@@@ -4478,4 -4459,5 +4478,4 @@@ following the containing message
  
  (provide 'rmail)
  
 -;; arch-tag: 65d257d3-c281-4a65-9c38-e61af95af2f0
  ;;; rmail.el ends here
diff --combined lisp/mail/rmailmm.el
index 127fd8ac35030aa926be5c932d3c08f9153a4a55,e44dd877e4ffb31a25e7feecf7dca3dee58930f6..0bfeb121ca453269613ac3fcfe1c3ec4ba23ec38
@@@ -1,12 -1,11 +1,12 @@@
  ;;; rmailmm.el --- MIME decoding and display stuff for RMAIL
  
 -;; Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +;; Copyright (C) 2006-2011  Free Software Foundation, Inc.
  
  ;; Author: Alexander Pohoyda
  ;;    Alex Schroeder
  ;; Maintainer: FSF
  ;; Keywords: mail
 +;; Package: rmail
  
  ;; This file is part of GNU Emacs.
  
@@@ -53,7 -52,7 +53,7 @@@
  ;;
  ;; rmail-mime
  ;;  +- rmail-mime-show <----------------------------------+
 -;;       +- rmail-mime-process                            | 
 +;;       +- rmail-mime-process                            |
  ;;            +- rmail-mime-handle                        |
  ;;                 +- rmail-mime-text-handler             |
  ;;                 +- rmail-mime-bulk-handler             |
@@@ -160,7 -159,7 +160,7 @@@ A MIME-entity is a vector of 9 elements
  
    [TYPE DISPOSITION TRANSFER-ENCODING DISPLAY HEADER TAGLINE BODY
     CHILDREN HANDLER]
 -  
 +
  TYPE and DISPOSITION correspond to MIME headers Content-Type and
  Cotent-Disposition respectively, and has this format:
  
@@@ -327,7 -326,7 +327,7 @@@ The value is a vector [ INDEX HEADER TA
      (aset new 2 (aref (rmail-mime-entity-body entity) 2)))
    (dolist (child (rmail-mime-entity-children entity))
      (rmail-mime-shown-mode child)))
 -  
 +
  (defun rmail-mime-hidden-mode (entity)
    "Make MIME-entity ENTITY displayed in the hidden mode."
    (let ((new (aref (rmail-mime-entity-display entity) 1)))
@@@ -424,7 -423,7 +424,7 @@@ to the tag line.
          (insert item)
        (apply 'insert-button item))))
    (insert "]\n"))
 -  
 +
  (defun rmail-mime-update-tagline (entity)
    "Update the current tag line for MIME-entity ENTITY."
    (let ((inhibit-read-only t)
@@@ -472,10 -471,11 +472,11 @@@ See `rmail-mime-entity' for the detail.
  HEADER is a header component of a MIME-entity object (see
  `rmail-mime-entity')."
    (with-temp-buffer
-     (let ((last-coding-system-used nil))
+     (let ((buf (current-buffer)))
        (with-current-buffer rmail-mime-mbox-buffer
-       (let ((rmail-buffer rmail-mime-mbox-buffer)
-             (rmail-view-buffer rmail-mime-view-buffer))
+       (let ((last-coding-system-used nil)
+             (rmail-buffer rmail-mime-mbox-buffer)
+             (rmail-view-buffer buf))
          (save-excursion
            (goto-char (aref header 0))
            (rmail-copy-headers (point) (aref header 1)))))
              ((string= transfer-encoding "quoted-printable")
               (quoted-printable-decode-region pos (point))))))
      (decode-coding-region pos (point) coding-system)
-     (if (or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
+     (if (and
+        (or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
+        (not (eq (coding-system-base coding-system) 'us-ascii)))
        (setq rmail-mime-coding-system coding-system))
      (or (bolp) (insert "\n"))))
  
@@@ -1141,7 -1143,7 +1144,7 @@@ modified.
  
        ;; Hide headers and handle the part.
        (put-text-property (point-min) (point-max) 'rmail-mime-entity
 -                       (rmail-mime-entity 
 +                       (rmail-mime-entity
                         content-type content-disposition
                         content-transfer-encoding
                         (vector (vector 'raw nil 'raw) (vector 'raw nil 'raw))
@@@ -1302,7 -1304,10 +1305,10 @@@ attachments as specfied by `rmail-mime-
                      (rmail-mime-find-header-encoding
                       (rmail-mime-entity-header entity)))))
          (set-buffer-file-coding-system
-          (coding-system-base rmail-mime-coding-system) t t))
+          (if rmail-mime-coding-system
+              (coding-system-base rmail-mime-coding-system)
+            'undecided)
+          t t))
        ;; Decoding failed.  ENTITY is an error message.  Insert the
        ;; original message body as is, and show warning.
        (let ((region (with-current-buffer rmail-mime-mbox-buffer
                         (re-search-forward "^$" nil 'move) (point)))
           (body-end (point-max))
           (entity (rmail-mime-parse)))
 -      (or 
 +      (or
         ;; At first, just search the headers.
         (with-temp-buffer
         (insert-buffer-substring rmail-mime-mbox-buffer nil header-end)
         (if (and entity
                (let* ((content-type (rmail-mime-entity-type entity))
                       (charset (cdr (assq 'charset (cdr content-type)))))
 -                (or (not (string-match "text/.*" (car content-type))) 
 +                (or (not (string-match "text/.*" (car content-type)))
                      (and charset
                           (not (string= (downcase charset) "us-ascii"))))))
           ;; Search the decoded MIME message.
  ;; generated-autoload-file: "rmail.el"
  ;; End:
  
 -;; arch-tag: 3f2c5e5d-1aef-4512-bc20-fd737c9d5dd9
  ;;; rmailmm.el ends here
diff --combined lisp/simple.el
index 531c9212e34d89b37b336284a58a7f1ff2604089,8f37c8e5f0b83ba08756b123a293561ababf47d2..a2dda5f04d204abb993672e3500d0c5284a73732
@@@ -1,10 -1,11 +1,10 @@@
  ;;; simple.el --- basic editing commands for Emacs
  
 -;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998,
 -;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
 -;;   2010, 2011  Free Software Foundation, Inc.
 +;; Copyright (C) 1985-1987, 1993-2011  Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
  ;; Keywords: internal
 +;; Package: emacs
  
  ;; This file is part of GNU Emacs.
  
@@@ -400,7 -401,8 +400,7 @@@ location.
  Other major modes are defined by comparison with this one."
    (interactive)
    (kill-all-local-variables)
 -  (unless delay-mode-hooks
 -    (run-hooks 'after-change-major-mode-hook)))
 +  (run-mode-hooks 'fundamental-mode-hook))
  
  ;; Special major modes to view specially formatted data rather than files.
  
      (define-key map " " 'scroll-up)
      (define-key map "\C-?" 'scroll-down)
      (define-key map "?" 'describe-mode)
 +    (define-key map "h" 'describe-mode)
      (define-key map ">" 'end-of-buffer)
      (define-key map "<" 'beginning-of-buffer)
      (define-key map "g" 'revert-buffer)
 +    (define-key map "z" 'kill-this-buffer)
      map))
  
  (put 'special-mode 'mode-class 'special)
    "Parent major mode from which special major modes should inherit."
    (setq buffer-read-only t))
  
 +;; Major mode meant to be the parent of programming modes.
 +
 +(defvar prog-mode-map
 +  (let ((map (make-sparse-keymap)))
 +    (define-key map [?\C-\M-q] 'prog-indent-sexp)
 +    map)
 +  "Keymap used for programming modes.")
 +
 +(defun prog-indent-sexp ()
 +  "Indent the expression after point."
 +  (interactive)
 +  (let ((start (point))
 +        (end (save-excursion (forward-sexp 1) (point))))
 +    (indent-region start end nil)))
 +
 +(define-derived-mode prog-mode fundamental-mode "Prog"
 +  "Major mode for editing programming language source code."
 +  (set (make-local-variable 'require-final-newline) mode-require-final-newline)
 +  (set (make-local-variable 'parse-sexp-ignore-comments) t)
 +  ;; Any programming language is always written left to right.
 +  (setq bidi-paragraph-direction 'left-to-right))
 +
  ;; Making and deleting lines.
  
  (defvar hard-newline (propertize "\n" 'hard t 'rear-nonsticky '(hard))
@@@ -459,43 -437,72 +459,43 @@@ Call `auto-fill-function' if the curren
  than the value of `fill-column' and ARG is nil."
    (interactive "*P")
    (barf-if-buffer-read-only)
 -  ;; Inserting a newline at the end of a line produces better redisplay in
 -  ;; try_window_id than inserting at the beginning of a line, and the textual
 -  ;; result is the same.  So, if we're at beginning of line, pretend to be at
 -  ;; the end of the previous line.
 -  (let ((flag (and (not (bobp))
 -                 (bolp)
 -                 ;; Make sure no functions want to be told about
 -                 ;; the range of the changes.
 -                 (not after-change-functions)
 -                 (not before-change-functions)
 -                 ;; Make sure there are no markers here.
 -                 (not (buffer-has-markers-at (1- (point))))
 -                 (not (buffer-has-markers-at (point)))
 -                 ;; Make sure no text properties want to know
 -                 ;; where the change was.
 -                 (not (get-char-property (1- (point)) 'modification-hooks))
 -                 (not (get-char-property (1- (point)) 'insert-behind-hooks))
 -                 (or (eobp)
 -                     (not (get-char-property (point) 'insert-in-front-hooks)))
 -                 ;; Make sure the newline before point isn't intangible.
 -                 (not (get-char-property (1- (point)) 'intangible))
 -                 ;; Make sure the newline before point isn't read-only.
 -                 (not (get-char-property (1- (point)) 'read-only))
 -                 ;; Make sure the newline before point isn't invisible.
 -                 (not (get-char-property (1- (point)) 'invisible))
 -                 ;; Make sure the newline before point has the same
 -                 ;; properties as the char before it (if any).
 -                 (< (or (previous-property-change (point)) -2)
 -                    (- (point) 2))))
 -      (was-page-start (and (bolp)
 -                           (looking-at page-delimiter)))
 -      (beforepos (point)))
 -    (if flag (backward-char 1))
 -    ;; Call self-insert so that auto-fill, abbrev expansion etc. happens.
 -    ;; Set last-command-event to tell self-insert what to insert.
 -    (let ((last-command-event ?\n)
 -        ;; Don't auto-fill if we have a numeric argument.
 -        ;; Also not if flag is true (it would fill wrong line);
 -        ;; there is no need to since we're at BOL.
 -        (auto-fill-function (if (or arg flag) nil auto-fill-function)))
 -      (unwind-protect
 -        (self-insert-command (prefix-numeric-value arg))
 -      ;; If we get an error in self-insert-command, put point at right place.
 -      (if flag (forward-char 1))))
 -    ;; Even if we did *not* get an error, keep that forward-char;
 -    ;; all further processing should apply to the newline that the user
 -    ;; thinks he inserted.
 -
 -    ;; Mark the newline(s) `hard'.
 -    (if use-hard-newlines
 -      (set-hard-newline-properties
 -       (- (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
 -      (save-excursion
 -        (goto-char beforepos)
 -        (beginning-of-line)
 -        (and (looking-at "[ \t]$")
 -             (> (current-left-margin) 0)
 -             (delete-region (point) (progn (end-of-line) (point))))))
 -    ;; Indent the line after the newline, except in one case:
 -    ;; when we added the newline at the beginning of a line
 -    ;; which starts a page.
 -    (or was-page-start
 -      (move-to-left-margin nil t)))
 +  ;; Call self-insert so that auto-fill, abbrev expansion etc. happens.
 +  ;; Set last-command-event to tell self-insert what to insert.
 +  (let* ((was-page-start (and (bolp) (looking-at page-delimiter)))
 +         (beforepos (point))
 +         (last-command-event ?\n)
 +         ;; Don't auto-fill if we have a numeric argument.
 +         (auto-fill-function (if arg nil auto-fill-function))
 +         (postproc
 +          ;; Do the rest in post-self-insert-hook, because we want to do it
 +          ;; *before* other functions on that hook.
 +          (lambda ()
 +            ;; Mark the newline(s) `hard'.
 +            (if use-hard-newlines
 +                (set-hard-newline-properties
 +                 (- (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.
 +            (save-excursion
 +              (goto-char beforepos)
 +              (beginning-of-line)
 +              (and (looking-at "[ \t]$")
 +                   (> (current-left-margin) 0)
 +                   (delete-region (point)
 +                                  (line-end-position))))
 +            ;; Indent the line after the newline, except in one case:
 +            ;; when we added the newline at the beginning of a line which
 +            ;; starts a page.
 +            (or was-page-start
 +                (move-to-left-margin nil t)))))
 +    (unwind-protect
 +        (progn
 +          (add-hook 'post-self-insert-hook postproc)
 +          (self-insert-command (prefix-numeric-value arg)))
 +      ;; We first used let-binding to protect the hook, but that was naive
 +      ;; since add-hook affects the symbol-default value of the variable,
 +      ;; whereas the let-binding might only protect the buffer-local value.
 +      (remove-hook 'post-self-insert-hook postproc)))
    nil)
  
  (defun set-hard-newline-properties (from to)
@@@ -514,7 -521,7 +514,7 @@@ With arg N, insert N newlines.
    (interactive "*p")
    (let* ((do-fill-prefix (and fill-prefix (bolp)))
         (do-left-margin (and (bolp) (> (current-left-margin) 0)))
 -       (loc (point))
 +       (loc (point-marker))
         ;; Don't expand an abbrev before point.
         (abbrev-mode nil))
      (newline n)
@@@ -614,30 -621,22 +614,30 @@@ On nonblank line, delete any immediatel
      (if (looking-at "^[ \t]*\n\\'")
        (delete-region (point) (point-max)))))
  
 -(defun delete-trailing-whitespace ()
 +(defun delete-trailing-whitespace (&optional start end)
    "Delete all the trailing whitespace across the current buffer.
  All whitespace after the last non-whitespace character in a line is deleted.
  This respects narrowing, created by \\[narrow-to-region] and friends.
 -A formfeed is not considered whitespace by this function."
 -  (interactive "*")
 +A formfeed is not considered whitespace by this function.
 +If the region is active, only delete whitespace within the region."
 +  (interactive (progn
 +                 (barf-if-buffer-read-only)
 +                 (if (use-region-p)
 +                     (list (region-beginning) (region-end))
 +                   (list nil nil))))
    (save-match-data
      (save-excursion
 -      (goto-char (point-min))
 -      (while (re-search-forward "\\s-$" nil t)
 -      (skip-syntax-backward "-" (save-excursion (forward-line 0) (point)))
 -      ;; Don't delete formfeeds, even if they are considered whitespace.
 -      (save-match-data
 -        (if (looking-at ".*\f")
 -            (goto-char (match-end 0))))
 -      (delete-region (point) (match-end 0))))))
 +      (let ((end-marker (copy-marker (or end (point-max))))
 +            (start (or start (point-min))))
 +        (goto-char start)
 +        (while (re-search-forward "\\s-$" end-marker t)
 +          (skip-syntax-backward "-" (save-excursion (forward-line 0) (point)))
 +          ;; Don't delete formfeeds, even if they are considered whitespace.
 +          (save-match-data
 +            (if (looking-at ".*\f")
 +                (goto-char (match-end 0))))
 +          (delete-region (point) (match-end 0)))
 +        (set-marker end-marker nil)))))
  
  (defun newline-and-indent ()
    "Insert a newline, then indent according to major mode.
@@@ -769,23 -768,19 +769,23 @@@ If BACKWARD-ONLY is non-nil, only delet
         (constrain-to-field nil orig-pos)))))
  
  (defun just-one-space (&optional n)
 -  "Delete all spaces and tabs around point, leaving one space (or N spaces)."
 +  "Delete all spaces and tabs around point, leaving one space (or N spaces).
 +If N is negative, delete newlines as well."
    (interactive "*p")
 -  (let ((orig-pos (point)))
 -    (skip-chars-backward " \t")
 +  (unless n (setq n 1))
 +  (let ((orig-pos (point))
 +        (skip-characters (if (< n 0) " \t\n\r" " \t"))
 +        (n (abs n)))
 +    (skip-chars-backward skip-characters)
      (constrain-to-field nil orig-pos)
 -    (dotimes (i (or n 1))
 +    (dotimes (i n)
        (if (= (following-char) ?\s)
          (forward-char 1)
        (insert ?\s)))
      (delete-region
       (point)
       (progn
 -       (skip-chars-forward " \t")
 +       (skip-chars-forward skip-characters)
         (constrain-to-field nil orig-pos t)))))
  \f
  (defun beginning-of-buffer (&optional arg)
@@@ -845,78 -840,6 +845,78 @@@ Don't use this command in Lisp programs
         (overlay-recenter (point))
         (recenter -3))))
  
 +(defcustom delete-active-region t
 +  "Whether single-char deletion commands delete an active region.
 +This has an effect only if Transient Mark mode is enabled, and
 +affects `delete-forward-char' and `delete-backward-char', though
 +not `delete-char'.
 +
 +If the value is the symbol `kill', the active region is killed
 +instead of deleted."
 +  :type '(choice (const :tag "Delete active region" t)
 +                 (const :tag "Kill active region" kill)
 +                 (const :tag "Do ordinary deletion" nil))
 +  :group 'editing
 +  :version "24.1")
 +
 +(defun delete-backward-char (n &optional killflag)
 +  "Delete the previous N characters (following if N is negative).
 +If Transient Mark mode is enabled, the mark is active, and N is 1,
 +delete the text in the region and deactivate the mark instead.
 +To disable this, set `delete-active-region' to nil.
 +
 +Optional second arg KILLFLAG, if non-nil, means to kill (save in
 +kill ring) instead of delete.  Interactively, N is the prefix
 +arg, and KILLFLAG is set if N is explicitly specified.
 +
 +In Overwrite mode, single character backward deletion may replace
 +tabs with spaces so as to back over columns, unless point is at
 +the end of the line."
 +  (interactive "p\nP")
 +  (unless (integerp n)
 +    (signal 'wrong-type-argument (list 'integerp n)))
 +  (cond ((and (use-region-p)
 +            delete-active-region
 +            (= n 1))
 +       ;; If a region is active, kill or delete it.
 +       (if (eq delete-active-region 'kill)
 +           (kill-region (region-beginning) (region-end))
 +         (delete-region (region-beginning) (region-end))))
 +      ;; In Overwrite mode, maybe untabify while deleting
 +      ((null (or (null overwrite-mode)
 +                 (<= n 0)
 +                 (memq (char-before) '(?\t ?\n))
 +                 (eobp)
 +                 (eq (char-after) ?\n)))
 +       (let* ((ocol (current-column))
 +              (val (delete-char (- n) killflag)))
 +         (save-excursion
 +           (insert-char ?\s (- ocol (current-column)) nil))))
 +      ;; Otherwise, do simple deletion.
 +      (t (delete-char (- n) killflag))))
 +
 +(defun delete-forward-char (n &optional killflag)
 +  "Delete the following N characters (previous if N is negative).
 +If Transient Mark mode is enabled, the mark is active, and N is 1,
 +delete the text in the region and deactivate the mark instead.
 +To disable this, set `delete-active-region' to nil.
 +
 +Optional second arg KILLFLAG non-nil means to kill (save in kill
 +ring) instead of delete.  Interactively, N is the prefix arg, and
 +KILLFLAG is set if N was explicitly specified."
 +  (interactive "p\nP")
 +  (unless (integerp n)
 +    (signal 'wrong-type-argument (list 'integerp n)))
 +  (cond ((and (use-region-p)
 +            delete-active-region
 +            (= n 1))
 +       ;; If a region is active, kill or delete it.
 +       (if (eq delete-active-region 'kill)
 +           (kill-region (region-beginning) (region-end))
 +         (delete-region (region-beginning) (region-end))))
 +      ;; Otherwise, do simple deletion.
 +      (t (delete-char n killflag))))
 +
  (defun mark-whole-buffer ()
    "Put point at beginning and mark at end of buffer.
  You probably should not use this function in Lisp programs;
@@@ -987,21 -910,6 +987,21 @@@ rather than line counts.
        (re-search-forward "[\n\C-m]" nil 'end (1- line))
        (forward-line (1- line)))))
  
 +(defun count-words-region (start end)
 +  "Print the number of words in the region.
 +When called interactively, the word count is printed in echo area."
 +  (interactive "r")
 +  (let ((count 0))
 +    (save-excursion
 +      (save-restriction
 +        (narrow-to-region start end)
 +        (goto-char (point-min))
 +        (while (forward-word 1)
 +          (setq count (1+ count)))))
 +    (if (interactive-p)
 +        (message "Region has %d words" count))
 +    count))
 +
  (defun count-lines-region (start end)
    "Print number of lines and characters in the region."
    (interactive "r")
@@@ -1150,6 -1058,8 +1150,6 @@@ in *Help* buffer.  See also the comman
    (set-keymap-parent m minibuffer-local-map)
    (setq read-expression-map m))
  
 -(defvar read-expression-history nil)
 -
  (defvar minibuffer-completing-symbol nil
    "Non-nil means completing a Lisp symbol in the minibuffer.")
  
@@@ -1302,40 -1212,6 +1302,40 @@@ to get different commands to edit and r
        (if command-history
          (error "Argument %d is beyond length of command history" arg)
        (error "There are no previous complex commands to repeat")))))
 +
 +(defun read-extended-command ()
 +  "Read command name to invoke in `execute-extended-command'."
 +  (minibuffer-with-setup-hook
 +      (lambda ()
 +      (set (make-local-variable 'minibuffer-default-add-function)
 +           (lambda ()
 +             ;; Get a command name at point in the original buffer
 +             ;; to propose it after M-n.
 +             (with-current-buffer (window-buffer (minibuffer-selected-window))
 +               (and (commandp (function-called-at-point))
 +                    (format "%S" (function-called-at-point)))))))
 +    ;; Read a string, completing from and restricting to the set of
 +    ;; all defined commands.  Don't provide any initial input.
 +    ;; Save the command read on the extended-command history list.
 +    (completing-read
 +     (concat (cond
 +            ((eq current-prefix-arg '-) "- ")
 +            ((and (consp current-prefix-arg)
 +                  (eq (car current-prefix-arg) 4)) "C-u ")
 +            ((and (consp current-prefix-arg)
 +                  (integerp (car current-prefix-arg)))
 +             (format "%d " (car current-prefix-arg)))
 +            ((integerp current-prefix-arg)
 +             (format "%d " current-prefix-arg)))
 +           ;; This isn't strictly correct if `execute-extended-command'
 +           ;; is bound to anything else (e.g. [menu]).
 +           ;; It could use (key-description (this-single-command-keys)),
 +           ;; but actually a prompt other than "M-x" would be confusing,
 +           ;; because "M-x" is a well-known prompt to read a command
 +           ;; and it serves as a shorthand for "Extended command: ".
 +           "M-x ")
 +     obarray 'commandp t nil 'extended-command-history)))
 +
  \f
  (defvar minibuffer-history nil
    "Default minibuffer history list.
@@@ -2197,11 -2073,7 +2197,11 @@@ to `shell-command-history'.
  
  Like `shell-command' but if COMMAND doesn't end in ampersand, adds `&'
  surrounded by whitespace and executes the command asynchronously.
 -The output appears in the buffer `*Async Shell Command*'."
 +The output appears in the buffer `*Async Shell Command*'.
 +
 +In Elisp, you will often be better served by calling `start-process'
 +directly, since it offers more control and does not impose the use of a
 +shell (with its need to quote arguments)."
    (interactive
     (list
      (read-shell-command "Async shell command: " nil nil
@@@ -2262,11 -2134,7 +2262,11 @@@ If the optional third argument ERROR-BU
  or buffer name to which to direct the command's standard error output.
  If it is nil, error output is mingled with regular output.
  In an interactive call, the variable `shell-command-default-error-buffer'
 -specifies the value of ERROR-BUFFER."
 +specifies the value of ERROR-BUFFER.
 +
 +In Elisp, you will often be better served by calling `call-process' or
 +`start-process' directly, since it offers more control and does not impose
 +the use of a shell (with its need to quote arguments)."
  
    (interactive
     (list
                      (error "Shell command in progress")))
                (with-current-buffer buffer
                  (setq buffer-read-only nil)
 -                (erase-buffer)
 +                ;; Setting buffer-read-only to nil doesn't suffice
 +                ;; if some text has a non-nil read-only property,
 +                ;; which comint sometimes adds for prompts.
 +                (let ((inhibit-read-only t))
 +                  (erase-buffer))
                  (display-buffer buffer)
                  (setq default-directory directory)
                  (setq proc (start-process "Shell" buffer shell-file-name
@@@ -2827,60 -2691,6 +2827,60 @@@ These commands include \\[set-mark-comm
    (reset-this-command-lengths)
    (restore-overriding-map))
  \f
 +;; This function is here rather than in subr.el because it uses CL.
 +(defmacro with-wrapper-hook (var args &rest body)
 +  "Run BODY wrapped with the VAR hook.
 +VAR is a special hook: its functions are called with a first argument
 +which is the \"original\" code (the BODY), so the hook function can wrap
 +the original function, or call it any number of times (including not calling
 +it at all).  This is similar to an `around' advice.
 +VAR is normally a symbol (a variable) in which case it is treated like
 +a hook, with a buffer-local and a global part.  But it can also be an
 +arbitrary expression.
 +ARGS is a list of variables which will be passed as additional arguments
 +to each function, after the initial argument, and which the first argument
 +expects to receive when called."
 +  (declare (indent 2) (debug t))
 +  ;; We need those two gensyms because CL's lexical scoping is not available
 +  ;; for function arguments :-(
 +  (let ((funs (make-symbol "funs"))
 +        (global (make-symbol "global"))
 +        (argssym (make-symbol "args")))
 +    ;; Since the hook is a wrapper, the loop has to be done via
 +    ;; recursion: a given hook function will call its parameter in order to
 +    ;; continue looping.
 +    `(labels ((runrestofhook (,funs ,global ,argssym)
 +                 ;; `funs' holds the functions left on the hook and `global'
 +                 ;; holds the functions left on the global part of the hook
 +                 ;; (in case the hook is local).
 +                 (lexical-let ((funs ,funs)
 +                               (global ,global))
 +                   (if (consp funs)
 +                       (if (eq t (car funs))
 +                           (runrestofhook
 +                            (append global (cdr funs)) nil ,argssym)
 +                         (apply (car funs)
 +                                (lambda (&rest ,argssym)
 +                                (runrestofhook (cdr funs) global ,argssym))
 +                                ,argssym))
 +                     ;; Once there are no more functions on the hook, run
 +                     ;; the original body.
 +                     (apply (lambda ,args ,@body) ,argssym)))))
 +       (runrestofhook ,var
 +                      ;; The global part of the hook, if any.
 +                      ,(if (symbolp var)
 +                           `(if (local-variable-p ',var)
 +                                (default-value ',var)))
 +                      (list ,@args)))))
 +
 +(defvar filter-buffer-substring-functions nil
 +  "Wrapper hook around `filter-buffer-substring'.
 +The functions on this special hook are called with 4 arguments:
 +  NEXT-FUN BEG END DELETE
 +NEXT-FUN is a function of 3 arguments (BEG END DELETE)
 +that performs the default operation.  The other 3 arguments are like
 +the ones passed to `filter-buffer-substring'.")
 +
  (defvar buffer-substring-filters nil
    "List of filter functions for `filter-buffer-substring'.
  Each function must accept a single argument, a string, and return
@@@ -2890,34 -2700,46 +2890,34 @@@ the next.  The return value of the las
  return value of `filter-buffer-substring'.
  
  If this variable is nil, no filtering is performed.")
 +(make-obsolete-variable 'buffer-substring-filters
 +                        'filter-buffer-substring-functions "24.1")
  
 -(defun filter-buffer-substring (beg end &optional delete noprops)
 +(defun filter-buffer-substring (beg end &optional delete)
    "Return the buffer substring between BEG and END, after filtering.
 -The buffer substring is passed through each of the filter
 -functions in `buffer-substring-filters', and the value from the
 -last filter function is returned.  If `buffer-substring-filters'
 -is nil, the buffer substring is returned unaltered.
 +The filtering is performed by `filter-buffer-substring-functions'.
  
  If DELETE is non-nil, the text between BEG and END is deleted
  from the buffer.
  
 -If NOPROPS is non-nil, final string returned does not include
 -text properties, while the string passed to the filters still
 -includes text properties from the buffer text.
 -
 -Point is temporarily set to BEG before calling
 -`buffer-substring-filters', in case the functions need to know
 -where the text came from.
 -
  This function should be used instead of `buffer-substring',
  `buffer-substring-no-properties', or `delete-and-extract-region'
  when you want to allow filtering to take place.  For example,
 -major or minor modes can use `buffer-substring-filters' to
 +major or minor modes can use `filter-buffer-substring-functions' to
  extract characters that are special to a buffer, and should not
  be copied into other buffers."
 -  (cond
 -   ((or delete buffer-substring-filters)
 -    (save-excursion
 -      (goto-char beg)
 -      (let ((string (if delete (delete-and-extract-region beg end)
 -                    (buffer-substring beg end))))
 -      (dolist (filter buffer-substring-filters)
 -        (setq string (funcall filter string)))
 -      (if noprops
 -          (set-text-properties 0 (length string) nil string))
 -      string)))
 -   (noprops
 -    (buffer-substring-no-properties beg end))
 -   (t
 -    (buffer-substring beg end))))
 +  (with-wrapper-hook filter-buffer-substring-functions (beg end delete)
 +    (cond
 +     ((or delete buffer-substring-filters)
 +      (save-excursion
 +        (goto-char beg)
 +        (let ((string (if delete (delete-and-extract-region beg end)
 +                        (buffer-substring beg end))))
 +          (dolist (filter buffer-substring-filters)
 +            (setq string (funcall filter string)))
 +          string)))
 +     (t
 +      (buffer-substring beg end)))))
  
  
  ;;;; Window system cut and paste hooks.
@@@ -2931,8 -2753,11 +2931,8 @@@ This variable holds a function that Ema
  is put in the kill ring, to make the new kill available to other
  programs.
  
 -The function takes one or two arguments.
 -The first argument, TEXT, is a string containing
 -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.")
 +The function takes one argument, TEXT, which is a string containing
 +the text which should be made available.")
  
  (defvar interprogram-paste-function nil
    "Function to call to get text cut from other programs.
@@@ -3021,30 -2846,27 +3021,30 @@@ argument should still be a \"useful\" s
      (if yank-handler
        (signal 'args-out-of-range
                (list string "yank-handler specified for empty string"))))
 -  (when (and kill-do-not-save-duplicates
 -             (equal string (car kill-ring)))
 -    (setq replace t))
 -  (if (fboundp 'menu-bar-update-yank-menu)
 -      (menu-bar-update-yank-menu string (and replace (car kill-ring))))
 +  (unless (and kill-do-not-save-duplicates
 +             (equal string (car kill-ring)))
 +    (if (fboundp 'menu-bar-update-yank-menu)
 +      (menu-bar-update-yank-menu string (and replace (car kill-ring)))))
    (when save-interprogram-paste-before-kill
      (let ((interprogram-paste (and interprogram-paste-function
                                     (funcall interprogram-paste-function))))
        (when interprogram-paste
 -        (if (listp interprogram-paste)
 -            (dolist (s (nreverse interprogram-paste))
 -              (push s kill-ring))
 -            (push interprogram-paste kill-ring)))))
 -  (if (and replace kill-ring)
 -      (setcar kill-ring string)
 -    (push string kill-ring)
 -    (if (> (length kill-ring) kill-ring-max)
 -      (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil)))
 +        (dolist (s (if (listp interprogram-paste)
 +                     (nreverse interprogram-paste)
 +                   (list interprogram-paste)))
 +        (unless (and kill-do-not-save-duplicates
 +                     (equal s (car kill-ring)))
 +          (push s kill-ring))))))
 +  (unless (and kill-do-not-save-duplicates
 +             (equal string (car kill-ring)))
 +    (if (and replace kill-ring)
 +      (setcar kill-ring string)
 +      (push string kill-ring)
 +      (if (> (length kill-ring) kill-ring-max)
 +        (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil))))
    (setq kill-ring-yank-pointer kill-ring)
    (if interprogram-cut-function
 -      (funcall interprogram-cut-function string (not replace))))
 +      (funcall interprogram-cut-function string)))
  (set-advertised-calling-convention
   'kill-new '(string &optional replace) "23.3")
  
@@@ -3638,18 -3460,18 +3638,18 @@@ START and END specify the portion of th
    (interactive
     (list (read-buffer "Append to buffer: " (other-buffer (current-buffer) t))
         (region-beginning) (region-end)))
 -  (let ((oldbuf (current-buffer)))
 -    (let* ((append-to (get-buffer-create buffer))
 -           (windows (get-buffer-window-list append-to t t))
 -           point)
 -      (save-excursion
 -      (with-current-buffer append-to
 -        (setq point (point))
 -        (barf-if-buffer-read-only)
 -        (insert-buffer-substring oldbuf start end)
 -        (dolist (window windows)
 -          (when (= (window-point window) point)
 -            (set-window-point window (point)))))))))
 +  (let* ((oldbuf (current-buffer))
 +         (append-to (get-buffer-create buffer))
 +         (windows (get-buffer-window-list append-to t t))
 +         point)
 +    (save-excursion
 +      (with-current-buffer append-to
 +        (setq point (point))
 +        (barf-if-buffer-read-only)
 +        (insert-buffer-substring oldbuf start end)
 +        (dolist (window windows)
 +          (when (= (window-point window) point)
 +            (set-window-point window (point))))))))
  
  (defun prepend-to-buffer (buffer start end)
    "Prepend to specified buffer the text of the region.
@@@ -3705,28 -3527,29 +3705,28 @@@ a mistake; see the documentation of `se
        (marker-position (mark-marker))
      (signal 'mark-inactive nil)))
  
 -(defcustom select-active-regions nil
 -  "If non-nil, an active region automatically sets the primary selection."
 -  :type 'boolean
 -  :group 'killing
 -  :version "23.1")
 -
 -(declare-function x-selection-owner-p "xselect.c" (&optional selection))
 -
 -;; Many places set mark-active directly, and several of them failed to also
 -;; run deactivate-mark-hook.  This shorthand should simplify.
  (defsubst deactivate-mark (&optional force)
    "Deactivate the mark by setting `mark-active' to nil.
  Unless FORCE is non-nil, this function does nothing if Transient
  Mark mode is disabled.
  This function also runs `deactivate-mark-hook'."
    (when (or transient-mark-mode force)
 -    ;; Copy the latest region into the primary selection, if desired.
 -    (and select-active-regions
 -       mark-active
 -       (display-selections-p)
 -       (x-selection-owner-p 'PRIMARY)
 -       (x-set-selection 'PRIMARY (buffer-substring-no-properties
 -                                  (region-beginning) (region-end))))
 +    (when (and (if (eq select-active-regions 'only)
 +                 (eq (car-safe transient-mark-mode) 'only)
 +               select-active-regions)
 +             (region-active-p)
 +             (display-selections-p))
 +      ;; The var `saved-region-selection', if non-nil, is the text in
 +      ;; the region prior to the last command modifying the buffer.
 +      ;; Set the selection to that, or to the current region.
 +      (cond (saved-region-selection
 +           (x-set-selection 'PRIMARY saved-region-selection)
 +           (setq saved-region-selection nil))
 +          ((/= (region-beginning) (region-end))
 +           (x-set-selection 'PRIMARY
 +                            (buffer-substring-no-properties
 +                             (region-beginning)
 +                             (region-end))))))
      (if (and (null force)
             (or (eq transient-mark-mode 'lambda)
                 (and (eq (car-safe transient-mark-mode) 'only)
    (when (mark t)
      (setq mark-active t)
      (unless transient-mark-mode
 -      (setq transient-mark-mode 'lambda))
 -    (when (and select-active-regions
 -             (display-selections-p))
 -      (x-set-selection 'PRIMARY (current-buffer)))))
 +      (setq transient-mark-mode 'lambda))))
  
  (defun set-mark (pos)
    "Set this buffer's mark to POS.  Don't use this function!
@@@ -3767,6 -3593,9 +3767,6 @@@ store it in a Lisp variable.  Example
        (progn
        (setq mark-active t)
        (run-hooks 'activate-mark-hook)
 -      (when (and select-active-regions
 -                 (display-selections-p))
 -        (x-set-selection 'PRIMARY (current-buffer)))
        (set-marker (mark-marker) pos (current-buffer)))
      ;; Normally we never clear mark-active except in Transient Mark mode.
      ;; But when we actually clear out the mark value too, we must
@@@ -3850,6 -3679,8 +3850,6 @@@ Display `Mark set' unless the optional 
        (push-mark nil nomsg t)
        (setq mark-active t)
        (run-hooks 'activate-mark-hook)
 -      (and select-active-regions (display-selections-p)
 -         (x-set-selection 'PRIMARY (current-buffer)))
        (unless nomsg
        (message "Mark activated")))))
  
@@@ -4039,8 -3870,8 +4039,8 @@@ deactivate it, and restore the variabl
  its earlier value."
    (cond ((and shift-select-mode this-command-keys-shift-translated)
           (unless (and mark-active
 -                      (eq (car-safe transient-mark-mode) 'only))
 -           (setq transient-mark-mode
 +                    (eq (car-safe transient-mark-mode) 'only))
 +         (setq transient-mark-mode
                   (cons 'only
                         (unless (eq transient-mark-mode 'lambda)
                           transient-mark-mode)))
@@@ -4071,8 -3902,31 +4071,8 @@@ Invoke \\[apropos-documentation] and ty
  \"mark.*active\" at the prompt, to see the documentation of
  commands which are sensitive to the Transient Mark mode."
    :global t
 -  :init-value (not noninteractive)
 -  :initialize 'custom-initialize-delay
 -  :group 'editing-basics)
 -
 -;; The variable transient-mark-mode is ugly: it can take on special
 -;; values.  Document these here.
 -(defvar transient-mark-mode t
 -  "*Non-nil if Transient Mark mode is enabled.
 -See the command `transient-mark-mode' for a description of this minor mode.
 -
 -Non-nil also enables highlighting of the region whenever the mark is active.
 -The variable `highlight-nonselected-windows' controls whether to highlight
 -all windows or just the selected window.
 -
 -Lisp programs may give this variable certain special values:
 -
 -- A value of `lambda' enables Transient Mark mode temporarily.
 -  It is disabled again after any subsequent action that would
 -  normally deactivate the mark (e.g. buffer modification).
 -
 -- A value of (only . OLDVAL) enables Transient Mark mode
 -  temporarily.  After any subsequent point motion command that is
 -  not shift-translated, or any other action that would normally
 -  deactivate the mark (e.g. buffer modification), the value of
 -  `transient-mark-mode' is set to OLDVAL.")
 +  ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
 +  :variable transient-mark-mode)
  
  (defvar widen-automatically t
    "Non-nil means it is ok for commands to call `widen' when they want to.
@@@ -4082,14 -3936,6 +4082,14 @@@ the current accessible part of the buff
  If `widen-automatically' is nil, these commands will do something else
  as a fallback, and won't change the buffer bounds.")
  
 +(defvar non-essential nil
 +  "Whether the currently executing code is performing an essential task.
 +This variable should be non-nil only when running code which should not
 +disturb the user.  E.g. it can be used to prevent Tramp from prompting the
 +user for a password when we are simply scanning a set of files in the
 +background or displaying possible completions before the user even asked
 +for it.")
 +
  (defun pop-global-mark ()
    "Pop off global mark ring and jump to the top location."
    (interactive)
@@@ -4153,10 -3999,9 +4153,10 @@@ and more reliable (no dependence on goa
            (insert (if use-hard-newlines hard-newline "\n")))
        (line-move arg nil nil try-vscroll))
      (if (called-interactively-p 'interactive)
 -      (condition-case nil
 +      (condition-case err
            (line-move arg nil nil try-vscroll)
 -        ((beginning-of-buffer end-of-buffer) (ding)))
 +        ((beginning-of-buffer end-of-buffer)
 +         (signal (car err) (cdr err))))
        (line-move arg nil nil try-vscroll)))
    nil)
  
@@@ -4184,10 -4029,9 +4184,10 @@@ to use and more reliable (no dependenc
    (interactive "^p\np")
    (or arg (setq arg 1))
    (if (called-interactively-p 'interactive)
 -      (condition-case nil
 +      (condition-case err
          (line-move (- arg) nil nil try-vscroll)
 -      ((beginning-of-buffer end-of-buffer) (ding)))
 +      ((beginning-of-buffer end-of-buffer)
 +       (signal (car err) (cdr err))))
      (line-move (- arg) nil nil try-vscroll))
    nil)
  
@@@ -4273,6 -4117,11 +4273,6 @@@ If nil, `line-move' moves point by logi
         ;; When already vscrolled, we vscroll some more if we can,
         ;; or clear vscroll and move forward at end of tall image.
         ((> (setq vs (window-vscroll nil t)) 0)
 -
 -        ;; If we are vscrolling an image at the top of the screen,
 -        ;; we could actually advance point if this yields space
 -        ;; below....
 -
          (when (> rbot 0)
            (set-window-vscroll nil (+ vs (min rbot (frame-char-height))) t)))
         ;; If cursor just entered the bottom scroll margin, move forward,
  
        (let (new
            (old (point))
 -          (line-beg (save-excursion (beginning-of-line) (point)))
 +          (line-beg (line-beginning-position))
            (line-end
             ;; Compute the end of the line
             ;; ignoring effectively invisible newlines.
@@@ -4604,7 -4453,7 +4604,7 @@@ and `current-column' to be able to igno
        ;; that will get us to the same place on the screen
        ;; but with a more reasonable buffer position.
        (goto-char normal-location)
 -      (let ((line-beg (save-excursion (beginning-of-line) (point))))
 +      (let ((line-beg (line-beginning-position)))
          (while (and (not (bolp)) (invisible-p (1- (point))))
            (goto-char (previous-char-property-change (point) line-beg))))))))
  
@@@ -4627,9 -4476,6 +4627,9 @@@ rests.
               (let ((goal-column 0)
                     (line-move-visual nil))
                 (and (line-move arg t)
 +                    ;; With bidi reordering, we may not be at bol,
 +                    ;; so make sure we are.
 +                    (skip-chars-backward "^\n")
                      (not (bobp))
                      (progn
                        (while (and (not (bobp)) (invisible-p (1- (point))))
@@@ -4892,7 -4738,52 +4892,7 @@@ This also turns on `word-wrap' in the b
  (define-globalized-minor-mode global-visual-line-mode
    visual-line-mode turn-on-visual-line-mode
    :lighter " vl")
 -\f
 -(defun scroll-other-window-down (lines)
 -  "Scroll the \"other window\" down.
 -For more details, see the documentation for `scroll-other-window'."
 -  (interactive "P")
 -  (scroll-other-window
 -   ;; Just invert the argument's meaning.
 -   ;; We can do that without knowing which window it will be.
 -   (if (eq lines '-) nil
 -     (if (null lines) '-
 -       (- (prefix-numeric-value lines))))))
 -
 -(defun beginning-of-buffer-other-window (arg)
 -  "Move point to the beginning of the buffer in the other window.
 -Leave mark at previous position.
 -With arg N, put point N/10 of the way from the true beginning."
 -  (interactive "P")
 -  (let ((orig-window (selected-window))
 -      (window (other-window-for-scrolling)))
 -    ;; We use unwind-protect rather than save-window-excursion
 -    ;; because the latter would preserve the things we want to change.
 -    (unwind-protect
 -      (progn
 -        (select-window window)
 -        ;; Set point and mark in that window's buffer.
 -        (with-no-warnings
 -         (beginning-of-buffer arg))
 -        ;; Set point accordingly.
 -        (recenter '(t)))
 -      (select-window orig-window))))
 -
 -(defun end-of-buffer-other-window (arg)
 -  "Move point to the end of the buffer in the other window.
 -Leave mark at previous position.
 -With arg N, put point N/10 of the way from the true end."
 -  (interactive "P")
 -  ;; See beginning-of-buffer-other-window for comments.
 -  (let ((orig-window (selected-window))
 -      (window (other-window-for-scrolling)))
 -    (unwind-protect
 -      (progn
 -        (select-window window)
 -        (with-no-warnings
 -         (end-of-buffer arg))
 -        (recenter '(t)))
 -      (select-window orig-window))))
 +
  \f
  (defun transpose-chars (arg)
    "Interchange characters around point, moving forward one character.
@@@ -5082,12 -4973,16 +5082,12 @@@ If optional arg REALLY-WORD is non-nil
                 ;; Point is neither within nor adjacent to a word.
                 (not strict))
        ;; Look for preceding word in same line.
 -      (skip-syntax-backward not-syntaxes
 -                            (save-excursion (beginning-of-line)
 -                                            (point)))
 +      (skip-syntax-backward not-syntaxes (line-beginning-position))
        (if (bolp)
            ;; No preceding word in same line.
            ;; Look for following word in same line.
            (progn
 -            (skip-syntax-forward not-syntaxes
 -                                 (save-excursion (end-of-line)
 -                                                 (point)))
 +            (skip-syntax-forward not-syntaxes (line-end-position))
              (setq start (point))
              (skip-syntax-forward syntaxes)
              (setq end (point)))
@@@ -5249,7 -5144,7 +5249,7 @@@ Some major modes set this."
  (put 'auto-fill-function 'safe-local-variable 'null)
  ;; FIXME: turn into a proper minor mode.
  ;; Add a global minor mode version of it.
 -(defun auto-fill-mode (&optional arg)
 +(define-minor-mode auto-fill-mode
    "Toggle Auto Fill mode.
  With ARG, turn Auto Fill mode on if and only if ARG is positive.
  In Auto Fill mode, inserting a space at a column beyond `current-fill-column'
@@@ -5257,7 -5152,14 +5257,7 @@@ automatically breaks the line at a prev
  
  The value of `normal-auto-fill-function' specifies the function to use
  for `auto-fill-function' when turning Auto Fill mode on."
 -  (interactive "P")
 -  (prog1 (setq auto-fill-function
 -             (if (if (null arg)
 -                     (not auto-fill-function)
 -                     (> (prefix-numeric-value arg) 0))
 -                 normal-auto-fill-function
 -                 nil))
 -    (force-mode-line-update)))
 +  :variable (eq auto-fill-function normal-auto-fill-function))
  
  ;; This holds a document string used to document auto-fill-mode.
  (defun auto-fill-function ()
@@@ -5356,7 -5258,7 +5356,7 @@@ if long lines are truncated.
  (defvar overwrite-mode-binary (purecopy " Bin Ovwrt")
    "The string displayed in the mode line when in binary overwrite mode.")
  
 -(defun overwrite-mode (arg)
 +(define-minor-mode overwrite-mode
    "Toggle overwrite mode.
  With prefix argument ARG, turn overwrite mode on if ARG is positive,
  otherwise turn it off.  In overwrite mode, printing characters typed
@@@ -5365,9 -5267,14 +5365,9 @@@ it to the right.  At the end of a line
  Before a tab, such characters insert until the tab is filled in.
  \\[quoted-insert] still inserts characters in overwrite mode; this
  is supposed to make it easier to insert characters when necessary."
 -  (interactive "P")
 -  (setq overwrite-mode
 -      (if (if (null arg) (not overwrite-mode)
 -            (> (prefix-numeric-value arg) 0))
 -          'overwrite-mode-textual))
 -  (force-mode-line-update))
 +  :variable (eq overwrite-mode 'overwrite-mode-textual))
  
 -(defun binary-overwrite-mode (arg)
 +(define-minor-mode binary-overwrite-mode
    "Toggle binary overwrite mode.
  With prefix argument ARG, turn binary overwrite mode on if ARG is
  positive, otherwise turn it off.  In binary overwrite mode, printing
@@@ -5380,7 -5287,13 +5380,7 @@@ replaces the text at the cursor, just a
  Note that binary overwrite mode is not its own minor mode; it is a
  specialization of overwrite mode, entered by setting the
  `overwrite-mode' variable to `overwrite-mode-binary'."
 -  (interactive "P")
 -  (setq overwrite-mode
 -      (if (if (null arg)
 -              (not (eq overwrite-mode 'overwrite-mode-binary))
 -            (> (prefix-numeric-value arg) 0))
 -          'overwrite-mode-binary))
 -  (force-mode-line-update))
 +  :variable (eq overwrite-mode 'overwrite-mode-binary))
  
  (define-minor-mode line-number-mode
    "Toggle Line Number mode.
@@@ -5406,26 -5319,6 +5406,26 @@@ With ARG, turn Size Indication mode on 
  otherwise turn it off.  When Size Indication mode is enabled, the
  size of the accessible part of the buffer appears in the mode line."
    :global t :group 'mode-line)
 +
 +(define-minor-mode auto-save-mode
 +  "Toggle auto-saving of contents of current buffer.
 +With prefix argument ARG, turn auto-saving on if positive, else off."
 +  :variable ((and buffer-auto-save-file-name
 +                  ;; If auto-save is off because buffer has shrunk,
 +                  ;; then toggling should turn it on.
 +                  (>= buffer-saved-size 0))
 +             . (lambda (val)
 +                 (setq buffer-auto-save-file-name
 +                       (cond
 +                        ((null val) nil)
 +                        ((and buffer-file-name auto-save-visited-file-name
 +                              (not buffer-read-only))
 +                         buffer-file-name)
 +                        (t (make-auto-save-file-name))))))
 +  ;; If -1 was stored here, to temporarily turn off saving,
 +  ;; turn it back on.
 +  (and (< buffer-saved-size 0)
 +       (setq buffer-saved-size 0)))
  \f
  (defgroup paren-blinking nil
    "Blinking matching of parens and expressions."
@@@ -5467,40 -5360,21 +5467,40 @@@ it skips the contents of comments that 
    :type 'boolean
    :group 'paren-blinking)
  
 +(defun blink-matching-check-mismatch (start end)
 +  "Return whether or not START...END are matching parens.
 +END is the current point and START is the blink position.
 +START might be nil if no matching starter was found.
 +Returns non-nil if we find there is a mismatch."
 +  (let* ((end-syntax (syntax-after (1- end)))
 +         (matching-paren (and (consp end-syntax)
 +                              (eq (syntax-class end-syntax) 5)
 +                              (cdr end-syntax))))
 +    ;; For self-matched chars like " and $, we can't know when they're
 +    ;; mismatched or unmatched, so we can only do it for parens.
 +    (when matching-paren
 +      (not (and start
 +                (or
 +                 (eq (char-after start) matching-paren)
 +                 ;; 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-safe (syntax-after start)))))))))
 +
 +(defvar blink-matching-check-function #'blink-matching-check-mismatch
 +  "Function to check parentheses mismatches.
 +The function takes two arguments (START and END) where START is the
 +position just before the opening token and END is the position right after.
 +START can be nil, if it was not found.
 +The function should return non-nil if the two tokens do not match.")
 +
  (defun blink-matching-open ()
    "Move cursor momentarily to the beginning of the sexp before point."
    (interactive)
 -  (when (and (> (point) (point-min))
 -           blink-matching-paren
 -           ;; Verify an even number of quoting characters precede the close.
 -           (= 1 (logand 1 (- (point)
 -                             (save-excursion
 -                               (forward-char -1)
 -                               (skip-syntax-backward "/\\")
 -                               (point))))))
 +  (when (and (not (bobp))
 +           blink-matching-paren)
      (let* ((oldpos (point))
 -         (message-log-max nil)  ; Don't log messages about paren matching.
 -         (atdollar (eq (syntax-class (syntax-after (1- oldpos))) 8))
 -         (isdollar)
 +         (message-log-max nil) ; Don't log messages about paren matching.
           (blinkpos
              (save-excursion
                (save-restriction
                         (and parse-sexp-ignore-comments
                              (not blink-matching-paren-dont-ignore-comments))))
                    (condition-case ()
 -                      (scan-sexps oldpos -1)
 +                      (progn
 +                        (forward-sexp -1)
 +                        ;; backward-sexp skips backward over prefix chars,
 +                        ;; so move back to the matching paren.
 +                        (while (and (< (point) (1- oldpos))
 +                                    (let ((code (syntax-after (point))))
 +                                      (or (eq (syntax-class code) 6)
 +                                          (eq (logand 1048576 (car code))
 +                                              1048576))))
 +                          (forward-char 1))
 +                        (point))
                      (error nil))))))
 -         (matching-paren
 -            (and blinkpos
 -                 ;; Not syntax '$'.
 -                 (not (setq isdollar
 -                            (eq (syntax-class (syntax-after blinkpos)) 8)))
 -                 (let ((syntax (syntax-after blinkpos)))
 -                   (and (consp syntax)
 -                        (eq (syntax-class syntax) 4)
 -                        (cdr syntax))))))
 +           (mismatch (funcall blink-matching-check-function blinkpos oldpos)))
        (cond
 -       ;; isdollar is for:
 -       ;; http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00871.html
 -       ((not (or (and isdollar blinkpos)
 -                 (and atdollar (not blinkpos)) ; see below
 -                 (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))))))
 -      (if (minibufferp)
 -          (minibuffer-message " [Mismatched parentheses]")
 -        (message "Mismatched parentheses")))
 -       ((not blinkpos)
 -        (or blink-matching-paren-distance
 -            ;; Don't complain when `$' with no blinkpos, because it
 -            ;; could just be the first one typed in the buffer.
 -            atdollar
 +       (mismatch
 +        (if blinkpos
              (if (minibufferp)
 -              (minibuffer-message " [Unmatched parenthesis]")
 -            (message "Unmatched parenthesis"))))
 +                (minibuffer-message " [Mismatched parentheses]")
 +              (message "Mismatched parentheses"))
 +          (if (minibufferp)
 +              (minibuffer-message " [Unmatched parenthesis]")
 +            (message "Unmatched parenthesis"))))
 +       ((not blinkpos) nil)
         ((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.
              (message "Matches %s"
                       (substring-no-properties open-paren-line-string)))))))))
  
 -(setq blink-paren-function 'blink-matching-open)
 +(defvar blink-paren-function 'blink-matching-open
 +  "Function called, if non-nil, whenever a close parenthesis is inserted.
 +More precisely, a char with closeparen syntax is self-inserted.")
 +
 +(defun blink-paren-post-self-insert-function ()
 +  (when (and (eq (char-before) last-command-event) ; Sanity check.
 +             (memq (char-syntax last-command-event) '(?\) ?\$))
 +             blink-paren-function
 +             (not executing-kbd-macro)
 +             (not noninteractive)
 +           ;; Verify an even number of quoting characters precede the close.
 +           (= 1 (logand 1 (- (point)
 +                             (save-excursion
 +                               (forward-char -1)
 +                               (skip-syntax-backward "/\\")
 +                               (point))))))
 +    (funcall blink-paren-function)))
 +
 +(add-hook 'post-self-insert-hook #'blink-paren-post-self-insert-function
 +          ;; Most likely, this hook is nil, so this arg doesn't matter,
 +          ;; but I use it as a reminder that this function usually
 +          ;; likes to be run after others since it does `sit-for'.
 +          'append)
  \f
  ;; This executes C-g typed while Emacs is waiting for a command.
  ;; Quitting out of a program does not go through here;
  During execution of Lisp code, this character causes a quit directly.
  At top-level, as an editor command, this simply beeps."
    (interactive)
 -  (deactivate-mark)
 +  ;; Avoid adding the region to the window selection.
 +  (setq saved-region-selection nil)
 +  (let (select-active-regions)
 +    (deactivate-mark))
    (if (fboundp 'kmacro-keyboard-quit)
        (kmacro-keyboard-quit))
    (setq defining-kbd-macro nil)
@@@ -5633,12 -5491,12 +5633,12 @@@ cancel the use of the current buffer (f
  or go back to just one window (by deleting all but the selected window)."
    (interactive)
    (cond ((eq last-command 'mode-exited) nil)
 +      ((region-active-p)
 +       (deactivate-mark))
        ((> (minibuffer-depth) 0)
         (abort-recursive-edit))
        (current-prefix-arg
         nil)
 -      ((region-active-p)
 -       (deactivate-mark))
        ((> (recursion-depth) 0)
         (exit-recursive-edit))
        (buffer-quit-function
@@@ -5722,16 -5580,51 +5722,19 @@@ appears to have customizations applyin
    :version "23.2"
    :group 'mail)
  
 -(define-mail-user-agent 'sendmail-user-agent
 -  'sendmail-user-agent-compose
 -  'mail-send-and-exit)
 -
  (defun rfc822-goto-eoh ()
-   ;; Go to header delimiter line in a mail message, following RFC822 rules
+   "If the buffer starts with a mail header, move point to the header's end.
+ Otherwise, moves to `point-min'.
+ The end of the header is the start of the next line, if there is one,
+ else the end of the last line.  This function obeys RFC822."
    (goto-char (point-min))
    (when (re-search-forward
         "^\\([:\n]\\|[^: \t\n]+[ \t\n]\\)" nil 'move)
      (goto-char (match-beginning 0))))
  
 -(defun sendmail-user-agent-compose (&optional to subject other-headers continue
 -                                            switch-function yank-action
 -                                            send-actions)
 -  (if switch-function
 -      (let ((special-display-buffer-names nil)
 -          (special-display-regexps nil)
 -          (same-window-buffer-names nil)
 -          (same-window-regexps nil))
 -      (funcall switch-function "*mail*")))
 -  (let ((cc (cdr (assoc-string "cc" other-headers t)))
 -      (in-reply-to (cdr (assoc-string "in-reply-to" other-headers t)))
 -      (body (cdr (assoc-string "body" other-headers t))))
 -    (or (mail continue to subject in-reply-to cc yank-action send-actions)
 -      continue
 -      (error "Message aborted"))
 -    (save-excursion
 -      (rfc822-goto-eoh)
 -      (while other-headers
 -      (unless (member-ignore-case (car (car other-headers))
 -                                  '("in-reply-to" "cc" "body"))
 -          (insert (car (car other-headers)) ": "
 -                  (cdr (car other-headers))
 -                  (if use-hard-newlines hard-newline "\n")))
 -      (setq other-headers (cdr other-headers)))
 -      (when body
 -      (forward-line 1)
 -      (insert body))
 -      t)))
 -
  (defun compose-mail (&optional to subject other-headers continue
 -                             switch-function yank-action send-actions)
 +                   switch-function yank-action send-actions
 +                   return-action)
    "Start composing a mail message to send.
  This uses the user's chosen mail composition package
  as selected with the variable `mail-user-agent'.
@@@ -5756,12 -5649,7 +5759,12 @@@ FUNCTION to ARGS, to insert the raw tex
  original text has been inserted in this way.)
  
  SEND-ACTIONS is a list of actions to call when the message is sent.
 -Each action has the form (FUNCTION . ARGS)."
 +Each action has the form (FUNCTION . ARGS).
 +
 +RETURN-ACTION, if non-nil, is an action for returning to the
 +caller.  It has the form (FUNCTION . ARGS).  The function is
 +called after the mail has been sent or put aside, and the mail
 +buffer buried."
    (interactive
     (list nil nil nil current-prefix-arg))
  
@@@ -5791,27 -5679,25 +5794,27 @@@ To disable this warning, set `compose-m
                                               warn-vars " "))))))
  
    (let ((function (get mail-user-agent 'composefunc)))
 -    (funcall function to subject other-headers continue
 -           switch-function yank-action send-actions)))
 +    (funcall function to subject other-headers continue switch-function
 +           yank-action send-actions return-action)))
  
  (defun compose-mail-other-window (&optional to subject other-headers continue
 -                                          yank-action send-actions)
 +                                          yank-action send-actions
 +                                          return-action)
    "Like \\[compose-mail], but edit the outgoing message in another window."
 -  (interactive
 -   (list nil nil nil current-prefix-arg))
 +  (interactive (list nil nil nil current-prefix-arg))
    (compose-mail to subject other-headers continue
 -              'switch-to-buffer-other-window yank-action send-actions))
 -
 +              'switch-to-buffer-other-window yank-action send-actions
 +              return-action))
  
  (defun compose-mail-other-frame (&optional to subject other-headers continue
 -                                          yank-action send-actions)
 +                                          yank-action send-actions
 +                                          return-action)
    "Like \\[compose-mail], but edit the outgoing message in another frame."
 -  (interactive
 -   (list nil nil nil current-prefix-arg))
 +  (interactive (list nil nil nil current-prefix-arg))
    (compose-mail to subject other-headers continue
 -              'switch-to-buffer-other-frame yank-action send-actions))
 +              'switch-to-buffer-other-frame yank-action send-actions
 +              return-action))
 +
  \f
  (defvar set-variable-value-history nil
    "History of values entered with `set-variable'.
@@@ -5900,7 -5786,6 +5903,7 @@@ With a prefix argument, set VARIABLE t
      (define-key map [left] 'previous-completion)
      (define-key map [right] 'next-completion)
      (define-key map "q" 'quit-window)
 +    (define-key map "z" 'kill-this-buffer)
      map)
    "Local map for completion list buffers.")
  
@@@ -6540,7 -6425,6 +6543,7 @@@ call `normal-erase-is-backspace-mode' (
         (if (if (eq normal-erase-is-backspace 'maybe)
                 (and (not noninteractive)
                      (or (memq system-type '(ms-dos windows-nt))
 +                      (memq window-system '(ns))
                          (and (memq window-system '(x))
                               (fboundp 'x-backspace-delete-keys-p)
                               (x-backspace-delete-keys-p))
               normal-erase-is-backspace)
             1 0)))))
  
 -(defun normal-erase-is-backspace-mode (&optional arg)
 +(define-minor-mode normal-erase-is-backspace-mode
    "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.
@@@ -6582,10 -6466,13 +6585,10 @@@ probably not turn on this mode on a tex
  have both Backspace, Delete and F1 keys.
  
  See also `normal-erase-is-backspace'."
 -  (interactive "P")
 -  (let ((enabled (or (and arg (> (prefix-numeric-value arg) 0))
 -                   (not (or arg
 -                              (eq 1 (terminal-parameter
 -                                    nil 'normal-erase-is-backspace)))))))
 -    (set-terminal-parameter nil 'normal-erase-is-backspace
 -                          (if enabled 1 0))
 +  :variable (eq (terminal-parameter
 +                 nil 'normal-erase-is-backspace) 1)
 +  (let ((enabled (eq 1 (terminal-parameter
 +                        nil 'normal-erase-is-backspace))))
  
      (cond ((or (memq window-system '(x w32 ns pc))
               (memq system-type '(ms-dos windows-nt)))
  
             (if enabled
                 (progn
 -                 (define-key local-function-key-map [delete] [?\C-d])
 +                 (define-key local-function-key-map [delete] [deletechar])
                   (define-key local-function-key-map [kp-delete] [?\C-d])
                   (define-key local-function-key-map [backspace] [?\C-?])
                     (dolist (b bindings)
             (keyboard-translate ?\C-h ?\C-h)
             (keyboard-translate ?\C-? ?\C-?))))
  
 -    (run-hooks 'normal-erase-is-backspace-hook)
      (if (called-interactively-p 'interactive)
        (message "Delete key deletes %s"
                 (if (eq 1 (terminal-parameter nil 'normal-erase-is-backspace))
@@@ -6657,6 -6545,52 +6660,6 @@@ the first N arguments are fixed at the 
  was called."
    (lexical-let ((fun fun) (args1 args))
      (lambda (&rest args2) (apply fun (append args1 args2)))))
 -
 -;; This function is here rather than in subr.el because it uses CL.
 -(defmacro with-wrapper-hook (var args &rest body)
 -  "Run BODY wrapped with the VAR hook.
 -VAR is a special hook: its functions are called with a first argument
 -which is the \"original\" code (the BODY), so the hook function can wrap
 -the original function, or call it any number of times (including not calling
 -it at all).  This is similar to an `around' advice.
 -VAR is normally a symbol (a variable) in which case it is treated like
 -a hook, with a buffer-local and a global part.  But it can also be an
 -arbitrary expression.
 -ARGS is a list of variables which will be passed as additional arguments
 -to each function, after the initial argument, and which the first argument
 -expects to receive when called."
 -  (declare (indent 2) (debug t))
 -  ;; We need those two gensyms because CL's lexical scoping is not available
 -  ;; for function arguments :-(
 -  (let ((funs (make-symbol "funs"))
 -        (global (make-symbol "global"))
 -        (argssym (make-symbol "args")))
 -    ;; Since the hook is a wrapper, the loop has to be done via
 -    ;; recursion: a given hook function will call its parameter in order to
 -    ;; continue looping.
 -    `(labels ((runrestofhook (,funs ,global ,argssym)
 -                 ;; `funs' holds the functions left on the hook and `global'
 -                 ;; holds the functions left on the global part of the hook
 -                 ;; (in case the hook is local).
 -                 (lexical-let ((funs ,funs)
 -                               (global ,global))
 -                   (if (consp funs)
 -                       (if (eq t (car funs))
 -                           (runrestofhook
 -                            (append global (cdr funs)) nil ,argssym)
 -                         (apply (car funs)
 -                                (lambda (&rest ,argssym)
 -                                (runrestofhook (cdr funs) global ,argssym))
 -                                ,argssym))
 -                     ;; Once there are no more functions on the hook, run
 -                     ;; the original body.
 -                     (apply (lambda ,args ,@body) ,argssym)))))
 -       (runrestofhook ,var
 -                      ;; The global part of the hook, if any.
 -                      ,(if (symbolp var)
 -                           `(if (local-variable-p ',var)
 -                                (default-value ',var)))
 -                      (list ,@args)))))
  \f
  ;; Minibuffer prompt stuff.
  
diff --combined lisp/vc/log-edit.el
index 9ec3e970b5e36e4bb9e660fac099e522d701e67e,373cc31e0cda9ef6aa1b56121f772bf0f779a9e0..192ab1f78d26811b8e5799a585c81fc0a236d072
@@@ -1,9 -1,10 +1,9 @@@
  ;;; log-edit.el --- Major mode for editing CVS commit messages
  
 -;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 -;;   2008, 2009, 2010, 2011  Free Software Foundation, Inc.
 +;; Copyright (C) 1999-2011  Free Software Foundation, Inc.
  
  ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 -;; Keywords: pcl-cvs cvs commit log
 +;; Keywords: pcl-cvs cvs commit log vc
  
  ;; This file is part of GNU Emacs.
  
@@@ -148,12 -149,12 +148,12 @@@ can be obtained from `log-edit-files'.
    :type '(hook :options (log-edit-set-common-indentation
                         log-edit-add-to-changelog)))
  
 -(defcustom log-edit-strip-single-file-name t
 +(defcustom log-edit-strip-single-file-name nil
    "If non-nil, remove file name from single-file log entries."
    :type 'boolean
    :safe 'booleanp
    :group 'log-edit
 -  :version "23.2")
 +  :version "24.1")
  
  (defvar cvs-changelog-full-paragraphs t)
  (make-obsolete-variable 'cvs-changelog-full-paragraphs
@@@ -417,8 -418,7 +417,8 @@@ commands (under C-x v for VC, for examp
  \\{log-edit-mode-map}"
    (set (make-local-variable 'font-lock-defaults)
         '(log-edit-font-lock-keywords t t))
 -  (make-local-variable 'log-edit-comment-ring-index))
 +  (make-local-variable 'log-edit-comment-ring-index)
 +  (hack-dir-local-variables-non-file-buffer))
  
  (defun log-edit-hide-buf (&optional buf where)
    (when (setq buf (get-buffer (or buf log-edit-files-buf)))
@@@ -621,14 -621,18 +621,18 @@@ regardless of user name or time.
            (delete-region start end)
            (rfc822-goto-eoh)
            (insert "Fixes: " fixes "\n" (if (looking-at "\n") "" "\n")))))
-     (goto-char (point-min))
-     (when (and log-edit-strip-single-file-name (looking-at "\\*\\s-+"))
-       (forward-line 1)
-       (when (not (re-search-forward "^\\*\\s-+" nil t))
-         (goto-char (point-min))
-         (skip-chars-forward "^():")
-         (skip-chars-forward ": ")
-         (delete-region (point-min) (point))))))
+     (and log-edit-strip-single-file-name
+          (progn (rfc822-goto-eoh)
+                 (if (looking-at "\n") (forward-char 1))
+                 (looking-at "\\*\\s-+"))
+          (let ((start (point)))
+            (forward-line 1)
+            (when (not (re-search-forward "^\\*\\s-+" nil t))
+              (goto-char start)
+              (skip-chars-forward "^():")
+              (skip-chars-forward ": ")
+              (delete-region start (point)))))
+     (goto-char (point-min))))
  
  ;;;;
  ;;;; functions for getting commit message from ChangeLog a file...
@@@ -874,4 -878,5 +878,4 @@@ anyway and put back as the first line o
  
  (provide 'log-edit)
  
 -;; arch-tag: 8089b39c-983b-4e83-93cd-ed0a64c7fdcc
  ;;; log-edit.el ends here