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

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

   - Update from CVS

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

25 files changed:
1  2 
admin/FOR-RELEASE
doc/emacs/ChangeLog
doc/emacs/display.texi
doc/lispref/ChangeLog
doc/lispref/commands.texi
doc/lispref/display.texi
doc/lispref/elisp.texi
doc/lispref/text.texi
lisp/ChangeLog
lisp/comint.el
lisp/dired.el
lisp/emacs-lisp/edebug.el
lisp/faces.el
lisp/files.el
lisp/frame.el
lisp/url/ChangeLog
lisp/url/url-auth.el
lisp/url/url-expand.el
lisp/url/url-util.el
src/frame.c
src/macfns.c
src/w32fns.c
src/w32term.c
src/xdisp.c
src/xfns.c

index 1d79682849fd52360372eb8c14434bd2da2f9bce,96129ec22d411c60028eb667cfb77cd5cd375f27..8ad2fc3ae50e9dfa28728fa541c8a46b1b421b9c
@@@ -36,59 -34,41 +36,52 @@@ to the hack introduced on 2005-07-01 t
  ** henman@it.to-be.co.jp 09 Aug 2006: ispell.el problem on Cygwin.
    (Did we decide that is unreproducible?)
  
- ** set-frame-size for frame without minibuffer loses mode line
- Probably a Windows only bug.  Reported by Drew Adams on bug-gnu-emacs on
- 2007-08-07.  It seems that the bug manifests itself only if resizing the
- frame makes the menu bar wrap before.  On 2007-08-16 Glenn Morris
- reported on emacs-devel that he was not able to reproduce the bug on a
- GNU/Linux system.
  * BUGS WAITING FOR MORE USER INPUT
  
 -** undefined reference getopt_long
 -Report by Daniel C. Bastos <dbast0s@yahoo.com.br> on bug-gnu-emacs
 -from 2007-08-27.  Impossible to procede without more input from OP (as
 -of 20070912, emails are bouncing) or someone else who can reproduce this.
 -http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01497.html
 +** raman@users.sf.net, sep 7: Emacs 23.0.50: Segfaults in alloc.c (batch process)
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00690.html
 +
 +* BUGS
  
 -** TAGS buffer generates spurious undo warnings
 -Waiting for recipe to produce these warnings.
 -http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00070.html
 +** Document the changes introduced by multi-tty
 +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01639.html
 +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01602.html
  
 -** emacs-22.1 with GTK problems (with patches)
 -Only outstanding issue seems to be whether Solaris 2.6 GTK can be
 -supported in the absence of recursive mutexes, via a change to
 -alloc.c, or whether configure should abort.
 -http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00055.html
 +** Does deleting frames run Lisp code?  If so, can we get rid of that?
 +It is a dangerous design.
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01330.html
  
 -* BUGS
 +** Why were the calls to x_fully_uncatch_errors commented out in eval.c?
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01987.html
 +
 +** grep et al should use font-lock to do highlighting, so that they respect font-lock-mode.
 +"can't turn off font-lock"
 +http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00548.html
 +
 +** mah@everybody.org, Sep 18: erc causes emacs to hang with multi-tty
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01765.html
 +
 +** jbw@macs.hw.ac.uk, Sep 18: before-string property has no effect if display property is empty
 +http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00094.html
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01816.html
 +
 +** sdl.web@gmail.com, Sep 24: TLS infinite loop.
 +http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01720.html
  
 -** ams@gnu.org, 9 July: eshell and external commands
 -http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00385.html
 +** herring@lanl.gov: find-func: can no longer find adviced subrs
 +This ought to work.
  
 -** jbw@macs.hw.ac.uk, Sep 19: redisplay goes horribly wrong when a
 -before-string contains multiple display properties
 -http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02442.html
 +** \\{...} produces duplicate entries
 +http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg00209.html
  
 -** jbw@macs.hw.ac.uk, Sep 19: part of display property on before-string
 - property is not displayed
 -http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00138.html
 +** menu indications of key bindings for remapped commands
 +http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01339.html
  
 -** lekktu@gmail.com, Oct 11: frame-local variables weirdness
 -I proposed a patch, which fixed this and seemed right, but the patch
 -caused other problems.  They are being investigated now.
 +** tromey@redhat.com: two View-mode "quit" bugs
 +http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00103.html
  
 +** rms: gnus-dired.el is a mistake.  Those features should not
 +be part of Gnus.  They should be moved to some other part of Emacs.
  
  * DOCUMENTATION
  
index 544cdd8f6766d82ef935e9d277a733ae10f38b07,0000000000000000000000000000000000000000..9d5e6158f3ff0d797f0d37286b1315fa2b0008bc
mode 100644,000000..100644
--- /dev/null
@@@ -1,4966 -1,0 +1,4971 @@@
 +2007-10-13  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.texi: Capitalize node names according to convention.
 +
 +2007-10-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * misc.texi (Interactive Shell): Correct INSIDE_EMACS reference.
 +
 +2007-10-11  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * emacs.texi:
 +      * files.texi (Version Systems): Minor fixes to version-control material
 +      suggseted by RMS and Robert J. Chassell.
 +
 +2007-10-10  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.texi (Version Systems):
 +      * vc-xtra.texi:
 +      * vc1-xtra.texi:
 +      * vc2-xtra.texi: Merge in changes for new VC with fileset-oriented
 +      operations.  Change of terminology from 'version' to `revision'.
 +      Revise text for adequate description of VCSes with monotonic IDs.
 +      * emacs.texi: Change of terminology from 'version' to `revision'.
 +
 +2007-10-09  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.texi (Version Systems): Describe newer VCses.
 +      Reorder the descriptions to be chronological.
 +
++2007-10-09  Richard Stallman  <rms@gnu.org>
++
++      * display.texi (Cursor Display): Correct how cursor appears
++      in nonselected windows.
++
 +2007-10-04  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Remove references to gdba
 +      and mention gud-gdb.
 +
 +2007-08-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * rmail.texi (Rmail Sorting): Improve indexing.
 +
 +2007-10-06  Juri Linkov  <juri@jurta.org>
 +
 +      * text.texi (Fill Commands): Document fill-paragraph-or-region.
 +      (Fill Prefix, Format Indentation): Replace fill-paragraph with
 +      fill-paragraph-or-region.
 +
 +      * basic.texi (Arguments): Replace fill-paragraph with
 +      fill-paragraph-or-region.
 +
 +2007-10-06  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.texi: Update the section on version control for 2007
 +      conditions. None of these changes are new-VC-specific; that
 +      will come later.
 +
 +2007-09-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi (Holidays): Change all instances of `holiday-list' back
 +      to `list-holidays'.
 +
 +2007-09-14  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi: Update all instances of mark-calendar-holidays,
 +      list-calendar-holidays, list-holidays with the new names.
 +
 +2007-09-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Move manual sources from man/ to subdirectories of doc/.
 +      Split into the Emacs manual in emacs/, and other manuals in misc/.
 +      * Makefile.in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs
 +      manual.
 +      (infodir): New variable.
 +      (info): Use $infodir.
 +      (emacsman): Delete target, not needed any more.
 +      Move all targets that are not the Emacs manual to misc/Makefile.in.
 +      (mostlyclean): Remove `gnustmp'.
 +      * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs
 +      manual.
 +      (MULTI_INSTALL_INFO, ENVADD, infodir): Go up one more level.
 +      (emacsman): Delete target, not needed any more.
 +      (clean): Remove all info files but Emacs manual.
 +      Move all targets that are not the Emacs manual to misc/Makefile.in.
 +      * emacs-xtra.texi, emacs.texi (setfilename): Go up one more level.
 +
 +      * Makefile.in (INFOSOURCES): Delete.
 +      (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi.
 +      (mostlyclean): Add *.op, *.ops.  Move *.aux *.cps *.fns *.kys *.pgs
 +      *.vrs *.toc here...
 +      (maintainer-clean): ...from here.
 +
 +2007-09-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * custom.texi (Safe File Variables): Clarify `!' and risky variables.
 +
 +2007-08-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.texi (EMACSVER): Increase to 23.0.50.
 +
 +2007-08-27  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Clarify menu item for Glossary.
 +
 +      * display.texi (Faces): Change secn title.
 +      Clarify not all fonts come from Font Lock.
 +
 +2007-08-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * basic.texi (Position Info): Add index entry for face at point.
 +      Mention that character faces are also displayed by "C-u C-x =".
 +
 +2007-08-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * glossary.texi (Glossary): Deprecate `iff'.
 +
 +2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.texi (File Conveniences): Document point motion keys in Image
 +      mode.
 +
 +2007-07-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.texi (Copying): Include license text from gpl.texi, rather than
 +      in-line.
 +
 +      * gpl.texi: New file with text of GPL.
 +      * Makefile.in (EMACSSOURCES): Add gpl.texi.
 +
 +2007-07-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * vc2-xtra.texi (Customizing VC): Add GIT and HG.
 +
 +      * dired.texi (Wdired): Mention C-x C-q key binding.
 +
 +2007-07-28  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Qualify use of "M-x gdba".
 +
 +2007-07-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.texi (Copying): Replace license with GPLv3.
 +
 +      * Relicense all FSF files to GPLv3 or later.
 +
 +2007-07-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi (Writing Calendar Files): cal-tex-diary etc only work
 +      for some calendars.
 +
 +2007-07-23  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * screen.texi (Mode Line): Describe new mode-line flag that shows if
 +      default-directory for the current buffer is on a remote machine.
 +
 +2007-07-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc2-xtra.texi (Customizing VC) <vc-handled-backends>: Update the
 +      default value.
 +
 +2007-07-21  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Why Version Control?): Improve previous change.
 +
 +2007-07-18  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.texi (Why Version Control?): New node.
 +
 +2007-07-12  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Starting GUD): Add xref to this anchor.
 +
 +2007-06-24  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi: new Back-Cover Text.
 +
 +2007-06-07  Alan Mackenzie  <acm@muc.de>
 +
 +      * display.texi (Optional Mode Line): Document the new form of
 +      line+column numbers, "(561,2)".
 +
 +2007-06-06  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * maintaining.texi (Create Tags Table): Fix typos.
 +
 +2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 22.1 released.
 +
 +2007-05-07  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi (EMACSVER): Back to 22.
 +
 +2007-05-06  Richard Stallman  <rms@gnu.org>
 +
 +      * maintaining.texi (Create Tags Table): Clean up previous change.
 +
 +2007-05-05  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 +
 +      * maintaining.texi (Create Tags Table): Add text about the dangers of
 +      making symbolic links to tags files.
 +
 +2007-05-04  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22.
 +
 +2007-05-03  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi (EMACSVER) [smallbook]: 22 for printed version.
 +
 +      * .cvsignore (*.pdf): New entry.
 +
 +      * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black
 +      for printing.
 +
 +2007-05-01  Richard Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi (Initial Options): Under --batch, mention --eval.
 +
 +2007-04-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi (Acknowledgments):
 +      * anti.texi (Antinews):
 +      * programs.texi (Program Modes): Restore mention of python.el pending
 +      consideration of legal status.
 +
 +2007-04-28  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (File Names): Fixes to ~ description on MS systems.
 +
 +2007-04-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.texi (EMACSVER): Increase to 22.1.50.
 +
 +2007-04-25  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi: Improve line breaks on copyright page,
 +      similar layout to lispref, 8.5x11 by default.
 +
 +      * dired.texi (Image-Dired): Improve line break, fix typo.
 +
 +2007-04-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * programs.texi (Program Modes):
 +      * anti.texi (Antinews):
 +      * ack.texi (Acknowledgments): python.el removed.
 +
 +2007-04-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Highlight Interactively): Correct description of
 +      hi-lock-file-patterns-policy.
 +
 +      * files.texi (File Archives): Mention self-extracting executables.
 +
 +2007-04-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * search.texi (Unconditional Replace, Query Replace): Add xref to
 +      "Replacement and Case".
 +
 +2007-04-22  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * dired.texi (Image-Dired): Move from Thumbnails node.
 +      * misc.texi (Thumbnails): Node deleted.
 +      * emacs.texi (Top): Update node listing.
 +
 +      * files.texi (File Conveniences):
 +      * ack.texi (Acknowledgments): Rename "tumme" to "image-dired".
 +
 +2007-04-21  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Highlight Interactively): Correct previous change.
 +      Clarify doc of hi-lock-find-patterns, and move new features into it.
 +
 +2007-04-20  David Koppelman  <koppel@ece.lsu.edu>
 +
 +      * display.texi (Highlight Interactively): Document
 +      hi-lock-file-patterns-policy.
 +
 +2007-04-20  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * display.texi (Scrolling): Fix typo.
 +
 +2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * doclicense.texi: Remove node heading, so that it can be included by
 +      other files.
 +
 +      * emacs.texi: Insert node heading for GFDL.
 +
 +2007-04-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmdargs.texi (Colors): Qualify "color of window" index entry by
 +      "command line".
 +
 +      * display.texi (Faces): Refer to "Creating Frames" for face
 +      and other frame customizations in .emacs.
 +
 +      * frames.texi (Creating Frames): Mention that face customizations can
 +      be put in .emacs.  Add index entries.
 +
 +2007-04-12  Richard Stallman  <rms@gnu.org>
 +
 +      * glossary.texi (Glossary): Explain `iff'.
 +
 +2007-04-11  Karl Berry  <karl@gnu.org>
 +
 +      * gnu.texi (Top),
 +      * macos.texi (Mac Font Specs),
 +      * anti.texi (Antinews),
 +      * xresources.texi (Resources),
 +      * misc.texi (Emulation),
 +      * calendar.texi (Daylight Saving),
 +      * dired.texi (Dired and Find),
 +      * rmail.texi (Remote Mailboxes),
 +      * sending.texi (Mail Headers),
 +      * programs.texi (Which Function),
 +      * files.texi (Recover),
 +      * buffers.texi (Uniquify),
 +      * frames.texi (Wheeled Mice),
 +      * killing.texi (Rectangles): Wording to improve breaks in
 +      8.5x11 format.
 +      * mule.texi (Language Environments): \hbadness=10000 since there's
 +      no way to reword.
 +      * emacs.texi (smallbook): New @set to more easily switch between
 +      smallbook and 8.5x11.
 +
 +2007-04-11  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (File Conveniences): Add xref to Tumme.
 +      Delete text about Thumbnail mode.
 +
 +2007-04-09  Alan Mackenzie  <acm@muc.de>
 +
 +      * cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its
 +      new name.  Insert concept index entries.
 +
 +2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Standard Faces): Document prefix arg for
 +      list-faces-display.
 +
 +      * rmail.texi (Rmail Scrolling): Document rmail-end-of-message.
 +
 +2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * killing.texi (Deletion): Rewrite description of M-\ prefix argument.
 +
 +      * files.texi (Misc File Ops): Rewrite description of
 +      insert-file-literally.
 +
 +2007-03-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * misc.texi (Printing): Postscript -> PostScript.
 +
 +      * ack.texi (Acknowledgments): Postscript -> PostScript.
 +
 +      * custom.texi (Init File, Init Non-ASCII): Fix last change.
 +
 +      * emacs.texi (Top): Fix the menu due to the change in custom.texi
 +      below.
 +
 +2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Non-ASCII Rebinding): Node deleted.  Material moved to
 +      Init Non-ASCII.
 +      (Init Rebinding, Init Syntax): Link to Init Non-ASCII instead.
 +      (Init Non-ASCII): New node.
 +
 +2007-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold.
 +
 +2007-03-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi, emacs.texi (Daylight Saving): Rename node from
 +      "Daylight Savings".
 +
 +      * calendar.texi: Replace "daylight savings" with "daylight
 +      saving" in text throughout.
 +
 +2007-03-04  Richard Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Safe File Variables): Minor correction.
 +
 +2007-02-28  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * rmail.texi (Movemail): Add internal ref.
 +      Don't indent the intro for the PROTO table.
 +      Format PROTO table items with @code.
 +
 +2007-02-26  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi: Remove references to bashdb.
 +
 +2007-02-19  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * mule.texi (Language Environments): Update list of supported language
 +      environments.
 +
 +2007-02-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * building.texi (Grep Searching): Fix lgrep doc.
 +
 +2007-02-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * back.texi: Remove unused file.
 +
 +2007-02-05  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 +
 +      * maintaining.texi (Tag Syntax): Now --members is the default for
 +      etags, not for ctags yet.
 +
 +2007-02-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs.texi (Top): Update the top-level menus.  Make the detailed menu
 +      headers compliant with Texinfo guidelines and with what texnfo-upd.el
 +      expects.  Add comments to prevent people from inadvertently modifying
 +      the key parts needed by `texinfo-multiple-files-update'.
 +
 +2007-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frames.texi (Secondary Selection): Window clicked does not matter
 +      when mouse-yank-at-point is non-nil.
 +
 +2007-01-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * abbrevs.texi (Editing Abbrevs): Describe how to disable a
 +      system abbrev.
 +
 +2007-01-11  Richard Stallman  <rms@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Another small cleanup.
 +
 +2007-01-10  Richard Stallman  <rms@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Yet another try to make
 +      everyone happy with that passage.
 +
 +2007-01-05  Richard Stallman  <rms@gnu.org>
 +
 +      * anti.texi (Antinews): Mention M-x shell scrolling.
 +
 +2007-01-05  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Describe gdb-max-children.
 +
 +2007-01-04  Richard Stallman  <rms@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Clarify previous change.
 +
 +2007-01-02  Richard Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Changing a Variable): Minor clarification.
 +      (Specific Customization): customize-customized => customize-unsaved.
 +
 +      * entering.texi (Entering Emacs): Clean up text about restarting
 +      Emacs for each file.
 +
 +      * misc.texi (Shell Options): Minor cleanup.
 +
 +      * msdog.texi (Windows Keyboard): Explain that Windows was incompatible
 +      with Emacs, not vice versa.
 +
 +      * programs.texi (Symbol Completion): Recommend customizing
 +      window manager.
 +
 +      * xresources.texi (Resources): Minor fix.
 +
 +2007-01-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Table of Resources): Add scrollBarWidth resource.
 +
 +2007-01-01  Richard Stallman  <rms@gnu.org>
 +
 +      * commands.texi (User Input): Document keys stolen by window mangers.
 +
 +2006-12-31  Richard Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Specific Customization): Document customize-option
 +      instead of customize-variable.
 +
 +2006-12-31  Kim F. Storm  <storm@cua.dk>
 +
 +      * major.texi (Choosing Modes): Document auto-mode-case-fold.
 +
 +2006-12-30  Kim F. Storm  <storm@cua.dk>
 +
 +      * killing.texi (CUA Bindings): Fix typo.
 +
 +      * xresources.texi (Table of Resources): Mention grow-only value for
 +      auto-resize-tool-bars.
 +
 +2006-12-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Mention widespread Windows bindings,
 +      and how to get them back.
 +
 +2006-12-26  Richard Stallman  <rms@gnu.org>
 +
 +      * calendar.texi (Holidays): Holiday listing is based on current
 +      practice, but DST is not.
 +
 +2006-12-25  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update subnode menus.
 +
 +      * mark.texi (Transient Mark): Fix xref.
 +
 +      * killing.texi (Graphical Kill): Node deleted.
 +      (Killing): Add xref to Cut and Paste.
 +      (CUA Bindings): Update xref.
 +
 +      * frames.texi (Cut and Paste): New section to hold other nodes.
 +      (Mouse Commands): Node demoted.
 +      (Cut/Paste Other App): Split out from Mouse Commands.
 +      (Word and Line Mouse): Likewise.
 +      (Secondary Selection, Clipboard): Nodes demoted.
 +
 +2006-12-24  Kevin Ryde  <user42@zip.com.au>
 +
 +      * calendar.texi (Holidays): US daylight saving begins second Sunday
 +      in March for 2007 onwards.
 +      (Daylight Savings): Show new US default daylight saving rules, 2nd
 +      Sun in Mar to 1st Sun in Nov, now in cal-dst.el.
 +
 +2006-12-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * calendar.texi (Scroll Calendar): < and > are switched.
 +
 +2006-12-23  Kevin Rodgers  <ihs_4664@yahoo.com>
 +
 +      * killing.texi (Deletion): Describe M-\ prefix argument.
 +
 +2006-12-23  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Regexp Search): Explain why forward and reverse regexp
 +      search are not mirror images.
 +
 +2006-12-19  Kim F. Storm  <storm@cua.dk>
 +
 +      * major.texi (Choosing Modes): Describe match-function elements for
 +      magic-mode-alist.
 +
 +2006-12-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Add a footnote about "Windows" keys
 +      peculiarities.
 +
 +2006-12-18  Richard Stallman  <rms@gnu.org>
 +
 +      * abbrevs.texi (Editing Abbrevs): Fix previous change.
 +
 +2006-12-17  Alan Mackenzie  <acm@muc.de>
 +
 +      * programs.texi (Left Margin Paren): Remove the bit which says
 +      that CC Mode sets open-paren-in-column-0-is-defun-start to nil.
 +      Discuss some of the issues of setting this option to nil.
 +
 +2006-12-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * abbrevs.texi (Editing Abbrevs): Mention system abbrevs.
 +
 +2006-12-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard): Clarify `w32-recognize-altgr' effect.
 +      (Windows Files): `w32-get-true-file-attributes' is only relevant for
 +      NTFS volumes.
 +      (ls in Lisp): `links' in `ls-lisp-verbosity' is only relevant to NTFS
 +      volumes.
 +
 +2006-12-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * text.texi (HTML Mode): Fix "C-c TAB".
 +
 +2006-12-09  Richard Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Invoking emacsclient): Simplify TCP file text.
 +
 +2006-12-08  Kevin Rodgers  <ihs_4664@yahoo.com>
 +
 +      * files.texi (Misc File Ops): Document insert-file-literally.
 +
 +2006-12-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmdargs.texi (Colors): Note that --color is intended for overriding
 +      the terminal defaults, not for normal invocation.
 +
 +      * misc.texi (Emacs Server): Improve wording.  Don't mention the
 +      ``server program''.  Add a cross-reference to "Init File" node.
 +      (Invoking emacsclient): Add index entries.  Document both short and
 +      long versions of command-line options.  Document the -f option.
 +
 +2006-12-06  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Outline Format): Say to set outline-regexp
 +      and outline-level with major modes and file local variables.
 +
 +2006-12-05  Micha\e,Ak\e(Bl Cadilhac  <michael.cadilhac@lrde.org>
 +
 +      * anti.texi (Antinews): Mention the alternative to
 +      `~/.emacs_SHELLNAME', which is `~/.emacs.d/init_SHELLNAME.sh'.
 +
 +      * misc.texi (Interactive Shell): Ditto.
 +
 +2006-12-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs.texi (Acknowledgments): Fix Arne J@o{}rgensen's name.
 +
 +      * ack.texi (Acknowledgments): Fix Arne J@o{}rgensen's name.
 +
 +2006-12-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mule.texi (Enabling Multibyte): Rephrase the confusing reference to a
 +      colon in the mode line.
 +
 +      * msdog.texi (Windows Processes) [@ifnottex]: Mention w32-shell-execute.
 +
 +2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Mention SPC for expanding/
 +      contracting watch expressions.
 +
 +2006-11-26  Kim F. Storm  <storm@cua.dk>
 +
 +      * kmacro.texi (Basic Keyboard Macro): Mention F3/F4 more.
 +
 +2006-11-26  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Define text command mode.
 +      Clarify how tooltips work.
 +      (GDB Graphical Interface): Explain how to run in text command mode
 +      more clearly.
 +
 +2006-11-25  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * mule.texi (Defining Fontsets): Fix use of `charset' and `font'.
 +
 +2006-11-22  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * anti.texi (Antinews): Mention --server-file and TCP sockets.
 +
 +2006-11-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * misc.texi (Interactive Shell): INSIDE_EMACS is set to t,
 +      and EMACS is deprecated.
 +
 +2006-11-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (emacs.dvi): Remove xresmini.texi.
 +
 +2006-11-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * Makefile.in (emacs.dvi): Remove xresmini.texi.
 +
 +      * emacs.texi: Include xresources.texi both for info and dvi.
 +
 +      * xresources.texi: Merge text from xresmini.texi.
 +
 +2006-11-12  Roberto Rodr\e,Am\e(Bguez  <lanubeblanca@googlemail.com>  (tiny change)
 +
 +      * glossary.texi: Fix typos.
 +
 +2006-11-06  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Acknowledgments): Fix name spelling, add Anna Bigatti.
 +
 +      * ack.texi (Acknowledgments): Fix name spelling.
 +
 +2006-11-01  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Word Search): Document incremental word search.
 +
 +2006-10-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi (Acknowledgments): Add cal-html author.
 +
 +      * calendar.texi (Writing Calendar Files): Rename section (was "LaTeX
 +      Calendar").  Describe new package cal-html.
 +      * emacs.texi (Top): Rename old node "LaTeX Calendar" to "Writing
 +      Calendar Files."
 +
 +2006-10-23  Richard Stallman  <rms@gnu.org>
 +
 +      * abbrevs.texi (Expanding Abbrevs): Expansion happens only when
 +      Abbrev mode is enabled.
 +
 +2006-10-16  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi: Update ISBN.
 +
 +2006-10-11  Kim F. Storm  <storm@cua.dk>
 +
 +      * emacs.texi (Acknowledgments): Use @dotless{i}.
 +
 +2006-10-08  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Breakpoints Buffer): Mention catchpoints.
 +
 +2006-10-08  Kim F. Storm  <storm@cua.dk>
 +
 +      * ack.texi (Acknowledgments): Update.
 +
 +      * emacs.texi (Acknowledgments): Fix bad @/ form.
 +
 +2006-10-05  Kim F. Storm  <storm@cua.dk>
 +
 +      * emacs.texi (Acknowledgments): Add more contributors.
 +
 +2006-10-03  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Acknowledgments): Update version and edition.
 +
 +2006-10-01  Karl Berry  <karl@gnu.org>
 +
 +      * custom.texi (Customization Groups): Page break to keep example buffer
 +      on one page.
 +
 +2006-09-30  Karl Berry  <karl@gnu.org>
 +
 +      * programs.texi (Basic Indent): @need to improve page break.
 +      * text.texi: Rewording to improve page breaks, and use @LaTeX{}.
 +
 +2006-09-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi (Date Formats): Doc fix for european-calendar-style.
 +
 +2006-09-29  Karl Berry  <karl@gnu.org>
 +
 +      * windows.texi (Basic Window): Remove forced @break, no longer
 +      desirable.
 +      * frames.texi (Frame Commands),
 +      * mark.texi (Marking Objects): Reword to avoid bad page break.
 +      * display.texi (Auto Scrolling): Use @tie{} to avoid bad line break.
 +
 +2006-09-19  Richard Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Dialog Boxes): Clean up wording: avoid passive,
 +      stick to present tense.
 +
 +2006-09-18  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Rename x-use-old-gtk-file-dialog
 +      to x-gtk-use-old-file-dialog.
 +      (Dialog Boxes): Document x-gtk-file-dialog-help-text.
 +
 +2006-09-15  Jay Belanger  <belanger@truman.edu>
 +
 +      * emacs.texi (GNU GENERAL PUBLIC LICENSE):
 +      Change "Library Public License" to "Lesser Public License"
 +      throughout.  Use "yyyy" to represent year.
 +
 +2006-09-12  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * files.texi (Visiting): Add index entry "open file".
 +
 +2006-09-11  Richard Stallman  <rms@gnu.org>
 +
 +      * building.texi (Compilation Mode): Clarification.
 +      (Grep Searching): Add xref to Compilation Mode.
 +
 +2006-09-08  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Search): Ref multi-file search commands here.
 +      (Other Repeating Search): Not here.
 +
 +2006-08-28  Richard Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Split Window): Update xref.
 +
 +      * basic.texi (Continuation Lines): Update xref.
 +
 +      * indent.texi (Tab Stops): Update xref.
 +
 +      * emacs.texi (Top): Update subnode menu.
 +
 +      * display.texi (Line Truncation, Displaying Boundaries): New nodes,
 +      split out of Display Custom.
 +
 +2006-08-25  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Display Custom): Add variables overline-margin
 +      and x-underline-at-descent-line.
 +
 +2006-08-25  Richard Stallman  <rms@gnu.org>
 +
 +      * entering.texi (Exiting): Rewrite to give graphical displays
 +      priority over text terminals.
 +
 +      * search.texi (Incremental Search): Move index entries.
 +
 +2006-08-23  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Init File): Reference Find Init to avoid "home
 +      directory" confusion.
 +
 +2006-08-22  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Other GDB-UI Buffers): Describe how to edit
 +      a value in the locals buffer.
 +
 +2006-08-21  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Basic Isearch): Add `isearch' index entry.
 +
 +2006-08-16  Richard Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Saving Emacs Sessions): Clean up wording.
 +
 +      * mark.texi (Marking Objects): Mention term "select all".
 +
 +      * emacs.texi (Top): Update subnode menu.
 +
 +      * help.texi (Help Mode): Move node up in file.
 +
 +2006-08-15  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Stack Buffer): Explain fringe arrow.
 +
 +2006-08-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * misc.texi (Saving Emacs Sessions): Clarify when desktop is restored
 +      on startup.
 +
 +2006-08-11  Romain Francoise  <romain@orebokech.com>
 +
 +      * ack.texi (Acknowledgments): Delete mention to zone-mode.el.
 +
 +2006-08-10  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
 +
 +      * mule.texi (Recognize Coding, Text Coding): Fix typos.
 +
 +2006-08-10  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Format Faces): Substantial rewrites to deal
 +      with face merging.  Empty regions don't count.  Clarify
 +      face property inheritance.
 +
 +2006-08-08  Romain Francoise  <romain@orebokech.com>
 +
 +      * dired.texi (Marks vs Flags): Fix typo reported by Ari Roponen
 +      <arjuropo@cc.jyu.fi>.
 +
 +2006-08-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmdargs.texi (Window Size X) <--geometry>: Only width and height
 +      apply to all frames.
 +
 +2006-08-01  Richard Stallman  <rms@gnu.org>
 +
 +      * help.texi (Name Help): Add index entries for describe-variable.
 +
 +2006-08-01  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Shorten node names.
 +      (GDB-UI Layout): Use GDB-related.
 +      (Other GDB-UI Buffers): Simplify English.
 +
 +2006-07-31  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Query Replace): Add xref for Dired's Q command.
 +
 +2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB commands in Fringe): Rename to...
 +      (Source Buffers): ..this and move forward.  Describe hollow arrow and
 +      new option gdb-find-source-frame.
 +
 +2006-07-29  Richard Stallman  <rms@gnu.org>
 +
 +      * dired.texi (Operating on Files): Simplify previous change
 +      and fix Texinfo usage.
 +
 +2006-07-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dired.texi (Operating on Files): Add cross-references.  State the
 +      Unix commands that do similar things.
 +
 +2006-07-28  Richard Stallman  <rms@gnu.org>
 +
 +      * mark.texi (Transient Mark): Clarify that region never disappears
 +      when Transient Mark mode is off, and not when it is on.
 +
 +2006-07-27  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Non-ASCII Isearch): Clarify.  Mention C-q.
 +
 +2006-07-24  Richard Stallman  <rms@gnu.org>
 +
 +      * xresources.texi (GTK styles): Fix texinfo usage.
 +
 +      * commands.texi (User Input): Explain why we teach keyboard cmds.
 +
 +      * xresources.texi, xresmini.texi, search.texi, programs.texi:
 +      * misc.texi, kmacro.texi, killing.texi, glossary.texi:
 +      * fortran-xtra.texi, files.texi, emacs.texi, emacs-xtra.texi:
 +      * doclicense.texi, display.texi, dired.texi, basic.texi:
 +      * anti.texi, ack.texi: Move periods and commas inside quotes.
 +
 +2006-07-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * cmdargs.texi (General Variables): Document EMAIL.
 +
 +2006-07-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frames.texi (Frame Commands): Mention that focus-follows-mouse
 +      doesn't have effect on MS-Windows.
 +
 +2006-07-17  Richard Stallman  <rms@gnu.org>
 +
 +      * building.texi (Grep Searching): Explain about chaining grep commands.
 +
 +2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * killing.texi, mini.texi: Fix typos.
 +
 +2006-07-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * misc.texi (Invoking emacsclient): Document behavior when emacsclient
 +      is invoked for multiple files.
 +
 +2006-07-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdog.texi (Windows Keyboard) [@iftex]: Add an @inforef to the
 +      on-line manual for the rest of this node.
 +      (Windows Mouse) <w32-pass-extra-mouse-buttons-to-system>: Include
 +      unconditionally.
 +      (Windows Processes) <w32-quote-process-args>: Include unconditionally.
 +      Improve wording.
 +      (Windows Printing): Improve wording.
 +      (Windows Misc) [@iftex]: Add an @inforef to the on-line manual for the
 +      rest of this node.
 +
 +2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * building.texi (Lisp Eval): Throughout, replace eval-current-buffer
 +      with eval-buffer.
 +
 +2006-07-05  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * mule.texi (Coding Systems, Specify Coding): Link descriptions
 +      of character translation.
 +
 +2006-07-04  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * rmail.texi (Remote Mailboxes): Add missing @code keyword.
 +
 +2006-07-03  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi (\hbadness): Set to 6000 so we aren't bothered by
 +      not-too-underfull hboxes in the TeX output.
 +      * abbrevs.texi, buffers.texi, building.texi, calendar.texi,
 +      * cmdargs.texi, custom.texi, dired.texi, macos.texi,
 +      * maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi,
 +      * sending.texi, text.texi: Fix overfull/underfull boxes.
 +
 +2006-07-03  Romain Francoise  <romain@orebokech.com>
 +
 +      * m-x.texi (M-x): Fix.
 +
 +2006-07-03  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi (Other Repeating Search): filename -> file name.
 +
 +      * misc.texi (Narrowing): Minor cleanups.
 +
 +      * files.texi (Visiting): filename -> file name.
 +
 +      * emacs.texi (Top): Update subnode menus.
 +
 +      * mule.texi (Coding Systems): Move char translation stuff here.
 +      (Specify Coding, Output Coding): New nodes, out of Recognize Coding.
 +      (Recognize Coding): Substantial local rewrites.
 +      (International): Update menu.
 +
 +      * display.texi (Auto Scrolling): New node, broken out of Scrolling.
 +      (Scrolling): Substantial local rewrites.
 +      (Display): Update menu and intro.
 +
 +      * dired.texi: filename -> file name.
 +
 +      * custom.texi (Safe File Variables): Texinfo usage fix.
 +
 +2006-07-03  Ted Zlatanov  <tzz@lifelogs.com>
 +
 +      * help.texi, m-x.texi: Lots of cleanups.
 +
 +2006-06-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdog.texi (ls in Lisp, Windows Keyboard, Windows Mouse)
 +      (Windows Processes, Windows Misc): Shorten the printed version by
 +      selectively conditioning less important portions by @ifnottex.
 +
 +2006-06-27  Richard Stallman  <rms@gnu.org>
 +
 +      * mini.texi (Minibuffer File): Minor cleanup.
 +
 +2006-06-25  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * frames.texi (XTerm Mouse): Rename to...
 +      (Text-Only Mouse): ...this.  Mention t-mouse-mode.
 +
 +      * emacs.texi (Top): Use new node name.
 +
 +2006-06-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs.texi (Top): Update the detailed menu according to changes in
 +      msdog.texi.
 +
 +      * msdog.texi (Windows Keyboard): New section.
 +      (Windows Mouse): New section.
 +      (Windows System Menu): Remove section (text merged with "Windows
 +      Keyboard").
 +      (Windows Misc): New section.
 +
 +      * dired.texi (Dired Enter): Refer to msdog.texi for ls-lisp emulation.
 +
 +      * msdog.texi (ls in Lisp): New section.
 +
 +      * files.texi (Visiting): Document case-insensitive wildcard matching
 +      under find-file-wildcards.
 +
 +2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac Input): Add description of mac-function-modifier.
 +      Now Unicode keyboard layouts work.
 +
 +2006-06-10  Richard Stallman  <rms@gnu.org>
 +
 +      * mule.texi (Recognize Coding): Clarify previous change.
 +
 +2006-06-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * mule.texi (Recognize Coding): Describe the convention of "CODING!"
 +      notation.
 +
 +2006-06-07  Kevin Ryde  <user42@zip.com.au>
 +
 +      * mule.texi (Coding Systems): Footnote xref "MS-DOS and MULE" in main
 +      manual for @ifnottex, but in emacs-extra for @iftex.
 +
 +      * cmdargs.texi (General Variables): Fix smtpmail xref.
 +
 +2006-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * programs.texi (Comment Commands):
 +      * custom.texi (Specifying File Variables):
 +      Use ;; instead of ;;; to better follow coding conventions.
 +
 +2006-06-07  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Move node to end.
 +      (GDB Graphical Interface): Move description of clicks in fringe...
 +      (GDB commands in the Fringe): ...to here.  New node.
 +
 +2006-06-05  Romain Francoise  <romain@orebokech.com>
 +
 +      * xresmini.texi (GTK resources): Fix various typos.
 +
 +2006-06-05  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Update bindings.
 +      (Commands of GUD): Add gud-print.  Remove gud-run.
 +      Restate availability more generally.
 +
 +2006-06-03  Ted Zlatanov  <tzz@lifelogs.com>
 +
 +      * mini.texi: Lots of cleanups.
 +
 +2006-06-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * misc.texi (Shell History Copying): Update descriptions of `C-c RET'
 +      and Mouse-2.
 +
 +2006-06-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * screen.texi (Menu Bar): Change menu-bar-start to menu-bar-open.
 +
 +2006-05-31  Richard Stallman  <rms@gnu.org>
 +
 +      * basic.texi (Moving Point): Fix previous change.
 +
 +2006-05-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * screen.texi (Menu Bar): F10 for Gtk+/Lesstif/Lucid menus.
 +
 +2006-05-28  Ted Zlatanov  <tzz@lifelogs.com>
 +
 +      * basic.texi: Many simplifications and improvements in wording.
 +
 +2006-05-26  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * anti.texi (Antinews): Create a node for gdb-ui.
 +
 +2006-05-22  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * frames.texi (Menu Bars, Tool Bars): Add index entries.
 +
 +2006-05-20  Richard Stallman  <rms@gnu.org>
 +
 +      * dired.texi (Dired Navigation): dired-goto-file is now j.
 +
 +2006-05-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mule.texi (Coding Systems): Mention the undecided-* coding systems
 +      and their aliases.
 +
 +      * msdog.texi (Windows Printing): Mention non-support of plain text
 +      printing with some el-cheapo printers, and suggest a workaround.
 +
 +2006-05-20  Kevin Ryde  <user42@zip.com.au>
 +
 +      * text.texi (TeX Print): tex-dvi-view-command has a default value,
 +      remove the bit saying you must set it.
 +
 +2006-05-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * trouble.texi (Checklist):
 +      * text.texi (Text, Auto Fill, Text Mode):
 +      * search.texi (Nonincremental Search):
 +      * rmail.texi (Rmail Labels):
 +      * mule.texi (Input Methods, Multibyte Conversion):
 +      * misc.texi (Gnus, Where to Look, PostScript):
 +      * maintaining.texi (Create Tags Table):
 +      * indent.texi (Indentation Commands):
 +      * fixit.texi (Spelling):
 +      * emacs.texi (Copying):
 +      * custom.texi (Init File): ifinfo -> ifnottex.
 +
 +2006-05-17  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Diff Mode): Mention C-x `.
 +
 +2006-05-08  Richard Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Disabling): Textual cleanups.
 +
 +2006-05-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi (Displaying the Diary, Format of Diary File):
 +      Refer to diary-view-entries, diary-list-entries,
 +      diary-show-all-entries rather than obsolete aliases.
 +
 +2006-05-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary)
 +      (Displaying the Diary, Special Diary Entries, Importing Diary):
 +      * building.texi (Compilation Shell):
 +      * buffers.texi (Several Buffers) [iftex]: Replace @xref's to
 +      emacs-xtra with @inforef's.
 +
 +      * files.texi (Visiting): Fix wording.
 +
 +      * mule.texi (Coding Systems, Text Coding): More indexing.
 +      Mention that C-x RET f can set eol conversion.
 +
 +2006-05-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresmini.texi (GTK resources): Insert GTK description.
 +
 +      * xresources.texi (GTK resources): metafont should be menufont.
 +
 +2006-05-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * mini.texi (Completion Options): Completion of remote files'
 +      method, user name and host name is active only in partial
 +      completion mode.
 +
 +2006-05-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (emacs.dvi):
 +      * Makefile.in (emacs.dvi): Add xresmini.texi.
 +
 +      * xresmini.texi (Table of Resources): Remove xref to non-existent
 +      node "LessTif Resources".
 +
 +      * msdog.texi (Microsoft Windows):
 +      * calendar.texi (Calendar/Diary, Displaying the Diary)
 +      (Special Diary Entries, Importing Diary, Holidays):
 +      * programs.texi (Program Modes):
 +      * text.texi (Text):
 +      * buffers.texi (Several Buffers):
 +      * files.texi (Comparing Files): Fix cross-references to emacs-xtra.
 +
 +2006-05-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      The following changes merge the emacs-xtra manual into the main
 +      manual, but only for on-line version of the manual.
 +
 +      * vc2-xtra.texi (Version Backups, Local Version Control)
 +      (Making Snapshots, Change Logs and VC, Version Headers)
 +      (Customizing VC, CVS Options) [ifnottex]: Conditional xref's for
 +      on-line manual.
 +
 +      * vc1-xtra.texi (VC Dired Mode) [ifnottex]: Conditional xref's
 +      for on-line manual.
 +
 +      * msdog-xtra.texi (MS-DOS, MS-DOS Keyboard, MS-DOS Mouse)
 +      (MS-DOS Display, MS-DOS File Names, MS-DOS Printing)
 +      (MS-DOS and MULE, MS-DOS Processes) [ifnottex]: Conditional xref's
 +      for on-line manual.
 +
 +      * fortran-xtra.texi (Fortran, Fortran Autofill)
 +      (Fortran Autofill, Fortran Abbrev) [ifnottex]: Conditional xref's
 +      for on-line manual.
 +
 +      * picture-xtra.texi (Basic Picture, Rectangles in Picture) [ifnottex]:
 +      Conditional xref's for on-line manual.
 +
 +      * emerge-xtra.texi (Emerge, Overview of Emerge)
 +      (Fine Points of Emerge) [ifnottex]: Conditional xref's for on-line
 +      manual.
 +
 +      * Makefile.in (INFO_TARGETS): Remove ../info/emacs-xtra.
 +      (EMACS_XTRA): New variable, lists the new *-xtra.texi files.
 +      (EMACSSOURCES): Use EMACS_XTRA.
 +      (../info/emacs-xtra): Remove.
 +      (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites.
 +
 +      * makefile.w32-in (INFO_TARGETS): Remove $(infodir)/emacs-xtra.
 +      (EMACS_XTRA): New variable, lists the new *-xtra.texi files.
 +      (EMACSSOURCES): Use EMACS_XTRA.
 +      ($(infodir)/emacs-xtra): Remove.
 +      (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites.
 +
 +      * trouble.texi (Quitting):
 +      * text.texi (Text):
 +      * programs.texi (Program Modes):
 +      * msdog.texi (Microsoft Windows):
 +      * frames.texi (Frames):
 +      * files.texi (Backup, Version Control, VC Concepts)
 +      (Types of Log File, Advanced C-x v v, Log Buffer, Old Versions)
 +      (Registering, VC Status, VC Undo, Multi-User Branching)
 +      (Comparing Files):
 +      * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary)
 +      (Displaying the Diary, Special Diary Entries, Importing Diary):
 +      * buffers.texi (Several Buffers): Replace inforef to emacs-xtra by
 +      conditional xref's, depending on @iftex/@ifnottex.
 +
 +      * msdog.texi (Microsoft Windows) [ifnottex]: Add menu entry for
 +      "MS-DOS".  @include msdog-xtra.texi.
 +
 +      * programs.texi (Programs) [ifnottex]: Add menu entry for "Fortran".
 +      <Top Level> [ifnottex]: @include fortran-xtra.texi.
 +
 +      * files.texi (Secondary VC Commands) [ifnottex]: Add menu entries
 +      for vc-xtra.texi subsections.
 +      (VC Undo) [ifnottex]: @include vc1-xtra.texi and @lowersections it.
 +      (Multi-User Branching) [ifnottex]: @include vc2-xtra.texi.
 +
 +      * sending.texi (Sending Mail): A @node line without explicit Prev,
 +      Next, and Up links.
 +
 +      * abbrevs.texi (Abbrevs): A @node line without explicit Prev,
 +      Next, and Up links.
 +
 +      * emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode"
 +      and its sections.  @include picture-xtra.texi.
 +
 +      * maintaining.texi (Maintaining) [ifnottex]: Add menu entry for
 +      "Emerge".
 +      (List Tags) [ifnottex]: @include emerge-xtra.texi.
 +
 +      * cal-xtra.texi (Daylight Savings): Remove this node: it is an
 +      exact duplicate of its name-sake in calendar.texi.
 +
 +      * calendar.texi (Calendar/Diary) [ifnottex]: Add menu item for
 +      "Advanced Calendar/Diary Usage".
 +      (Time Intervals) [ifnottex]: @include cal-xtra.texi.
 +
 +      * dired.texi (Subdirectories in Dired) [ifnottex]: @include
 +      dired-xtra.texi.
 +      (Dired) [ifnottex]: Add menu entry for "Subdir Switches".
 +
 +      * files.texi (Reverting) [ifnottex]: @include arevert-xtra.texi.
 +      (Files) [ifnottex]: Add menu entry for Autorevert.
 +
 +      * emacs-xtra.texi (Introduction): Reword to make consistent with
 +      printed version only.
 +      <Top level>: Remove the body of all chapters and move them to the
 +      new *-xtra.texi files.  Use @raisesections and @lowersections to
 +      convert sections to chapters etc.
 +
 +      * msdog-xtra.texi:
 +      * fortran-xtra.texi:
 +      * vc-xtra.texi:
 +      * vc1-xtra.texi:
 +      * vc2-xtra.texi:
 +      * emerge-xtra.texi:
 +      * cal-xtra.texi:
 +      * dired-xtra.texi:
 +      * arevert-xtra.texi: New files, with text from respective chapters
 +      of emacs-xtra.texi.  Convert each @chapter into @section, @section
 +      into @subsection, etc.
 +
 +      * emacs-xtra.texi (MS-DOS): Renamed from "MS-DOG".  All references
 +      updated.
 +
 +      * msdog.texi (Microsoft Windows): Rename from "Emacs and Microsoft
 +      Windows".  All references updated.
 +
 +2006-05-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac Input): Mention input from Character Palette.
 +      (Mac Font Specs): Fix typo.
 +
 +2006-05-05  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Diff Mode): Minor cleanup.
 +
 +2006-05-05  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi: Call @fonttextsize 10, inside @tex to avoid
 +      errors from the current release of makeinfo (4.8).
 +      * help.texi (Library Keywords): Change widest word in multitable
 +      template from `emulations' to `convenience'.  (Not sure if this is
 +      related to the font change.)
 +
 +2006-05-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (File Names): Add a footnote about limited support of
 +      ~USER on MS-Windows.
 +
 +      * cmdargs.texi (Initial Options): Add a footnote about limited
 +      support of ~USER on MS-Windows.
 +
 +2006-05-03  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Diff Mode): Node moved here.
 +      (Comparing Files): Delete what duplicates new node.
 +      (Files): Put Diff Mode in menu.
 +
 +      * misc.texi (Diff Mode): Moved to files.texi.
 +
 +      * emacs.texi (Top): Update menu for Diff Mode.
 +
 +      * trouble.texi (Emergency Escape): Simplify.
 +
 +      * emacs.texi (Top): Minor clarification.
 +
 +2006-05-03  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * commands.texi, entering.texi, screen.texi: Many simplifications.
 +
 +2006-05-03  Richard Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Text Characters): Delete paragraph about unibyte
 +      non-ASCII printing chars.
 +
 +      * killing.texi (Killing): Say "graphical displays".
 +      * display.texi: Say "graphical displays".
 +
 +      * cmdargs.texi (Misc X): Say "graphical displays".
 +
 +2006-05-01  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Add Diff Mode to menu.
 +
 +2006-05-01  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
 +
 +      * misc.texi (Diff Mode): New node.
 +
 +2006-05-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac International): Now Carbon Emacs has ATSUI support.
 +      (Mac Environment Variables): Shorten example line.
 +      (Mac Font Specs): Shorten lisp lines.  Add descriptions for ATSUI.
 +
 +2006-05-01  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GUD Customization): Describe cases %d and %c.
 +      Update description for %e.
 +
 +2006-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar.texi (LaTeX Calendar): Mention cal-tex-preamble-extra.
 +
 +2006-04-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * custom.texi (Examining): Update C-h v output example.
 +
 +2006-04-29  Kim F. Storm  <storm@cua.dk>
 +
 +      * building.texi (Grep Searching): Add lgrep and rgrep.
 +
 +2006-04-23  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi [TeX]: Use xresmini.texi instead of xresources.texi.
 +
 +      * xresmini.texi: New file.
 +
 +      * xresources.texi (Face Resources): Split table into font resources
 +      and the rest.  Combine similar attributes for brevity.
 +
 +2006-04-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs-xtra.texi (MS-DOS File Names): Remove section about
 +      backslashes and case-insensitivity in file names (moved to the
 +      main manual).
 +      (MS-DOS Printing): Move most of the text to the main manual.
 +
 +      * msdog.texi (Windows Files, Windows HOME, MS-Windows Printing):
 +      New nodes.
 +      (Windows Processes, Windows System Menu): Add index entries and
 +      fix wording.
 +
 +2006-04-18  J.D. Smith  <jdsmith@as.arizona.edu>
 +
 +      * misc.texi (Shell Ring): Add notes on saved input when
 +      navigating off the end of the history list.
 +
 +2006-04-18  Chong Yidong  <cyd@mit.edu>
 +
 +      * misc.texi (Shell Options): Correct default value of
 +      comint-scroll-show-maximum-output.
 +
 +2006-04-18  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Update.
 +
 +2006-04-12  Richard Stallman  <rms@gnu.org>
 +
 +      * search.texi: Clean up previous change.
 +
 +2006-04-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * search.texi (Regexp Backslash, Regexp Replace): Add index
 +      entries for ``back reference'' and mention the term itself in the
 +      text.
 +
 +2006-04-11  Richard Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Safe File Variables):
 +      Document enable-local-variables = :safe.
 +
 +2006-04-11  Karl Berry  <karl@gnu.org>
 +
 +      * emacs-xtra.texi, emacs.texi (Dired under VC, VC Dired Commands)
 +      (Remote Repositories, Version Backups, Local Version Control)
 +      (Snapshots, Making and Using Snapshots, Snapshot Caveats)
 +      (Miscellaneous Commands and Features of VC, Change Logs and VC)
 +      (Renaming VC Work Files and Master Files)
 +      (Inserting Version Control Headers, Customizing VC, General Options)
 +      (Options for RCS and SCCS, Options specific for CVS): Move all
 +      these nodes to emacs-xtra.texi, for brevity.
 +      * cmdargs.texi, files.texi: Change cross-references.
 +
 +2006-04-11  J.D. Smith  <jdsmith@as.arizona.edu>
 +
 +      * files.texi (Old Versions): Update description of vc-annotate's
 +      use of color to indicate date ranges.
 +
 +2006-04-09  Kevin Ryde  <user42@zip.com.au>
 +
 +      * sending.texi (Mail Sending): In send-mail-function @pxref smtpmail,
 +      put info and printed manual names the right way around.
 +
 +2006-04-09  Karl Berry  <karl@gnu.org>
 +
 +      * msdog.texi, emacs-xtra.texi: Move all the MS-DOS material to
 +      emacs-xtra.texi, leaving only MS Windows information.
 +      * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi,
 +      * msdog.texi, mule.texi, trouble.texi: Change cross-references and
 +      node names.
 +
 +      * emacs.texi: Move @summarycontents and @contents to the beginning
 +      of the file.
 +
 +2006-04-08  Kevin Ryde  <user42@zip.com.au>
 +
 +      * text.texi (Fill Commands): fill-nobreak-predicate is now a hook.
 +
 +2006-04-07  Richard Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Comments, Comment Commands, Options for Comments)
 +      (Multi-Line Comments): "Align", not "indent".
 +      (Basic Indent): C-j deletes trailing whitespace before the newline.
 +
 +2006-04-06  Richard Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Basic Indent): Clarify relationship of C-j to TAB.
 +
 +2006-04-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * killing.texi (Rectangles): Add index entry for marking a rectangle.
 +
 +2006-04-05  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update subnode menu.
 +
 +      * trouble.texi (Unasked-for Search): Node deleted.
 +      (Lossage): Delete from menu.
 +
 +2006-04-04  Richard Stallman  <rms@gnu.org>
 +
 +      * trouble.texi: Various cleanups.
 +      (Checklist): Don't bother saying how to snail a bug report.
 +      (Emergency Escape): Much rewriting.
 +      (After a Crash): Rename the core dump immediately.
 +      (Total Frustration): Call it a psychotherapist.
 +      (Bug Criteria): Avoid "illegal instruction".
 +      (Sending Patches): We always put the contributor's name in.
 +
 +      * misc.texi (Thumbnails): Minor correction.
 +
 +2006-04-03  Richard Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Thumbnails): Minor cleanup.
 +
 +2006-04-02  Karl Berry  <karl@gnu.org>
 +
 +      * sending.texi (Mail Sending): pxref to Top needs five args.
 +
 +      * texinfo.tex: Update to current version (2006-03-21.13).
 +
 +2006-03-31  Richard Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update subnode menu.
 +
 +      * help.texi (Help Mode): Cleanup.
 +
 +      * dired.texi: Many cleanups.
 +      (Dired Deletion): Describe dired-recursive-deletes.
 +      (Operating on Files): dired-create-directory moved.
 +      (Misc Dired Features): Move to here.
 +      (Tumme): Node moved to misc.texi.
 +
 +      * custom.texi: Many cleanups.
 +      (Minor Modes): Don't mention ISO Accents Mode.
 +      (Examining): Update C-h v output example.
 +      (Hooks): Add index and xref for add-hook.
 +      (Locals): Delete list of vars that are always per-buffer.  Rearrange.
 +      (Local Keymaps): Don't mention lisp-mode-map, c-mode-map.
 +
 +      * misc.texi: Many cleanups.
 +      (beginning): Add to summary of topics.
 +      (Shell): Put eshell xref at the end.  Remove eshell from table.
 +      (Thumbnails): New node.
 +
 +2006-03-28  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (File Name Cache): Make it clear that the cache is
 +      not persistent.
 +
 +2006-03-25  Karl Berry  <karl@gnu.org>
 +
 +      * emacs-xtra.texi, emacs.texi, gnu.texi:
 +      (1) use @copyright{} instead of (C) in typeset text;
 +      (2) do not indent copyright year list (or anything else).
 +
 +2006-03-21  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * files.texi (VC Dired Mode): Remove misplaced brackets.
 +
 +2006-03-21  Andre Spiegel  <spiegel@gnu.org>
 +
 +      * files.texi: Various updates and clarifications in the VC chapter.
 +
 +2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * help.texi (Help Mode): Document "C-c C-c".
 +
 +2006-03-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * emacs-xtra.texi (Top): Avoid ugly continuation line in
 +      menu in the standalone Info reader.
 +
 +2006-03-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs-xtra.texi (Emerge, Picture Mode, Fortran): New chapters,
 +      moved here from Emacs manual.
 +
 +      * programs.texi (Fortran): Section moved to emacs-xtra.
 +      (Program Modes): Xref to Fortran in emacs-xtra.
 +
 +      * maintaining.texi (Emerge): Move to emacs-xtra.
 +      * files.texi (Comparing Files): Xref to Emerge in emacs-xtra.
 +
 +      * picture.texi: File deleted.
 +      * Makefile.in:
 +      * makefile.w32-in: Remove picture.texi.
 +
 +      * text.texi (Text): Xref to Picture Mode in emacs-xtra.
 +      * abbrevs.texi (Abbrevs):
 +      * sending.texi (Sending Mail): Picture node removed.
 +
 +      * emacs.texi (Top): Update node listings.
 +
 +2006-03-12  Richard Stallman  <rms@gnu.org>
 +
 +      * calendar.texi: Various cleanups.
 +
 +2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * search.texi (Regexps): Use @samp for regexp that is not in Lisp
 +      syntax.
 +
 +2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * search.texi (Regexps): More accurately describe which characters
 +      are special in which situations.  Recommend _not_ to quote `]' or
 +      `-' when they are not special.
 +
 +2006-02-28  Andre Spiegel  <spiegel@gnu.org>
 +
 +      * files.texi (Old Versions): Clarify operation of C-x v =.
 +
 +2006-02-21  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Update and describe
 +      gdb-speedbar-auto-raise.
 +
 +2006-02-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi: Use @smallbook.
 +      (Top): Update ref to Emacs paper, delete ref to Cookbook.
 +      Update subnode menu.
 +
 +      * building.texi (Lisp Interaction): Minor addition.
 +
 +2006-02-18  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Update and be more precise.
 +
 +2006-02-15  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 +
 +      * maintaining.texi (Create Tags Table): Explain why the
 +      exception when etags writes to files under the /dev tree.
 +
 +2006-02-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Safe File Variables): Lots of clarification.
 +      Renamed from Unsafe File Variables.
 +
 +2006-02-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Unsafe File Variables): File variable confirmation
 +      assumed denied in batch mode.
 +
 +2006-02-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (GDB User Interface Layout): Don't say `inferior'
 +      for program being debugged.
 +
 +2006-02-15  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface):
 +      Replace gdb-use-inferior-io-buffer with gdb-use-separate-io-buffer.
 +
 +2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Specifying File Variables, Unsafe File Variables):
 +      New nodes, split from File Variables.  Document new file local
 +      variable behavior.
 +
 +2006-02-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * display.texi (Standard Faces):
 +      * files.texi (Visiting):
 +      * frames.texi (Clipboard):
 +      * glossary.texi (Glossary) <Clipboard>:
 +      * xresources.texi (X Resources): Mention Mac OS port.
 +
 +2006-02-12  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Building): Clarify topic in intro.
 +
 +      * maintaining.texi (Maintaining): Change title; clarify topic.
 +      Delete duplicate index entries.
 +
 +      * building.texi (Other GDB User Interface Buffers): Clarifications.
 +
 +      * text.texi (Cell Commands): Clarifications.
 +
 +      * programs.texi (Defuns): Delete duplicate explanation of
 +      left-margin paren convention.
 +      (Hungry Delete): Minor cleanup.
 +
 +2006-02-11  Mathias Dahl  <mathias.dahl@gmail.com>
 +
 +      * dired.texi (Tumme): More tumme documentation.
 +
 +2006-02-11  Alan Mackenzie  <acm@muc.de>
 +
 +      * programs.texi ("Hungry Delete"): Correct the appellation of the
 +      backspace and delete keys to @kbd{DEL} and @kbd{DELETE}.
 +
 +2006-02-11  Mathias Dahl  <mathias.dahl@gmail.com>
 +
 +      * dired.texi (Tumme): Fix small bug.
 +
 +2006-02-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac International): Rename "fontset-mac" to
 +      "fontset-standard".
 +
 +2006-02-09  Mathias Dahl  <mathias.dah@gmail.com>
 +
 +      * dired.texi (Tumme): Basic documentation for Tumme added.
 +
 +2006-02-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * mule.texi (International):
 +      * programs.texi (Basic Indent): Fix typos.
 +
 +      * custom.texi (Minor Modes):
 +      * display.texi (Text Display):
 +      * commands.texi (Text Characters): Update xrefs.
 +
 +2006-02-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update subnode menu.
 +      Update info on old Emacs papers.
 +      (Intro): "Graphical display", not window system.
 +
 +      * xresources.texi (GTK styles): Minor clarifications.
 +
 +      * trouble.texi: "Graphical display", not window system.
 +      (Stuck Recursive): Minor clarification.
 +
 +      * text.texi: Minor clarifications.
 +      (Sentences): Explain why two-space convention is better.
 +      Explain sentence-end-without-period here.
 +      (Fill Commands): Not here.
 +      (Refill): Node moved down.
 +      (Filling): Update menu.
 +      (Table Creation, Cell Justification, Column Commands): Clarify.
 +
 +      * sending.texi: Minor clarifications.
 +
 +      * search.texi (Regexp Backslash): Clarification.
 +
 +      * rmail.texi: Minor cleanups.
 +      (Rmail): Delete digression about `rmail-mode'.
 +      (Rmail Inbox): Delete false advice wrt rmail-primary-inbox-list.
 +      (Rmail Files): Mention C-u M-x rmail.
 +      (Rmail Reply): Mention References.
 +      (Rmail Display): Mention rmail-nonignored-headers.
 +
 +      * programs.texi: Minor cleanups.
 +      (Comment Commands): Mention momentary Transient Mark mode.
 +      (Matching): Be more specific about customizing show-paren-mode.
 +      (Info Lookup): Don't list the modes that support C-h S.
 +      Just say what it does in an unsupported mode.
 +      (Man Page): Delete excessive info on customizing woman.
 +      (Motion in C): Don't mention c-for/backward-into-nomenclature.
 +
 +      * abbrevs.texi: Minor clarifications.
 +      (Dabbrev Customization): Talk about "dynamic abbrev expansion",
 +      not "dynamic abbrevs" as if they were a kind of abbrev.
 +
 +      * picture.texi (Picture): Minor cleanup.
 +
 +      * mule.texi (Communication Coding): Say "other applications".
 +      (Fontsets): Not specific to X.  Add xref to X Resources.
 +      (Unibyte Mode): Rename from Single-Byte Character Support.
 +      "Graphical display", not window system.
 +      (International): Update menu.
 +
 +      * maintaining.texi (Format of ChangeLog):
 +      New node, split out from ChangeLog.
 +      (ChangeLog): Clarifications in the remaining text.
 +      (Create Tags Table, Etags Regexps, Select Tags Table): Cleanups.
 +      (Find Tag): Add @w.
 +      (Tags Search): Explain tag table order here.  Simplify grep ref.
 +      (List Tags): tags-tag-face is a variable, not a face.
 +      (Emerge): Cleanups.
 +
 +      * kmacro.texi (Keyboard Macro Counter): Rewrite for clarity.
 +      (Keyboard Macros): Avoid "the user".
 +
 +      * killing.texi: "Graphical display", not window system.
 +
 +      * help.texi (Help Echo): "Graphical display", not window system.
 +
 +      * glossary.texi: Say "you", not "the user".  Say "graphical display".
 +
 +      * frames.texi: Minor cleanups.  "Graphical display", not window system.
 +
 +      * files.texi (Visiting): Make drag-and-drop not X-specific.
 +
 +      * custom.texi: Minor cleanups.  "Graphical display", not window system.
 +
 +      * cmdargs.texi: Minor cleanups.
 +
 +      * building.texi (Compilation): Move and split kill-compilation para.
 +      Add para about multiple compilers.
 +      (Compilation Mode): Commands also available in grep mode and others.
 +      Mention C-u C-x ` more tutorially.  Clarify C-x `.
 +      (Compilation Shell): Clarify.  Put Bash example first.
 +      (Grep Searching): Minor cleanups; add @w.
 +      (Debuggers): Minor cleanups.
 +      (Starting GUD): Make GDB xgraphical mode issue clearer.
 +      (Debugger Operation): Lots of clarifications including
 +      GDB tooltip side-effect issue.
 +      (Commands of GUD): Clarify.
 +      (GUD Customization): Add bashdb-mode-hook.
 +      (GDB Graphical Interface): Rewrite for clarity.
 +      (GDB User Interface Layout): Rewrite for clarity.
 +      (Stack Buffer, Watch Expressions): Likewise.
 +      (Other GDB User Interface Buffers): Cleanups.
 +      (Lisp Libraries, External Lisp): Cleanup.
 +
 +      * basic.texi (Position Info): "Graphical displays", rather than
 +      window systems.
 +
 +      * anti.texi: Minor cleanup.
 +
 +2006-02-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * custom.texi (Init File, Find Init): Add cross-references to
 +      where $HOME is described.
 +
 +2006-02-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Frame Parameters): Remove @item for S-Mouse-1; it
 +      is not inside the @table.
 +
 +      * emacs.texi (Top): Correct node name.
 +
 +      * files.texi (File Names): Fix @xref.
 +      (Reverting): Fix typo.
 +
 +      * mule.texi (International): Correct node name.
 +
 +      * kmacro.texi (Save Keyboard Macro): Add missing @kbd to @table.
 +
 +2006-02-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update subnode menu.
 +
 +      * mule.texi: Minor clarifications.
 +      Reduce the specific references to X Windows.
 +      Refer to "graphical" terminals, rather than window systems.
 +      (Text Coding): Rename from Specify Coding.
 +      (Communication Coding, File Name Coding, Terminal Coding):
 +      New nodes split out from Text Coding.
 +
 +      * kmacro.texi: Minor clarifications.
 +      (Keyboard Macro Ring): Comment out some excessive commands.
 +      (Basic Keyboard Macro): Split up the table, putting part in each node.
 +
 +      * major.texi: Minor clarifications.
 +
 +      * misc.texi (Single Shell, Interactive Shell): Fix xrefs.
 +
 +      * windows.texi: Minor clarifications.
 +      (Change Window): Don't describe mode-line mouse cmds here.
 +      Add xref to Mode Line Mouse.
 +
 +      * msdog.texi (Text and Binary, MS-DOS and MULE): Fix xrefs.
 +
 +      * macos.texi (Mac International): Fix xref.
 +
 +      * indent.texi: Minor clarifications.
 +
 +      * frames.texi: Minor clarifications.
 +      Reduce the specific references to X Windows.
 +      Refer to "graphical" terminals, rather than window systems.
 +      (Frame Parameters): Don't mention commands like
 +      set-foreground-color.  Just say to customize a face.
 +      (Drag and Drop): Lisp-level stuff moved to Emacs Lisp manual.
 +
 +      * files.texi: Minor clarifications.
 +      (Numbered Backups): New node, split out from Backup Names.
 +
 +      * display.texi (Font Lock): C mode no longer depends on (-in-col-0.
 +
 +      * cmdargs.texi (General Variables): Fix xref.
 +
 +      * buffers.texi: Minor clarifications.
 +
 +2006-01-31  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Scrolling, Horizontal Scrolling, Follow Mode):
 +      Nodes moved to top.
 +
 +      * display.texi: Minor clarifications.
 +      (Display): Rearrange menu.
 +      (Standard Faces): Mention query-replace face.
 +      (Faces): Simplify.
 +      (Font Lock): Simplify face customization info.
 +      (Highlight Changes): Node merged into Highlight Interactively.
 +      (Highlight Interactively): Much rewriting and cleanup.
 +      (Optional Mode Line): Narrowed line number not good for goto-line.
 +      Simplify face customization advice.
 +      (Text Display): Mention use of escape-glyph face.
 +      Move ctl-arrow and tab-width here.
 +      (Display Custom): Move no-redraw-on-reenter to end of node.
 +
 +      * search.texi: Minor clarifications.
 +      (Isearch Scroll): Simplify.
 +      (Other Repeating Search): Document multi-occur-in-matching-buffers.
 +
 +      * regs.texi (Registers): Mention bookmarks here.
 +
 +      * mark.texi: Minor clarifications.
 +      (Selective Undo): Node deleted.
 +
 +      * m-x.texi: Minor clarifications.
 +
 +      * killing.texi: Minor clarifications.
 +      Refer to "graphical" terminals, rather than window systems.
 +
 +      * help.texi: Clarifications.
 +      (Help): Don't describe C-h F and C-h K here.
 +      (Key Help): Describe C-h K here.
 +      (Name Help): Mention Emacs Lisp Intro.
 +      Describe C-h F here.
 +      (Misc Help): Mention C-h F and C-h K only briefly.
 +
 +      * fixit.texi (Undo): New node, mostly copied from basic.texi.
 +      Selective undo text merged in.
 +      (Spelling): Mention Aspell along with Ispell.
 +
 +      * emacs.texi (Top): Update subnode menus.
 +
 +      * basic.texi (Basic Undo): Rename from Undo.  Most of text
 +      moved to new Undo node.
 +
 +2006-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * basic.texi (Continuation Lines, Inserting Text):
 +      Mention longlines mode.
 +
 +2006-01-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * screen.texi: Minor cleaups.
 +      (Screen): Clean up the intro paragraphs.
 +      (Mode Line): Lots of rewriting.  Handle frame-name better.
 +      eol-mnemonic-... vars moved out.
 +
 +      * emacs.texi (Top): Change menu item for MS-DOS node.
 +      Update subnode menu.
 +
 +      * msdog.texi (MS-DOS): Rewrite intro to explain how this
 +      chapter relates to Windows.  Title changed.
 +
 +      * mini.texi: Minor cleanups.
 +
 +      * mark.texi (Selective Undo): New node, text moved from basic.texi.
 +      (Mark): Put it in the menu.
 +
 +      * entering.texi: Minor cleanups.
 +
 +      * emacs.texi (Top): Add xref to Mac chapter; explain Windows better.
 +      (Intro): Refer to "graphical" terminals, rather than X.
 +
 +      * display.texi (Display Custom): Add xref to Variables.
 +      (Optional Mode Line): eol-mnemonic-... vars moved here.
 +
 +      * commands.texi: Minor cleanups.  Refer to "graphical" terminals,
 +      rather than X.
 +
 +      * basic.texi: Minor cleanups.
 +      (Undo): selective-undo moved.
 +
 +2006-01-25  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * anti.texi (Antinews): Various corrections and additions.
 +
 +2006-01-23  Juri Linkov  <juri@jurta.org>
 +
 +      * custom.texi (Easy Customization, Customization Groups)
 +      (Browsing Custom): Mention links along with buttons.
 +
 +2006-01-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * text.texi (TeX Print): Use @key for TAB.
 +
 +      * kmacro.texi (Keyboard Macro Step-Edit): Use @key for TAB.
 +
 +2006-01-15  Sven Joachim  <svenjoac@gmx.de>  (tiny change)
 +
 +      * files.texi (File Aliases): Don't claim that usually separate
 +      buffers are created for two file names that name the same data.
 +      Mention additional situations where different names mean the same
 +      file on disk.
 +
 +2006-01-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * killing.texi (Deletion): Upcase @key argument.
 +
 +      * custom.texi (Custom Themes): Minor cleanup.
 +
 +      * programs.texi (Hungry Delete): Upcase @key argument.
 +
 +2006-01-16  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Standard Faces): Add `mode-line-buffer-id'.
 +      Move `mode-line-highlight' before `mode-line-buffer-id'.
 +
 +2006-01-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * basic.texi (Inserting Text): Minor cleanup.
 +
 +2006-01-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Changing a Variable, Face Customization):
 +      Update for changes in Custom menus.
 +
 +2006-01-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac International): Undo last change.
 +
 +2006-01-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Custom Themes): Describe the new
 +      customize-create-theme interface.
 +
 +2005-12-30  Juri Linkov  <juri@jurta.org>
 +
 +      * basic.texi (Position Info): Update example.
 +
 +2005-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Add x-gtk-show-hidden-files.
 +
 +2005-12-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Custom Themes): `load-theme' always loads.
 +
 +2005-12-23  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Highlight Interactively): Use double space to
 +      separate sentences.  Replace C-p with M-p, and C-n with M-n.
 +
 +2005-12-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Easy Customization and subnodes):
 +      Replace "active field" with "button".
 +      Use "user option" only for variables.
 +      Use "setting" for variable-or-face.
 +
 +2005-12-22  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * buffers.texi (Select Buffer): Change order in table to make
 +      "Similar" refer to the correct item.
 +      (Indirect Buffers): Minor rewording.
 +
 +2005-12-20  Juri Linkov  <juri@jurta.org>
 +
 +      * files.texi (VC Status): Put P and N near p and n.
 +
 +2005-12-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Electric C): Delete the info about newline control.
 +      (Other C Commands): Minor cleanup.
 +      (Left Margin Paren): Minor cleanup.
 +
 +2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Easy Customization): Add "Browsing Custom" to menu.
 +      (Customization Groups): Delete text moved to "Browsing Custom".
 +      (Browsing Custom): New node.
 +      (Specific Customization): Clarify which commands only work for
 +      loaded options.
 +
 +2005-12-18  Bill Wohler  <wohler@newt.com>
 +
 +      * frames.texi (Tool Bars): Shorten text of previous change.
 +
 +2005-12-18  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
 +
 +      * files.texi (VC Status): Document log-view mode.
 +
 +2005-12-18  Bill Wohler  <wohler@newt.com>
 +
 +      * frames.texi (Tool Bars): Mention that you can turn off tool bars
 +      permanently via the customize interface.
 +
 +2005-12-16  Ralf Angeli  <angeli@iwi.uni-sb.de>
 +
 +      * killing.texi (Killing by Lines): Document `kill-whole-line'
 +      function.
 +
 +2005-12-16  L\e$,1 q\e(Brentey K\e,Aa\e(Broly  <lorentey@elte.hu>
 +
 +      * buffers.texi (Select Buffer): Change `prev-buffer' to
 +      `previous-buffer'.  Indicate that these functions use a frame
 +      local buffer list.
 +
 +2005-12-12  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Easy Customization): Change menu comment.
 +      (Prefix Keymaps): Fix spelling of Control-X-prefix.
 +
 +      * help.texi (Apropos): Rewrite.  Talk about "apropos patterns".
 +      (Help): Among the Apropos commands, describe only C-h a here.
 +
 +2005-12-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Options for Comments): Comment-end starts with space.
 +
 +      * glossary.texi (Glossary): Minor cleanup.
 +
 +      * files.texi (Old Versions): Use @table.
 +
 +2005-12-10  David Koppelman  <koppel@ece.lsu.edu>
 +
 +      * display.texi (Highlight Interactively): Include
 +      global-hi-lock-mode.  Add miscellaneous details and elaborations.
 +
 +2005-12-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Font Lock): Delete the Global FL menu item.
 +
 +2005-12-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Minibuffer Maps): Mention the maps for file name
 +      completion.
 +
 +2005-12-09  Kim F. Storm  <storm@cua.dk>
 +
 +      * killing.texi (CUA Bindings): Describe how to use C-x and C-c as
 +      prefix keys even when mark is active.  Decribe that RET moves
 +      cursor to next corner in rectangle; clarify insert around rectangle.
 +
 +2005-12-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Customization): Use xref to elisp manual for
 +      non-TeX output.
 +      (Minor Modes): Update.
 +      (Customization Groups, Changing a Variable, Face Customization):
 +      Update for new appearance of Custom buffers.
 +      (Changing a Variable): `custom-buffer-done-function' has been
 +      replaced by `custom-buffer-done-kill'.
 +      (Specific Customization): In the `customize-group' buffer, a
 +      subgroup's contents are not "hidden".  They are not included at
 +      all.  They have no [Show] button.
 +      (Mouse Buttons): Add pxref to description of mouse event lists in
 +      Elisp manual.  Add `menu-bar' and `header-line' dummy prefix keys.
 +      (Find Init): Emacs now looks for ~/.emacs.d/init.el instead of
 +      ~/.emacs.d/.emacs, if it can not find ~/.emacs(.el).
 +
 +2005-12-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * mini.texi (Completion Commands, Completion):
 +      In file name input, SPC does not do completion.
 +
 +2005-12-08  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Explain screen size
 +      setting.
 +      (Other GDB User Interface Buffers): Describe features specific to
 +      GDB 6.4.
 +
 +2005-12-01  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB User Interface Layout): Describe how to
 +      kill associated buffers.
 +      (Breakpoints Buffer): Use D instead of d for gdb-delete-breakpoint.
 +      (Watch Expressions): Be more precise.
 +      (Other GDB User Interface Buffers): Describe how to change a
 +      register value.
 +
 +2005-11-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macos.texi (Mac Input): Remove description of
 +      mac-command-key-is-meta.  Add descriptions of
 +      mac-control-modifier, mac-command-modifier, and
 +      mac-option-modifier.
 +      (Mac International): Fix description of conversion of clipboard data.
 +      (Mac Font Specs): Add example of font customization by face attributes.
 +
 +2005-11-22  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Watch Expressions): Expand description.
 +      (Other GDB User Interface Buffers): Describe local map for
 +      gud-watch.
 +
 +2005-11-21  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Font Lock): Font lock is enabled by default now.
 +
 +2005-11-20  Juri Linkov  <juri@jurta.org>
 +
 +      * basic.texi (Position Info): Update examples of the output.
 +      Remove the fact that examples are produced in the TeXinfo buffer,
 +      because in the Info reader users will get a different output from
 +      `C-x ='.
 +
 +      * building.texi (Compilation Mode): Remove paragraph duplicated
 +      from the node `Compilation'.  Add `compilation-skip-threshold'.
 +
 +      * display.texi (Font Lock): Suggest more user-friendly method of
 +      finding all Font Lock faces (M-x customize-group RET font-lock-faces).
 +
 +2005-11-18  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Registering): Mention @@ in mode line.
 +
 +      * mini.texi (Minibuffer File): Clarify previous change.  Add @findex.
 +
 +2005-11-08  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
 +
 +      * files.texi (Renaming and VC): Some back-ends don't
 +      handle renaming.
 +
 +2005-11-17  Juri Linkov  <juri@jurta.org>
 +
 +      * emacs.texi (Top):
 +      * display.texi (Highlight Interactively): Put this font-lock based
 +      mode near Font Lock node.
 +
 +2005-11-16  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs
 +      icons.
 +
 +2005-11-12  Kim F. Storm  <storm@cua.dk>
 +
 +      * help.texi (Help): Fix C-h a entry.  Add C-h d entry.
 +      (Help Summary): Add C-h d and C-h e.
 +      (Apropos): Clarify that all apropos commands may search for either
 +      list of words or a regexp.  Add C-h d for apropos-documentation.
 +      Describe apropos-documentation-sort-by-scores user option.
 +
 +2005-11-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * killing.texi (CUA Bindings): Add @section.
 +
 +2005-11-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * emacs.texi (Top): Add CUA Bindings entry to menu.
 +
 +      * killing.texi (CUA Bindings): New node.  Moved here from
 +      misc.texi and extended with info on rectangle commands and
 +      rectangle highlighting, interface to registers, and the global
 +      mark feature.
 +
 +      * misc.texi (Emulation): Move CUA bindings item to killing.texi.
 +
 +      * regs.texi: Prev link points to CUA Bindings node.
 +
 +2005-11-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * help.texi (Help Echo): By default, help echos are only shown on
 +      mouse-over, not on point-over.
 +
 +2005-11-04  J\e,Ai\e(Br\e,At\e(Bme Marant  <jerome@marant.org>
 +
 +      * misc.texi (Shell Mode): Describe how to activate password echoing.
 +
 +2005-11-04  Romain Francoise  <romain@orebokech.com>
 +
 +      * mark.texi (Mark Ring): Fix typo.
 +
 +2005-11-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * mark.texi (Mark Ring): Mention set-mark-command-repeat-pop.
 +
 +2005-11-01  Bill Wohler  <wohler@newt.com>
 +
 +      * help.texi (Help Mode): Fix typo.
 +
 +2005-11-01  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Other GDB User Interface Buffers): Describe
 +      the command gdb-use-inferior-io-buffer.
 +
 +2005-10-31  Romain Francoise  <romain@orebokech.com>
 +
 +      * files.texi (Compressed Files): Fix typo.
 +
 +      * buffers.texi (Misc Buffer): Downcase `*shell*'.
 +
 +      * windows.texi (Force Same Window): Likewise.
 +
 +2005-10-30  Bill Wohler  <wohler@newt.com>
 +
 +      * help.texi (Help Mode): URLs viewed with browse-url.
 +
 +2005-10-31  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Don't reference
 +      gdb-mouse-set-clear-breakpoint.  Explain gdb-mouse-until
 +      must stay in same frame.
 +
 +2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Init File): Document ~/.emacs.d/init.el.
 +
 +      * anti.texi (Antinews): Likewise.
 +
 +2005-10-28  Bill Wohler  <wohler@newt.com>
 +
 +      * help.texi (Help): Help mode now creates hyperlinks for URLs.
 +
 +2005-10-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Visiting): Explain how to enter ? in a file name.
 +
 +      * trouble.texi (Memory Full): Mention !MEM FULL! in mode line.
 +
 +2005-10-25  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Describe
 +      gdb-mouse-until.
 +
 +2005-10-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Init File): Recommend when to use site-start.el.
 +
 +2005-10-21  Juri Linkov  <juri@jurta.org>
 +
 +      * custom.texi (Examining): Mention accessing the old variable
 +      value via M-n in set-variable.
 +
 +2005-10-18  Romain Francoise  <romain@orebokech.com>
 +
 +      * files.texi (Version Systems): Capitalize GNU.
 +
 +2005-10-18  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Compilation Mode): Remove redundant paragraph.
 +      (Watch Expressions): Remove paragraph to reflect code change.
 +
 +2005-10-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Compilation Mode, Compilation): Clarified.
 +
 +2005-10-15  Richard M. Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Saving Emacs Sessions): Mention savehist library.
 +
 +2005-10-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * basic.texi (Position Info): Fix previous change.
 +
 +2005-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * cmdargs.texi (Icons X): Fix typo.
 +
 +2005-10-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * basic.texi (Position Info): Describe the case that Emacs shows
 +      "part of display ...".
 +
 +2005-10-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * cmdargs.texi (Icons X): -nb => -nbi.
 +
 +2005-10-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frames.texi (Speedbar): A couple more clarifications.
 +
 +2005-10-11  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB User Interface Layout): Improve diagram.
 +      (Watch Expressions): Explain how to make speedbar global.
 +      (Other GDB User Interface Buffers): Make references more precise.
 +
 +2005-10-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Speedbar): Clarify the text.
 +
 +2005-10-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frames.texi (Speedbar): Add information on keybindings,
 +      dismissing the speedbar, and buffer display mode.  Link to
 +      speedbar manual.
 +
 +2005-10-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type,
 +      added -nb, --no-bitmap-icon.
 +
 +2005-10-07  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Add variables and
 +      functions to indices.  Be more precise.
 +
 +2005-10-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Drag and Drop): Remove the x- from
 +      x-dnd-open-file-other-window and xdnd-protocol-alist.
 +
 +2005-09-30  Romain Francoise  <romain@orebokech.com>
 +
 +      * mini.texi (Minibuffer): The default value now appears before the
 +      colon in minibuffer prompts.
 +
 +2005-09-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi (Regexp Search): Doc search-whitespace-regexp.
 +
 +2005-09-20  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)
 +
 +      * text.texi (Paragraphs): Correction about Paragraph-Indent Text mode.
 +
 +2005-09-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * emacs.texi (Top): Update submenus from macos.texi.
 +
 +      * macos.texi: Change `Mac OS 8 or 9' to `Mac OS Classic'.
 +      (Mac OS): Update feature support status.
 +      (Mac Input): List supported input scripts.  Remove description
 +      about `mac-keyboard-text-encoding'.  Mention mouse button
 +      emulation and related variables.
 +      (Mac International): Mention Central European and Cyrillic
 +      support.  Now `keyboard-coding-system' is dynamically changed.
 +      Add description about coding system for selection.  Add
 +      description about language environment.
 +      (Mac Environment Variables): Mention
 +      `~/.MacOSX/environment.plist'.  Give example of command line
 +      arguments.  Add Preferences support.
 +      (Mac Directories): Explicitly state that this node is for Mac OS
 +      Classic only.
 +      (Mac Font Specs): Mention specification for scalable fonts.  List
 +      supported charsets.  Add preferred way of creating fontsets.  Add
 +      description about `mac-allow-anti-aliasing'.
 +      (Mac Functions): Add descriptions about `mac-set-file-creator',
 +      `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type',
 +      and `mac-get-preference'.
 +
 +2005-09-16  Romain Francoise  <romain@orebokech.com>
 +
 +      Update all files to specify GFDL version 1.2.
 +
 +      * doclicense.texi (GNU Free Documentation License): Update to
 +      version 1.2.
 +
 +2005-09-15  Richard M. Stallman  <rms@gnu.org>
 +
 +      * buffers.texi (List Buffers): Fix xref.
 +
 +      * rmail.texi (Rmail Basics): Fix xref.
 +
 +      * emacs.texi (Top): Update subnode menus.
 +
 +      * files.texi (Saving Commands): New node, broken out of Saving.
 +      (Customize Save): New node, broken out of Saving.
 +      Clarify effect of write-region-inhibit-fsync.
 +      (Misc File Ops): Say write-region-inhibit-fsync affects write-region.
 +
 +2005-09-14  Romain Francoise  <romain@orebokech.com>
 +
 +      * files.texi (Saving): Mention write-region-inhibit-fsync.
 +
 +2005-09-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * custom.texi (Custom Themes): New node.
 +
 +2005-09-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi (Search Case): Mention vars that control
 +      case-fold-search for various operations.
 +
 +2005-08-22  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Standard Faces): Merge the text from
 +      `(elisp)Standard Faces' into this node.
 +
 +2005-08-18  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * emacs.texi (Top): Delete menu item for deleted node
 +      Keyboard Translations.
 +
 +2005-08-18  Richard M. Stallman  <rms@gnu.org>
 +
 +      * trouble.texi (Unasked-for Search):
 +      Delete xref to Keyboard Translations.
 +
 +      * glossary.texi (Glossary): Delete xref.
 +
 +      * custom.texi (Minor Modes): Say that the list here is not complete.
 +      (Keyboard Translations): Node deleted.
 +      (Disabling): Delete xref to it.
 +      (Customization Groups): Fix Custom buffer example.
 +      (Hooks): Mention remove-hooks.
 +
 +2005-08-17  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * building.texi (GDB Graphical Interface): Improve filling of menu
 +      item.
 +
 +2005-08-18  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (GDB Graphical Interface): Use better node names.
 +
 +2005-08-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Sentences): Fix xref.
 +
 +2005-08-14  Juri Linkov  <juri@jurta.org>
 +
 +      * building.texi (Compilation, Grep Searching): Move grep command
 +      headings from `Compilation' to `Grep Searching'.
 +
 +      * dired.texi (Dired and Find):
 +      * maintaining.texi (Tags Search): Replace grep xref to
 +      `Compilation' node with `Grep Searching'.
 +
 +      * files.texi (Comparing Files): Replace xref to `Compilation' with
 +      `Compilation Mode'.
 +
 +2005-08-13  Alan Mackenzie  <acm@muc.de>
 +
 +      * search.texi (Non-ASCII Isearch): Correct a typo.
 +      (Replacement Commands): Mention query-replace key binding.
 +
 +2005-08-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Options for Comments): Fix xref.
 +
 +      * search.texi (Regexp Backslash, Regexp Example): New nodes split
 +      out of Regexps.
 +
 +2005-08-09  Juri Linkov  <juri@jurta.org>
 +
 +      * building.texi (Compilation): Use `itemx' instead of `item'.
 +      (Grep Searching): Simplify phrase.
 +
 +      * display.texi (Standard Faces): Describe vertical-border on
 +      window systems.
 +
 +      * windows.texi (Split Window): Simplify phrase and mention
 +      vertical-border face.
 +
 +2005-08-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Comparing Files): Clarify compare-windows.
 +
 +      * calendar.texi (Scroll Calendar): Document < and > in calendar.
 +
 +2005-08-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mule.texi (Coding Systems): Rephrase the paragraph about
 +      codepages: no need for "M-x codepage-setup" anymore, except on
 +      MS-DOS.
 +
 +      * msdog.texi (MS-DOS and MULE): Clarify that this section is for
 +      the MS-DOS port only.
 +
 +2005-07-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (info): Don't run multi-install-info.bat.
 +      ($(infodir)/dir): New target, produced by running
 +      multi-install-info.bat.
 +
 +2005-07-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Quoted File Names): Add index entry.
 +
 +2005-07-19  Juri Linkov  <juri@jurta.org>
 +
 +      * files.texi (Comparing Files): Mention resync for `compare-windows'.
 +
 +2005-07-18  Juri Linkov  <juri@jurta.org>
 +
 +      * custom.texi (Easy Customization):
 +      * files.texi (Old Versions):
 +      * frames.texi (Wheeled Mice):
 +      * mule.texi (Specify Coding):
 +      * text.texi (Cell Justification):
 +      * trouble.texi (After a Crash):
 +      * xresources.texi (GTK styles):
 +      Delete duplicate duplicate words.
 +
 +2005-07-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Creating Frames): Fix foreground color example.
 +
 +      * custom.texi (Init Examples): Clean up text about conditionals.
 +
 +2005-07-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * mini.texi (Completion Commands): Fix command name for ?.
 +
 +2005-07-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Standard Faces): Explain that customization of
 +      `menu' face has no effect on w32 and with GTK.  Add
 +      cross-references.
 +
 +      * cmdargs.texi (General Variables): Clarify the default location
 +      of $HOME on w32 systems.
 +
 +2005-07-15  Jason Rumney  <jasonr@gnu.org>
 +
 +      * cmdargs.texi (General Variables): Default HOME on MS Windows has
 +      changed.
 +
 +2005-07-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * mule.texi (Recognize Coding): Recommend
 +      revert-buffer-with-coding-system instead of revert-buffer.
 +
 +2005-07-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * anti.texi (Antinews): Mention mode-line-inverse-video.
 +
 +      * files.texi (Saving): Minor correction about C-x C-w.
 +
 +      * display.texi (Display Custom): Don't mention mode-line-inverse-video.
 +
 +2005-07-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * search.texi (Isearch Scroll): Add example of using the
 +      `isearch-scroll' property.
 +      (Slow Isearch): Reference anchor for `baud-rate' instead of entire
 +      `Display Custom' node.
 +      (Regexp Replace): Put text that requires Emacs Lisp knowledge last
 +      and de-emphasize it.
 +      (Other Repeating Search): `occur' currently can not correctly
 +      handle multiline matches.  Correct, clarify and update description
 +      of `flush-lines' and `keep-lines'.
 +
 +      * display.texi (Display Custom): Add anchor for `baud-rate'.
 +
 +2005-07-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * gnu.texi: Update where to get GNU status; add refs for how to help.
 +      Add footnotes 6 and 7.
 +
 +2005-07-04  Lute Kamstra  <lute@gnu.org>
 +
 +      Update FSF's address in GPL notices.
 +
 +      * doclicense.texi (GNU Free Documentation License):
 +      * trouble.texi (Checklist): Update FSF's address.
 +
 +2005-06-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Text Display): Change index entries.
 +
 +2005-06-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Use --force.
 +      (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in
 +      Makefile.in.
 +
 +2005-06-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * anti.texi (Antinews): Renamed show-nonbreak-escape to
 +      nobreak-char-display.
 +
 +      * emacs.texi (Top): Update detailed node listing.
 +
 +      * display.texi (Text Display): Renamed show-nonbreak-escape
 +      to nobreak-char-display and no-break-space to nobreak-space.
 +      (Standard Faces): Split up the list of standard faces
 +      and put it in a separate node.  Add nobreak-space and
 +      escape-glyph.
 +
 +2005-06-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * mule.texi (Select Input Method): Fix typo.
 +
 +2005-06-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * mule.texi (International): List all supported scripts.  Adjust
 +      text for that leim is now included in the normal Emacs
 +      distribution.
 +      (Language Environments): List all language environments.
 +      Intlfonts contains fonts for most supported scripts, not all..
 +      (Select Input Method): Refer to C-u C-x = to see how to type to
 +      input a specifc character.
 +      (Recognize Coding): Fix typo, china-iso-8bit -> chinese-iso-8bit.
 +
 +2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * building.texi (Grep Searching): Texinfo usage fix.
 +
 +2005-06-22  Miles Bader  <miles@gnu.org>
 +
 +      * display.texi (Faces): Change `vertical-divider' to `vertical-border'.
 +
 +2005-06-20  Miles Bader  <miles@gnu.org>
 +
 +      * display.texi (Faces): Add `vertical-divider'.
 +
 +2005-06-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Adaptive Fill): Minor clarification.
 +
 +2005-06-10  Lute Kamstra  <lute@gnu.org>
 +
 +      * emacs.texi (Top): Correct version number.
 +      * anti.texi (Antinews): Correct version number.  Use EMACSVER to
 +      refer to the current version of Emacs.
 +
 +2005-06-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Log Buffer): Document when there can be more than
 +      one file to be committed.
 +
 +2005-06-08  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Faces): Add `shadow' face.
 +
 +2005-06-07  Masatake YAMATO  <jet@gyve.org>
 +
 +      * display.texi (Faces): Write about mode-line-highlight.
 +
 +2005-06-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Printing Package): Explain how to initialize
 +      printing package.
 +
 +      * cmdargs.texi (Action Arguments): Clarify directory default for -l.
 +
 +2005-06-05  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * emacs.texi: Rename Hardcopy to Printing.
 +      Make PostScript and PostScript Variables subnodes of it.
 +
 +      * misc.texi (Printing): Rename node from Hardcopy.
 +      Mention menu bar options.
 +      Move PostScript and PostScript Variables to submenu.
 +      (Printing package): New node.
 +
 +      * mark.texi (Using Region): Change Hardcopy xref to Printing.
 +
 +      * dired.texi (Operating on Files): Likewise.
 +
 +      * calendar.texi (Displaying the Diary): Likewise.
 +
 +      * msdog.texi (MS-DOS Printing, MS-DOS Processes): Likewise.
 +
 +      * glossary.texi (Glossary): Likewise.
 +
 +      * frames.texi (Mode Line Mouse): Mention mode-line-highlight
 +      effect.
 +
 +2005-06-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * trouble.texi (After a Crash): Polish previous change.
 +
 +2005-05-30  Noah Friedman  <friedman@splode.com>
 +
 +      * trouble.texi (After a Crash): Mention emacs-buffer.gdb as a
 +      recovery mechanism.
 +
 +2005-05-28  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Other Buffers): SPC toggles display of
 +      floating point registers.
 +
 +2005-05-27  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * files.texi (Log Buffer): Merge in description of Log Edit
 +      mode from pcl-cvs.texi.
 +
 +2005-05-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Lisp Eval): C-M-x with arg runs Edebug.
 +
 +2005-05-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * fixit.texi (Spelling): Delete confusing sentence; flyspell is
 +      not enabled by default.
 +      When not on a word, `ispell-word' by default checks the word
 +      before point.
 +
 +2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Simplify last sentence.
 +
 +2005-05-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * emacs.texi: Update FSF's address throughout.
 +      (Preface): Use @cite.
 +      (Distrib): Add cross reference to the node "Copying".  Mention the
 +      FDL.  Don't refer to etc/{FTP,ORDERS}.  Mention the sale of
 +      printed manuals.
 +      (Intro): Use @xref for the Emacs Lisp Intro.
 +
 +2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * buffers.texi (Select Buffer): Document `C-u M-g M-g'.
 +
 +      * basic.texi (Moving Point): Mention default for `goto-line'.
 +
 +      * programs.texi (Lisp Doc): Eldoc mode shows only the first line
 +      of a variable's docstring.
 +
 +2005-05-18  Lute Kamstra  <lute@gnu.org>
 +
 +      * maintaining.texi (Overview of Emerge): Add cross reference.
 +      Remove duplication.
 +
 +      * emacs.texi (Top): Update to the current structure of the manual.
 +      * misc.texi (Emacs Server): Add menu description.
 +      * files.texi (Saving): Fix menu.
 +      * custom.texi (Customization): Fix menu.
 +      * mule.texi (International): Fix menu.
 +      * kmacro.texi (Keyboard Macros): Fix menu.
 +
 +2005-05-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi: Various minor changes.
 +      (Faces): Delete text that is repeated in the next section.
 +
 +2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Mention GUD tooltips are
 +      disabled with GDB in text command mode.
 +
 +2005-05-16  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi: Replace toolbar with "tool bar" for consistency.
 +      (Compilation Mode): Describe compilation-context-lines
 +      and use of arrow in compilation buffer.
 +      (Debugger Operation): Replace help text with variable's value.
 +
 +      * frames.texi (Tooltips): Replace toolbar with "tool bar" for
 +      consistency.
 +
 +2005-05-15  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * major.texi (Choosing Modes): normal-mode processes the -*- line.
 +      Add xref.
 +
 +2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * basic.texi (Moving Point): Mention `M-g g' binding for `goto-line'.
 +      (Position Info): Delete discussion of `goto-line'.  It is already
 +      described in `Moving point'.
 +
 +      * mini.texi (Completion Commands): Correct reference.
 +      (Completion Options): Fix typo.
 +
 +      * killing.texi (Deletion): Complete description of `C-x C-o'.
 +
 +2005-05-10  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Compilation): Clarify recompile's directory choice.
 +
 +      * frames.texi (Tooltips): Cleanups.
 +
 +      * basic.texi (Arguments): Fix punctuation.
 +
 +2005-05-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * screen.texi (Menu Bar): The up and down (not left and right)
 +      arrow keys move through a keyboard menu.
 +
 +2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * basic.texi: Various typo and grammar fixes.
 +      (Moving Point): C-a now runs move-beginning-of-line.
 +
 +2005-05-08  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Describe gud-tooltip-echo-area.
 +
 +      * frames.texi (Tooltips): Describe help tooltips and GUD tooltips
 +      as different animals.
 +
 +2005-05-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Mouse References): Clarify `mouse-1-click-follows-link'.
 +      Correct index entry.
 +
 +2005-05-07  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Update to reflect changes
 +      in GUD tooltips.
 +
 +2005-04-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Compressed Files): Auto Compression normally enabled.
 +
 +      * building.texi (Debugger Operation): Clarify previous change.
 +
 +2005-04-28  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Debugger Operation): Add description for
 +      GUD tooltips when program is not running.
 +
 +2005-04-26  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * misc.texi (Shell): Add `Shell Prompts' to menu.
 +      (Shell Mode): Add xref to `Shell Prompts'.  Clarify `C-c C-u'
 +      description.  Delete remarks moved to new node.
 +      (Shell Prompts): New node.
 +      (History References): Replace remarks moved to `Shell Prompts'
 +      with xref to that node.
 +      (Remote Host): Clarify how to specify the terminal type when
 +      logging in to a different machine.
 +
 +2005-04-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Update submenus from files.texi.
 +
 +      * files.texi (Filesets): Clarify previous change.
 +
 +      * dired.texi (Misc Dired Features): Clarify previous change.
 +
 +2005-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ack.texi (Acknowledgments): Delete info about iso-acc.el.
 +
 +      * dired.texi (Misc Dired Features): Document
 +      dired-compare-directories.
 +
 +      * files.texi (Filesets): New node.
 +      (File Conveniences): Document Image mode.
 +
 +      * text.texi (TeX Print): Document tex-compile.
 +
 +2005-04-25  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Tooltips): Tooltip mode is enabled by default.
 +      Delete redundant reference to tooltip Custom group.  It is
 +      referred too again in the next paragraph.
 +
 +2005-04-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * ack.texi: Delete info about lazy-lock.el and fast-lock.el.
 +
 +2005-04-19  Kim F. Storm  <storm@cua.dk>
 +
 +      * building.texi (Compilation Mode): Add M-g M-n and M-g M-p bindings.
 +
 +2005-04-18  Lars Hansen  <larsh@math.ku.dk>
 +
 +      * misc.texi (Saving Emacs Sessions): Add that "--no-desktop" now
 +      turns off desktop-save-mode.
 +
 +2005-04-17  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (XTerm Mouse): Xterm Mouse mode is no longer enabled
 +      by default in terminals compatible with xterm.  Mention that
 +      xterm-mouse-mode is a minor mode and put in pxref to Minor Modes
 +      node.
 +
 +2005-04-12  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default.
 +
 +2005-04-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Table of Resources): Add cursorBlink.
 +
 +2005-04-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * rmail.texi (Rmail Summary Edit): Explain numeric arguments to
 +      `d', `C-d' and `u'.
 +
 +2005-04-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi (Initial Options): -Q is now --quick, and does less.
 +      (Misc X): Add -D, --basic-display.
 +
 +      * maintaining.texi (Change Log): Correct the description of
 +      the example.
 +
 +      * major.texi (Choosing Modes): Document magic-mode-alist.
 +
 +2005-04-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
 +      (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric arg.
 +      (Rmail Inbox): Give full name of `rmail-primary-inbox-list'.
 +      (Rmail Output): Clarify which statements apply to `o', `C-o' and
 +      `w', respectively.
 +      (Rmail Labels): Mention `l'.
 +      (Rmail Attributes): Correct pxref.  Mention `stored' attribute.
 +      (Rmail Summary Edit): Describe `j' and RET.
 +
 +2005-04-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (Lucid Resources): Add fontSet resource.
 +
 +2005-04-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Useless Whitespace): `indicate-unused-lines' is
 +      now called `indicate-empty-lines'.
 +
 +2005-04-06  Kim F. Storm  <storm@cua.dk>
 +
 +      * cmdargs.texi (Initial Options): Add --bare-bones alias for -Q.
 +
 +2005-04-04  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * dired.texi (Dired Visiting): `dired-view-command-alist' has been
 +      deleted.
 +      (Marks vs Flags): Add some convenient key bindings.
 +      (Hiding Subdirectories): Delete redundant and inaccurate sentence.
 +      (Misc Dired Features): Correct and expand description of `w' command.
 +
 +      * frames.texi (XTerm Mouse): Delete apparently false info.
 +      The GNU/Linux console currently does not appear to support
 +      `xterm-mouse-mode'.
 +
 +2005-04-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi (Diary): Mention shell utility `calendar'.
 +
 +2005-04-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi (Misc X): Explain horizontal scroll bars don't exist.
 +
 +2005-04-01  Lute Kamstra  <lute@gnu.org>
 +
 +      * maintaining.texi (Change Log): add-change-log-entry uses
 +      add-log-mailing-address.
 +
 +2005-03-31  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Reverting): Move `auto-revert-check-vc-info' to
 +      `VC Mode Line' and put in an xref to that node.
 +      (VC Mode Line): Move `auto-revert-check-vc-info' here and clarify
 +      its description.
 +
 +2005-03-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * calendar.texi (Calendar Systems): Say that the Persian calendar
 +      implemented here is the arithmetical one championed by Birashk.
 +
 +2005-03-30  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * programs.texi (Fortran Motion): Fix previous change.
 +
 +2005-03-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info.
 +
 +2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * text.texi (Refill): Refer to Long Lines Mode.
 +      (Longlines): New node.
 +      (Auto Fill): Don't index "word wrap" here.
 +      (Filling): Add Longlines to menu.
 +
 +2005-03-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * xresources.texi: Minor fixes.
 +
 +      * misc.texi (Emacs Server): Fix Texinfo usage.
 +
 +      * emacs.texi (Top): Don't use a real section heading for
 +      "Detailed Node Listing".  Fake it instead.
 +
 +      * basic.texi (Position Info): Minor cleanup.
 +
 +      * mule.texi (Input Methods): Minor cleanup.
 +
 +2005-03-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * programs.texi (ForIndent Vars): `fortran-if-indent' does other
 +      constructs as well.
 +      (Fortran Motion): Add fortran-end-of-block, fortran-beginning-of-block.
 +
 +2005-03-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * mule.texi (Input Methods): Refer to the command C-u C-x =.
 +
 +      * basic.texi (Position Info): Update the description about the
 +      command C-u C-x =.
 +
 +2005-03-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Top): Use @section for the detailed node listing.
 +
 +      * calendar.texi: Minor fixes to previous change.
 +
 +      * programs.texi (Fortran): Small fixes to previous changes.
 +
 +      * emacs.texi (Top): Update list of subnodes of Dired.
 +      Likewise for building.texi.
 +
 +      * files.texi (File Conveniences): Delete Auto Image File mode.
 +
 +2005-03-28  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * building.texi (Flymake): New node.
 +
 +      * custom.texi (Function Keys): Document kp- event types and
 +      keypad-setup package.
 +
 +      * dired.texi (Wdired): New node.
 +
 +      * files.texi (File Conveniences): Reorder entries.
 +      Explain how to turn on Auto-image-file mode.
 +      Document Thumbs mode.
 +
 +      * mule.texi (Specify Coding): Document recode-region and
 +      recode-file-name.
 +
 +      * programs.texi (Program Modes): Add Conf mode and DNS mode.
 +
 +2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * commands.texi (Keys): M-o is now a prefix key.
 +
 +2005-03-27  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * programs.texi: Reformat and update copyright years.
 +      (Fortran): Update section.
 +
 +2005-03-26  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi: Several small changes in addition to:
 +      (Visiting): Change xref for Dialog Boxes to ref.
 +      (Version Headers): Replace references to obsolete var
 +      `vc-header-alist' with `vc-BACKEND-header'.
 +      (Customizing VC): Update value of `vc-handled-backends'.
 +
 +2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * emacs-xtra.texi (Advanced Calendar/Diary Usage): New section;
 +      move here from Emacs Lisp Reference Manual.
 +      * calendar.texi (Calendar/Diary, Diary Commands)
 +      (Special Diary Entries, Importing Diary): Change some xrefs to
 +      point to emacs-xtra rather than elisp.
 +
 +      * emacs-xtra.texi (Calendar Customizing):
 +      Move view-diary-entries-initially, view-calendar-holidays-initially,
 +      mark-diary-entries-in-calendar, mark-holidays-in-calendar to main
 +      Emacs Manual.
 +      (Appt Customizing): Merge entire section into main Emacs Manual.
 +      * calendar.texi (Holidays): Move view-calendar-holidays-initially,
 +      mark-holidays-in-calendar here from emacs-xtra.
 +      (Displaying the Diary): Move view-diary-entries-initially,
 +      mark-diary-entries-in-calendar here from emacs-xtra.
 +      (Appointments): Move appt-display-mode-line,
 +      appt-display-duration, appt-disp-window-function,
 +      appt-delete-window-function here from emacs-xtra.
 +
 +      * calendar.texi: Update and reformat copyright.
 +      Change all @xrefs to the non-printing emacs-xtra to @inforefs.
 +      (Calendar/Diary): Menu now only on Mouse-3, not C-Mouse-3.
 +      (Diary): Refer to `diary-file' rather than ~/diary.
 +      (Diary Commands): Rename node to "Displaying the Diary".
 +      * emacs.texi (Top): Rename "Diary Commands" section.
 +      * misc.texi (Hardcopy): Rename "Diary Commands" xref.
 +
 +2005-03-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * misc.texi (Emacs Server): Fix the command for setting
 +      server-name.  Add an xref to Invoking emacsclient.
 +
 +      * help.texi (Help Summary): Clarify when "C-h ." will do something
 +      nontrivial.
 +      (Apropos): Add cindex entry for apropos-sort-by-scores.
 +
 +      * display.texi (Text Display): Add index entries for how no-break
 +      characters are displayed.
 +
 +2005-03-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Visiting): Fix cross-references introduced with the
 +      last change.
 +
 +      * xresources.texi (GTK resources): Fix last change.
 +
 +2005-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * xresources.texi (X Resources): GTK options documented too.
 +      (Resources): Clarify meaning of program name.
 +      (Table of Resources): Add visualClass.
 +      (GTK resources): Rewrite.
 +      (GTK widget names, GTK Names in Emacs, GTK styles): Cleanups.
 +
 +      * display.texi (Text Display): Mention non-breaking spaces.
 +
 +      * files.texi (Reverting): Document auto-revert-check-vc-info.
 +
 +      * frames.texi (Mouse Commands): Document
 +      x-mouse-click-focus-ignore-position and mouse-drag-copy-region.
 +
 +      * help.texi (Help Summary): Add `C-h .'.
 +      (Apropos): Apropos accepts a list of search terms.
 +      Document apropos-sort-by-scores.
 +      (Help Echo): Document display-local-help.
 +
 +      * misc.texi (Emacs Server): Document server-name.
 +      (Invoking emacsclient): Document -s option for server names.
 +
 +      * text.texi (Outline Visibility): Introduce "current heading
 +      line" (commands can be called with point on a body line).
 +      Re-order table to follow the sequence of discussion.
 +      hide-body won't hide lines before first header line.
 +      (TeX Mode): Add DocTeX mode.
 +
 +2005-03-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * mule.texi (Single-Byte Character Support): Delete mention
 +      of iso-acc.el and iso-transl.el.
 +
 +2005-03-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * search.texi (Non-ASCII Isearch): Rename from Non-Ascii Isearch.
 +
 +2005-03-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi: Delete explicit node pointers.
 +      (Incremental Search): New menu.
 +      (Basic Isearch, Repeat Isearch, Error in Isearch)
 +      (Non-Ascii Isearch, Isearch Yank, Highlight Isearch, Isearch Scroll)
 +      (Slow Isearch): New subnodes.
 +      (Configuring Scrolling): Node deleted.
 +      (Search Case): Doc default-case-fold-search.
 +      (Regexp Replace): Move replace-regexp doc here.
 +
 +      * rmail.texi (Movemail): Put commas inside closequotes.
 +
 +      * picture.texi (Insert in Picture): Document C-c arrow combos.
 +      (Basic Picture): Clarify erasure.
 +
 +      * display.texi (Font Lock): Put commas inside closequotes.
 +
 +      * cmdargs.texi (General Variables): Put commas inside closequotes.
 +
 +2005-03-23  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Stack Buffer): Mention reverse contrast for
 +      *selected* frame (might not be current frame).
 +
 +2005-03-21  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Starting GUD): Add bashdb.
 +
 +2005-03-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * basic.texi (Moving Point): Add M-g M-g binding.
 +      (Undo): Document undo-only.
 +      (Position Info): Document M-g M-g and C-u M-g M-g.
 +
 +      * building.texi (Building): Put Grep Searching after Compilation
 +      Shell.
 +      (Compilation Mode): Document M-n, M-p, M-}, M-{, and C-c C-f bindings.
 +      Document next-error-highlight.
 +      (Grep Searching): Document grep-highlight-matches.
 +      (Lisp Eval): Typing C-x C-e twice prints integers specially.
 +
 +      * calendar.texi (Importing Diary): Rename node from iCalendar.
 +      Document diary-from-outlook.
 +
 +      * dired.texi (Misc Dired Features): Rename node from Misc Dired
 +      Commands.
 +      Mention effect of X drag and drop on Dired buffers.
 +
 +      * files.texi (Visiting): Document large-file-warning-threshold.
 +      Move paragraph on file-selection dialog.
 +      Mention visiting files using X drag and drop.
 +      (Reverting): Mention using Auto-Revert mode to tail files.
 +      Document auto-revert-tail-mode.
 +      (Version Systems): Minor correction.
 +      (Comparing Files): Diff-mode is no longer based on Compilation
 +      mode.
 +      Document compare-ignore-whitespace.
 +      (Misc File Ops): Explain passing a directory to rename-file.
 +      Likewise for copy-file and make-symbolic-link.
 +
 +      * frames.texi (Wheeled Mice): Mouse wheel support on by default.
 +      Document mouse-wheel-progressive speed.
 +
 +      * help.texi (Misc Help): Document numeric argument for C-h i.
 +      Correctly explain the effect of just C-u as argument.
 +
 +      * killing.texi (Deletion): Document numeric argument for
 +      just-one-space.
 +
 +      * mini.texi (Completion): Completion acts on text before point.
 +
 +      * misc.texi (Saving Emacs Sessions): Document desktop-restore-eager.
 +      (Emulation): CUA mode replaces pc-bindings-mode,
 +      pc-selection-mode, and s-region.
 +
 +      * mule.texi (Input Methods): Leim is now built-in.
 +      (Select Input Method): Document quail-show-key.
 +      (Specify Coding): Document revert-buffer-with-coding-system.
 +
 +      * programs.texi (Fortran Motion): Document f90-next-statement,
 +      f90-previous-statement, f90-next-block, f90-previous-block,
 +      f90-end-of-block, and f90-beginning-of-block.
 +
 +      * text.texi (Format Faces): Replace old M-g key prefix with M-o.
 +
 +      * emacs.texi (Acknowledgments): Updated.
 +
 +      * anti.texi: Total rewrite.
 +
 +2005-03-19  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ack.texi (Acknowledgments): Update.
 +
 +2005-03-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3.  Update
 +      copyright years.
 +
 +2005-03-14  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Commands of GUD): Move paragraph on setting
 +      breakpoints with mouse to the GDB Graphical Interface node.
 +
 +2005-03-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Single Shell, Shell Options): Fix previous change.
 +
 +      * building.texi (Debugger Operation): Update GUD tooltip enable info.
 +
 +2005-03-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Starting GUD): Don't explain text vs graphical
 +      GDB here.  Just mention it and xref.
 +      Delete "just one debugger process".
 +      (Debugger Operation): Move GUD tooltip info here.
 +      (GUD Tooltips): Node deleted.
 +      (GDB Graphical Interface): Explain the two GDB modes here.
 +
 +      * sending.texi (Sending Mail): Minor cleanup.
 +      (Mail Aliases): Explain quoting conventions.
 +      Update key rebinding example.
 +      (Header Editing): C-M-i is like M-TAB.
 +      (Mail Mode Misc): mail-attach-file does not do MIME.
 +
 +      * rmail.texi (Rmail Inbox): Move text from Remote Mailboxes
 +      that really belongs here.
 +      (Remote Mailboxes): Text moved to Rmail Inbox.
 +      (Rmail Display): Mention Mouse-1.
 +      (Movemail): Clarify two movemail versions.
 +      Clarify rmail-movemail-program.
 +
 +      * misc.texi (Single Shell): Replace uudecode example with gpg example.
 +      Document async shell commands.
 +      (Shell History): Clarify.
 +      (Shell Ring): Mention C-UP an C-DOWN.
 +      (Shell Options): Add comint-prompt-read-only.
 +      (Invoking emacsclient): Set EDITOR to run Emacs.
 +      (Sorting): No need to explain what region is.
 +      (Saving Emacs Sessions): Fix typo.
 +      (Recursive Edit): Fix punctuation.
 +      (Emulation): Don't mention "PC bindings" which are standard.
 +      (Hyperlinking): Explain Mouse-1 convention here.
 +      (Find Func): Node deleted.
 +
 +      * help.texi (Name Help): Xref to Hyperlinking.
 +
 +      * glossary.texi (Glossary):
 +      Rename "Balance Parentheses" to "Balancing...".
 +      Add "Byte Compilation".  Correct "Copyleft".
 +      New xref in "Customization".
 +      Clarify "Current Line", "Echoing", "Fringe", "Frame", "Speedbar".
 +      Add "Graphical Terminal" "Keybinding", "Margin", "Window System".
 +      Rename "Registers" to "Register".
 +      Replace "Selecting" with "Selected Frame",
 +      "Selected Window", and "Selecting a Buffer".
 +
 +      * files.texi (Types of Log File): Explain how projects'
 +      methods can vary.
 +
 +      * display.texi (Faces): Delete "Emacs 21".
 +
 +      * custom.texi (Changing a Variable): C-M-i like M-TAB.
 +      * fixit.texi (Spelling): C-M-i like M-TAB.
 +      * mini.texi (Completion Options): C-M-i like M-TAB.
 +      * programs.texi (Symbol Completion): C-M-i like M-TAB.
 +      * text.texi (Text Mode): C-M-i like M-TAB.
 +
 +      * commands.texi (Keys): Mention F1 and F2 in list of prefixes.
 +
 +      * calendar.texi (Specified Dates): Mention `g w'.
 +      (Appointments): appt-activate toggles with no arg.
 +
 +2005-03-05  Juri Linkov  <juri@jurta.org>
 +
 +      * cmdargs.texi (Emacs Invocation): Add cindex
 +      "invocation (command line arguments)"
 +      (Misc X): Add -nbc, --no-blinking-cursor.
 +
 +2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar.texi (iCalendar): No need to require it now.
 +
 +2005-03-03  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * trouble.texi (Contributing): Mention Savannah.  Direct users to
 +      emacs-devel.
 +
 +2005-03-01  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi (Adding to Diary): Mention redrawing of calendar
 +      window.
 +
 +2005-02-27  Richard M. Stallman  <rms@gnu.org>
 +
 +      * building.texi (Compilation): Update mode line status info.
 +
 +2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
 +
 +      * calendar.texi (General Calendar): Document binding of
 +      scroll-other-window-down.
 +      (Mayan Calendar): Fix earliest date.
 +      (Time Intervals): Document timeclock-change.
 +      Fix timeclock-ask-before-exiting documentation.
 +
 +2005-02-26  Kim F. Storm  <storm@cua.dk>
 +
 +      * frames.texi (Mouse References):
 +      Add mouse-1-click-in-non-selected-windows.
 +
 +2005-02-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * screen.texi (Screen): Explain better about cursors and mode lines;
 +      don't presuppose text terminals.
 +      (Point): Don't assume just one cursor.
 +      Clarify explanation of cursors.
 +      (Echo Area, Menu Bar): Cleanups.
 +
 +      * mini.texi (Minibuffer): Prompts are highlighted.
 +      (Minibuffer Edit): Newline = C-j only on text terminals.
 +      Clarify resize-mini-windows values.
 +      Mention M-PAGEUP and M-PAGEDOWN.
 +      (Completion Commands): Mouse-1 like Mouse-2.
 +      (Minibuffer History): Explain history commands better.
 +      (Repetition): Add xref to Incremental Search.
 +
 +      * mark.texi (Setting Mark): Clarify info about displaying mark.
 +      Clarify explanation of C-@ and C-SPC.
 +      (Transient Mark): Mention Delete Selection mode.
 +      (Marking Objects): Clean up text about extending the region.
 +
 +      * m-x.texi (M-x): One C-g doesn't always go to top level.
 +      No delay before suggest-key-bindings output.
 +
 +      * fixit.texi (Fixit): Mention C-/ for undo.
 +      (Spelling): Mention ESC TAB like M-TAB.
 +      Replacement words with r and R are rechecked.
 +      Say where C-g leaves point.  Mention ? as input.
 +
 +2005-02-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * cmdargs.texi (Initial Options): Add cross reference.
 +
 +2005-02-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * emacs.texi (Top): Update menu for splitting of node in
 +      msdog.texi.
 +      * frames.texi (Frames): Update xref for splitting of node in
 +      msdog.texi.
 +      * trouble.texi (Quitting): Ditto.
 +
 +2005-02-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Split Window): Simplify line truncation info
 +      and xref to Display Custom.
 +
 +      * trouble.texi (Quitting): Emergency escape only for text terminal.
 +      (Screen Garbled): C-l for ungarbling is only for text terminal.
 +
 +      * text.texi (Text Mode): ESC TAB alternative for M-TAB.
 +
 +      * sending.texi (Header Editing): ESC TAB alternative for M-TAB.
 +
 +      * programs.texi (Program Modes): Mention Python mode.
 +      (Moving by Defuns): Repeating C-M-h extends region.
 +      (Basic Indent): Clarify.
 +      (Custom C Indent): Clarify.
 +      (Expressions): Repeating C-M-@ extends region.
 +      (Info Lookup): Clarify for C-h S.
 +      (Symbol Completion): ESC TAB alternative for M-TAB.
 +      (Electric C): Clarify.
 +
 +      * emacs.texi (Top): Update display.texi and frames.texi submenu data.
 +
 +      * msdog.texi (MS-DOS Keyboard, MS-DOS Mouse): Split from
 +      MS-DOS Input node.
 +      (MS-DOS Keyboard): Start with explaining DEL and BREAK.
 +      (MS-DOS and MULE): Clarify.
 +      (MS-DOS Processes, Windows Processes): Fix typos.
 +
 +      * major.texi (Choosing Modes): Clarify.
 +
 +      * kmacro.texi (Basic Keyboard Macro): Doc F3, F4.
 +      (Keyboard Macro Step-Edit): Clarify.
 +
 +      * indent.texi (Indentation): Clarifications.
 +
 +      * help.texi (Help): Correct error about C-h in query-replace.
 +      Clarify apropos vs C-h a.  Fix how to search in FAQ.
 +      (Key Help): Describe C-h w here.
 +      (Name Help): Minor cleanup.  C-h w moved to Key Help.
 +      Clarify the "object" joke.
 +      (Apropos): Clarify.  Mouse-1 like Mouse-2.
 +      (Help Mode): Mouse-1 like Mouse-2.
 +
 +      * fixit.texi (Spelling): Mention ESC TAB as alt. for M-TAB.
 +
 +      * display.texi (Display): Reorder menu.
 +      (Faces): Cleanup.
 +      (Font Lock): Cleanup.  Mention Options menu.
 +      Delete obsolete text.
 +      (Scrolling): For C-l, don't presume text terminal.
 +      (Horizontal Scrolling): Simplify intro.
 +      (Follow Mode): Clarify.
 +      (Cursor Display): Moved before Display Custom.
 +      (Display Custom): Explain no-redraw-on-reenter is for text terminals.
 +      Doc default-tab-width.  Doc line truncation more thoroughly.
 +
 +      * dired.texi (Dired Enter): C-x C-f can run Dired.
 +      (Dired Visiting): Comment out `a' command.
 +      Mouse-1 is like Mouse-2.
 +      (Shell Commands in Dired): ? can be used more than once.
 +
 +      * basic.texi (Continuation Lines): Simplify description of truncation,
 +      and refer to Display Custom for the rest of it.
 +
 +2005-02-06  Lute Kamstra  <lute@gnu.org>
 +
 +      * basic.texi (Undo): Fix typo.
 +
 +      * cmdargs.texi (Emacs Invocation): Fix typo.
 +
 +      * custom.texi (Init Examples): Fix typo.
 +
 +      * abbrevs.texi (Expanding Abbrevs): Fix typo.
 +
 +2005-02-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * regs.texi (Registers): Registers can hold numbers, too.
 +
 +      * killing.texi (Other Kill Commands): Cleanup.
 +      Delete redundant explanation of kill in read-only buffer.
 +      (Yanking): Mention term "copying".
 +      (Accumulating Text): Fix typo.
 +
 +      * entering.texi (Entering Emacs): Update rationale at start.
 +      (Exiting): Treat iconifying on a par with suspension.
 +
 +      * custom.texi (Minor Modes): Fix typo.
 +      (Easy Customization): Fix menu style.
 +      (Variables): Add xref.
 +      (Examining): Setting for future sessions works through .emacs.
 +      (Keymaps): "Text terminals", not "Many".
 +      (Init Rebinding): Explain \C-.  Show example of \M-.
 +      Fix minor wording errors.
 +      (Function Keys): Explain vector syntax just once.
 +      (Named ASCII Chars): Clarify history of TAB/C-i connection.
 +      (Init File): Mention .emacs.d directory.
 +      (Init Examples): Add xref.
 +      (Find Init): Mention .emacs.d directory.
 +
 +      * cmdargs.texi (Emacs Invocation): +LINENUM is also an option.
 +      (Action Arguments): Explain which kinds of -l args are found how.
 +      (Initial Options): --batch does not inhibit site-start.
 +      Add xrefs.
 +      (Command Example): Use --batch, not -batch.
 +
 +      * basic.texi (Inserting Text): Cleanup wording.
 +      (Moving Point): Doc PRIOR, PAGEUP, NEXT, PAGEDOWN more systematically.
 +      C-n is not error at end of buffer.
 +      (Undo): Doc C-/ like C-_.  Add xrefs.
 +      (Arguments): META key may be labeled ALT.
 +      Peculiar arg meanings are explained in doc strings.
 +
 +      * abbrevs.texi (Expanding Abbrevs): Clarify.
 +
 +2005-02-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frames.texi (Frame Parameters): Add an xref to the description
 +      of list-colors-display.  Add a pointer to the X docs about colors.
 +
 +      * cmdargs.texi (Colors): Mention 16-, 88- and 256-color modes.
 +      Impove docs of list-colors-display.
 +
 +2005-02-03  Lute Kamstra  <lute@gnu.org>
 +
 +      * frames.texi (Frames, Drag and Drop): Fix typos.
 +
 +2005-02-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Basic Window): Mention color-change in mode line.
 +      (Change Window): Explain dragging vertical boundaries.
 +
 +      * text.texi (Sentences): Clarify.
 +      (Paragraphs): Explain M-a and blank lines.
 +      (Outline Mode): Clarify text and menu.
 +      (Hard and Soft Newlines): Mention use-hard-newlines.
 +
 +      * frames.texi (Frames): Delete unnecessary mention of Windows.
 +      (Mouse Commands): Likewise.  Mention xterm mouse support.
 +      (Clipboard): Clarify.
 +      (Mouse References): Mention use of Mouse-1 for following links.
 +      (Menu Mouse Clicks): Clarify.
 +      (Mode Line Mouse): Clarify.
 +      (Drag and Drop): Rewrite.
 +
 +      * fixit.texi (Spelling): Fix typo.
 +
 +      * files.texi (File Names): Clarify.
 +      (Visiting): Update conditions for use of file dialog.  Clarify.
 +      (Saving): Doc d as answer in save-some-buffers.
 +      (Remote Files): Clean up the text.
 +
 +      * dired.texi (Misc Dired Commands): Delete dired-marked-files.
 +
 +      * buffers.texi (Select Buffer): Doc next-buffer and prev-buffer.
 +      (List Buffers): Clarify.
 +      (Several Buffers): Doc T command.
 +      (Buffer Convenience): Clarify menu.
 +
 +      * basic.texi (Undo): Clarify last change.
 +
 +2005-02-02  Matt Hodges  <MPHodges@member.fsf.org>
 +
 +      * fixit.texi (Spelling): Fix typo.
 +
 +2005-02-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * basic.texi (Undo): Update description of `undo-outer-limit'.
 +
 +2005-02-01  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi: Update documentation relating to GDB Graphical
 +      Interface.
 +
 +2005-01-30  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Easy Customization): Adapt menu to node name change.
 +
 +2005-01-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Easy Customization): Defn of "User Option" now
 +      includes faces.  Don't say just "option" when talking about variables.
 +      Do say just "options" to mean "anything customizable".
 +      (Specific Customization): Describe `customize-variable',
 +      not `customize-option'.
 +
 +      * glossary.texi (Glossary) <Faces>: Add xref.
 +      <User Option>: Change definition--include faces.  Change xref.
 +
 +      * picture.texi (Picture): Mention artist.el.
 +
 +      * sending.texi, screen.texi, programs.texi, misc.texi:
 +      * mini.texi, major.texi, maintaining.texi, macos.texi:
 +      * help.texi, frames.texi, files.texi:
 +      Don't say just "option" when talking about variables.
 +
 +      * display.texi, mule.texi: Don't say just "option" when talking
 +      about variables.  Other minor cleanups.
 +
 +2005-01-26  Lute Kamstra  <lute@gnu.org>
 +
 +      * cmdargs.texi (Initial Options): Add a cross reference to `Init
 +      File'.  Mention the `-Q' option at the `--no-site-file' option.
 +
 +2005-01-22  David Kastrup  <dak@gnu.org>
 +
 +      * building.texi (Grep Searching): Mention alias `find-grep' for
 +      `grep-find'.
 +
 +2005-01-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * calendar.texi (Time Intervals): Delete special stuff for MS-DOS.
 +
 +2005-01-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
 +
 +      * rmail.texi (Movemail): Explain differences
 +      between standard and mailutils versions of movemail.
 +      Describe command line and configuration options introduced
 +      with the latter.
 +      Explain the notion of mailbox URL, provide examples and
 +      cross-references to mailutils documentation.
 +      Describe various methods of specifying mailbox names,
 +      user names and user passwords for rmail.
 +      (Remote Mailboxes): New section.  Describe
 +      how movemail handles remote mailboxes.  Describe configuration
 +      options used to control its behavior.
 +      (Other Mailbox Formats): Explain handling of various mailbox
 +      formats.
 +
 +2005-01-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Commands): Clarification.
 +
 +2005-01-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Multi-line Indent): Fix previous change.
 +      (Fortran Autofill): Simplify description of fortran-auto-fill-mode.
 +
 +2005-01-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Faces): isearch-lazy-highlight-face renamed to
 +      lazy-highlight.
 +
 +      * search.texi (Query Replace): Mention faces query-replace
 +      and lazy-highlight.
 +      (Incremental Search): Update isearch highlighting info.
 +
 +2005-01-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Saving Customizations): Minor improvement.
 +
 +2005-01-03  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Saving Customizations): Emacs no longer loads
 +      `custom-file' after .emacs.  No longer mention customizing through
 +      Custom.
 +
 +2005-01-01  Andreas Schwab  <schwab@suse.de>
 +
 +      * killing.texi (Graphical Kill): Move up under node Killing,
 +      change @section to @subsection.
 +
 +2005-01-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Face Customization): Mention hex color specs.
 +
 +      * emacs.texi (Top): Update Killing submenu.
 +
 +      * killing.texi (Killing): Reorganize section.
 +      No more TeX-only text; put the node command at start of chapter.
 +      But the first section heading is used only in TeX.
 +      Rewrite the text to read better in this mode.
 +      (Graphical Kill): New subnode gets some of the text that
 +      used to be in the first section.
 +
 +2004-12-31  Richard M. Stallman  <rms@gnu.org>
 +
 +      * dired.texi (Shell Commands in Dired): Delete the ? example.
 +
 +      * display.texi (Scrolling): Correct scroll-preserve-screen-position.
 +
 +      * files.texi (Saving): Describe new require-final-newline features
 +      and mode-require-final-newline.
 +
 +2004-12-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (File Variables): Clarify previous change.
 +
 +2004-12-27  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Mention Gtk+ 2.6 also, as that version is
 +      out now.
 +
 +2004-12-27  Richard M. Stallman  <rms@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Specify --force.
 +
 +      * basic.texi (Moving Point): C-e now runs move-end-of-line.
 +      (Undo): Doc undo-outer-limit.
 +
 +2004-12-15  Juri Linkov  <juri@jurta.org>
 +
 +      * mark.texi (Transient Mark, Mark Ring): M-< and other
 +      movement commands don't set mark in Transient Mark mode
 +      if mark is active.
 +
 +2004-12-12  Juri Linkov  <juri@jurta.org>
 +
 +      * misc.texi (FFAP): Add C-x C-r, C-x C-v, C-x C-d,
 +      C-x 4 r, C-x 4 d, C-x 5 r, C-x 5 d.
 +
 +      * dired.texi (Dired Navigation): Add @r{(Dired)} to M-g.
 +      (Misc Dired Commands): Add @r{(Dired)} to w.
 +
 +2004-12-12  Juri Linkov  <juri@jurta.org>
 +
 +      * mark.texi (Marking Objects): Marking commands also extend the
 +      region when mark is active in Transient Mark mode.
 +
 +2004-12-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * custom.texi (Saving Customizations): Emacs only loads the custom
 +      file automatically after the init file in version 22.1 or later.
 +      Adapt text and examples to this fact.
 +
 +2004-12-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to
 +      be set through Custom.  Otherwise, it has no effect.
 +
 +2004-12-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi, doclicense.texi, xresources.texi, emacs.texi:
 +      * entering.texi: Rename Command Line to Emacs Invocation.
 +
 +      * misc.texi (Term Mode): Correcty describe C-c.
 +
 +      * custom.texi (Easy Customization): Move up to section level,
 +      before Variables.  Avoid using the term "variable"; say "option".
 +      New initial explanation.
 +      (Variables): In initial explanation, connect "variable" to the
 +      already-explained "user option".
 +
 +      * emacs.texi (Top): Fix ref to Command Line.
 +      Move reference to Easy Customization.
 +
 +      * xresources.texi (X Resources): Fix From link.
 +
 +      * doclicense.texi (GNU Free Documentation License): Fix To link.
 +
 +      * entering.texi (Entering Emacs): Fix xref, now to Command Line.
 +
 +      * cmdargs.texi (Command Line): Node renamed from Command Arguments.
 +
 +2004-12-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi (Initial Options): Clarify batch mode i/o.
 +
 +2004-12-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * kmacro.texi: Several small changes in addition to the following.
 +      (Keyboard Macro Ring): Describe behavior of `C-x C-k C-k' when
 +      defining a keyboard macro.
 +      Mention `kmacro-ring-max'.
 +      (Keyboard Macro Counter): Clarify description of
 +      `kmacro-insert-counter', `kmacro-set-counter',
 +      `kmacro-add-counter' and `kmacro-set-format'.
 +
 +2004-11-29  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * custom.texi (File Variables): Add `unibyte' and make it more
 +      clear that `unibyte' and `coding' are special.  Suggested by Simon
 +      Krahnke <overlord@gmx.li>.
 +
 +      * mule.texi (Enabling Multibyte): Refer to File Variables.
 +      Suggested by Simon Krahnke <overlord@gmx.li>.
 +
 +2004-11-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Rename use-old-gtk-file-dialog to
 +      x-use-old-gtk-file-dialog.
 +
 +2004-11-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Fill Prefix): M-q doesn't apply fill prefix to first line.
 +
 +2004-11-09  Lars Brinkhoff  <lars@nocrew.org>
 +
 +      * building.texi (Lisp Eval): Delete hyphen in section name.
 +
 +2004-11-19  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * files.texi (Old Versions):
 +      No longer document annotation as "CVS only".
 +
 +2004-11-10  Andre Spiegel  <spiegel@gnu.org>
 +
 +      * files.texi (Version Control): Rewrite the introduction about
 +      version systems, mentioning the new ones that we support.  Thanks
 +      to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
 +      suggestions.
 +
 +2004-11-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Replace non-nil with non-@code{nil}.
 +
 +2004-11-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Document use-old-gtk-file-dialog.
 +
 +2004-10-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * text.texi (Text Based Tables, Table Definition)
 +      (Table Creation, Table Recognition, Cell Commands)
 +      (Cell Justification, Row Commands, Column Commands)
 +      (Fixed Width Mode, Table Conversion, Measuring Tables)
 +      (Table Misc): New nodes, documenting the Table Mode.
 +
 +2004-10-19  Jason Rumney  <jasonr@gnu.org>
 +
 +      * makefile.w32-in (info): Change order of arguments to makeinfo.
 +
 +2004-10-19  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar.texi (iCalendar): Update for package changes.
 +
 +2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Misc File Ops): View mode is a minor mode.
 +
 +2004-10-08  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi (iCalendar): Style changes.
 +
 +2004-10-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * search.texi (Regexps): The regexp described in the example is no
 +      longer stored in the variable `sentence-end'.
 +
 +2004-10-06  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * building.texi (Starting GUD): Note that multiple debugging
 +      sessions requires `gdb --fullname'.
 +
 +2004-10-05  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar.texi (iCalendar): New section for a new package.
 +
 +2004-10-05  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * text.texi: Various small changes in addition to the following.
 +      (Text): Replace xref for autotype with inforef.
 +      (Sentences): Explain nil value for `sentence-end'.
 +      (Paragraphs): Update default values for `paragraph-start' and
 +      `paragraph-separate'.
 +      (Text Mode): Correct description of Text mode's effect on the
 +      syntax table.
 +      (Outline Visibility): `hide-other' does not hide top level headings.
 +      `selective-display-ellipses' no longer has an effect on Outline mode.
 +      (TeX Misc): Add missing @cindex.
 +      Replace xref for RefTeX with inforef.
 +      (Requesting Formatted Text): The variable
 +      `enriched-fill-after-visiting' no longer exists.
 +      (Editing Format Info): Update names of menu items and commands.
 +      (Format Faces): Mention special effect of specifying the default face.
 +      Describe inheritance of text properties.
 +      Correct description of `fixed' face.
 +      (Format Indentation): Correct description of effect of setting
 +      margins.  Mention `set-left-margin' and `set-right-margin'.
 +      (Format Justification): Update names of menu items.
 +      `set-justification-full' is now bound to `M-j b'.
 +      Mention that `default-justification' is a per buffer variable.
 +      (Format Properties): Update name of menu item.
 +      (Forcing Enriched Mode): `format-decode-buffer' automatically
 +      turns on Enriched mode if the buffer is in text/enriched format.
 +
 +2004-10-05  Emilio C. Lopes  <eclig@gmx.net>
 +
 +      * calendar.texi (From Other Calendar): Add calendar-goto-iso-week.
 +
 +2004-09-28  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Display Custom) <indicate-buffer-boundaries>:
 +      Align with new functionality.
 +
 +2004-09-22  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Display Custom): Remove stray `@end defvar'.
 +
 +2004-09-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Display Custom): Add `overflow-newline-into-fringe',
 +      `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'.
 +
 +2004-09-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Hooks): Explain using setq to clear out a hook.
 +      (File Variables): Explain multiline string constants.
 +      (Non-ASCII Rebinding): Explain when you need to update
 +      non-ASCII char codes in .emacs.
 +
 +      * building.texi (Compilation): Explain how to make a silent
 +      subprocess that won't be terminated.  Explain compilation-environment.
 +
 +2004-09-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * mini.texi (Repetition): Rename isearch-resume-enabled to
 +      isearch-resume-in-command-history and change default to disabled.
 +
 +2004-09-09  Kim F. Storm  <storm@cua.dk>
 +
 +      * kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro'
 +      with new `kmacro-name-last-macro'.
 +
 +2004-09-08  Juri Linkov  <juri@jurta.org>
 +
 +      * mini.texi (Minibuffer History): Add `history-delete-duplicates'.
 +
 +2004-09-03  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Incremental Search): Update wording for M-%.
 +
 +2004-09-02  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * killing.texi (Killing): Correct description of kill commands in
 +      read-only buffer.
 +
 +2004-09-02  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * building.texi (Compilation Mode): Add a paragraph about rules
 +      for finding the compilation buffer for `next-error'.
 +
 +      * search.texi (Other Repeating Search): Mention that Occur mode
 +      supports the next-error functionality.
 +
 +2004-09-02  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Regexp Replace): Add missing backslash to \footnote.
 +
 +2004-08-31  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * kmacro.texi (Basic Keyboard Macro):
 +      `apply-macro-to-region-lines' now operates on all lines that begin
 +      in the region, rather than on all complete lines in the region.
 +
 +2004-08-31  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Drag and drop): Add documentation about
 +      x-dnd-test-function and x-dnd-known-types.
 +
 +2004-08-30  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * indent.texi: Various minor changes in addition to:
 +      (Indentation Commands): Correct description of `indent-relative'.
 +      (Tab Stops): <TAB> is no longer bound to `tab-to-tab-stop' in Text
 +      mode.  The *Tab Stops* buffer uses Overwrite Mode.
 +      (Just Spaces): `tabify' converts sequences of at least two spaces
 +      to tabs.
 +
 +2004-08-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Secondary Selection): Setting the secondary
 +      selection with M-Drag-Mouse-1 does not alter the kill ring,
 +      setting it with M-Mouse-1 and M-Mouse-3 does.
 +      (Mode Line Mouse): C-Mouse-2 on scroll bar now also works for
 +      toolkit scroll bars.
 +      (Scroll Bars): Ditto.
 +
 +      * windows.texi (Basic Window): When using a window system, the value
 +      of point in a non-selected window is indicated by a hollow box.
 +      (Split Window): Side by side windows are separated by a scroll bar,
 +      if scroll bars are used.
 +      C-Mouse-2 on scroll bar now also works for toolkit scroll bars.
 +      (Change Window): Correct Mouse-2 vs Mouse-3 mess-up.
 +      (Window Convenience): Update bindings for `winner-undo' and
 +      `winner-redo'.
 +
 +      * ack.texi (Acknowledgments): Use `@unnumbered'.
 +      * misc.texi : Adapt sectioning in Info to the node structure.
 +      (Invoking emacsclient): Make "Invoking emacsclient" a subsection
 +      of "Using Emacs as a Server".
 +      * building.texi (Building): Interchange nodes (for correct numbering).
 +      * programs.texi (Programs): Interchange nodes (for correct numbering).
 +      * killing.texi, entering.texi, commands.texi: Adapt sectioning in
 +      Info to the node structure.
 +      * emacs.texi: Make "GNU GENERAL PUBLIC LICENSE" an appendix.
 +      Rearrange order of nodes and sections such that both "GNU GENERAL
 +      PUBLIC LICENSE" and "GNU Free Documentation License" appear at the
 +      end, as appropriate for appendices.
 +      (Acknowledgments): Put inside @iftex instead of @ifnotinfo.
 +      Use `@unnumberedsec'.
 +      * trouble.texi: Adapt sectioning in Info to the node structure.
 +      Adapt node pointers to change in emacs.texi.
 +      * cmdargs.texi, doclicense.texi: Adapt node pointers.
 +
 +2004-08-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * custom.texi (Non-ASCII Rebinding): Fix and simplify the
 +      description for unibyte mode.
 +
 +2004-08-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Font Lock): Correct invalid (for hardcopy) @xref.
 +
 +      * search.texi (Regexps): Correct cryptic (in hardcopy) @ref.
 +      (Configuring Scrolling): Correct invalid (for hardcopy) @xref.
 +      (Regexp Replace): Standardize reference to hardcopy Elisp Manual
 +      in @pxref.
 +
 +2004-08-22  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * kmacro.texi (Keyboard Macro Counter, Keyboard Macro Step-Edit):
 +      Change section names.
 +
 +2004-08-21  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * kmacro.texi (Keyboard Macro Ring): Rename section.
 +      Emacs treats the head of the macro ring as the `last keyboard macro'.
 +      (Keyboard Macro Counter): Minor change.
 +      (Save Keyboard Macro): Some clarifications.
 +      (Edit Keyboard Macro): Rename section.
 +
 +      * buffers.texi (Buffers): Maximum buffer size is now 256M on
 +      32-bit machines.
 +      (Several Buffers): Clarify which buffer is selected if `2' is
 +      pressed in the Buffer Menu.
 +      Auto Revert mode can be used to update the Buffer Menu
 +      automatically.
 +
 +2004-08-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * help.texi (Misc Help): Add an index entry for finding an Info
 +      manual by its file name.
 +
 +2004-08-20  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Backup Deletion): Correct description of
 +      `delete-old-versions'.
 +      (Time Stamps): `time-stamp' needs to be added to `before-save-hook'.
 +      (Auto Save Files): Recommend `auto-save-mode' to reenable
 +      auto-saving, rather than the abbreviation `auto-save'.
 +
 +2004-08-17  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * emacs.texi (Top): Mention "cutting" and "pasting" as synonyms
 +      for "killing" and "yanking" in main menu.
 +
 +2004-08-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * killing.texi (Yanking, Killing): Minor cleanups.
 +
 +      * mark.texi (Momentary Mark): Minor cleanups.
 +
 +2004-08-15  Kenichi Handa  <handa@etl.go.jp>
 +
 +      * custom.texi (Non-ASCII Rebinding):
 +      C-q always inserts the right code to pass to global-set-key.
 +
 +2004-08-13  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * regs.texi (RegNumbers): Mention `C-x r i' binding for
 +      `insert-register', instead of `C-x r g' binding, for consistency.
 +
 +2004-08-12  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * fixit.texi (Spelling): Fix typo.
 +
 +2004-08-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * help.texi (Help): Fix Texinfo usage.
 +
 +2004-07-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Paragraphs): Update how paragraphs are separated
 +      and the default for paragraph-separate.
 +
 +      * search.texi (Regexp Replace): Further update text for new
 +      replacement operators.
 +
 +2004-07-18  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * emacs-xtra.texi (Subdir switches): Dired does not remember the
 +      `R' switch.
 +
 +      * dired.texi (Dired Updating): `k' only deletes inserted
 +      subdirectories from the Dired buffer if a prefix argument was given.
 +
 +      * search.texi (Regexps): Delete redundant definition of `symbol' in
 +      description of `\_>'.  It already occurs in the description of `\_<'.
 +
 +2004-07-01  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Incremental Search): Add C-M-w, C-M-y, M-%, C-M-%, M-e.
 +      (Regexp Search): Add M-r.
 +
 +2004-06-30  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * makefile.w32-in (EMACSSOURCES): Remove emacs-xtra.
 +
 +2004-06-29  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * search.texi, calendar.texi: Markup fixes.
 +
 +2004-06-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi (Regexp Replace): Rewrite description of \# \, and \?.
 +
 +2004-06-25  David Kastrup  <dak@gnu.org>
 +
 +      * search.texi (Regexp Replace): Some typo corrections and
 +      rearrangement.
 +
 +2004-06-24  David Kastrup  <dak@gnu.org>
 +
 +      * search.texi (Unconditional Replace): Use replace-string instead
 +      of query-replace in example.
 +      (Regexp Replace): Add explanations for `\,', `\#' and `\?'
 +      sequences.
 +      (Query Replace): Correct explanation of `^' which does not use
 +      the mark stack.
 +
 +2004-06-21  Nick Roberts  <nickrob@gnu.org>
 +
 +      * misc.texi (Shell History Copying): Document comint-insert-input.
 +      (Shell Ring): Describe comint-dynamic-list-input-ring here.
 +
 +2004-06-20  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * msdog.texi (Text and Binary, MS-DOS Printing): Use m-dash.
 +      * custom.texi (Customization): Do.
 +      * anti.texi (Antinews): Do.
 +      * abbrevs.texi (Defining Abbrevs): Do.
 +
 +      * programs.texi (Info Lookup): Fix keybinding for
 +      info-lookup-symbol.
 +
 +2004-06-16  Juanma Barranquero  <lektu@terra.es>
 +
 +      * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, EMACSSOURCES):
 +      Add emacs-xtra.
 +      ($(infodir)/emacs-xtra, emacs-xtra.dvi): New dependencies.
 +      (clean): Add emacs-xtra and flymake.  Remove redundancies.
 +
 +2004-06-15  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/emacs-xtra):
 +      Add emacs-xtra.
 +      * emacs-xtra.texi: New file.
 +
 +2004-06-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * dired.texi (Dired Enter): Mention conditions on `ls' switches.
 +      (Dired and Find): Mention differences with ordinary Dired buffers.
 +
 +2004-06-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Init Syntax): Explain about vars that do special
 +      things when set with setq or with Custom.
 +      (Init Examples): Add line-number-mode example.
 +
 +2004-06-12  Juri Linkov  <juri@jurta.org>
 +
 +      * dired.texi (Operating on Files): Add dired-do-touch.
 +
 +2004-06-10  Juri Linkov  <juri@jurta.org>
 +
 +      * building.texi (Lisp Eval): Add C-M-x on defface.
 +
 +2004-06-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Reverting): Auto-Revert mode and
 +      Global Auto-Revert mode no longer revert remote files.
 +
 +2004-05-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * custom.texi (Init File): Two dashes start --no-site-file.
 +
 +2004-05-29  Alan Mackenzie  <acm@muc.de>
 +
 +      * programs.texi: Update for CC Mode 5.30 and incidental amendments.
 +      ("AWK"): Is consistently thus spelt throughout.
 +      (AWK, Pike): Document as "C-like modes".
 +      (@kbd{M-j}): Document as alternative to @kbd{C-M-j}.
 +      (M-x man): Supersedes M-x manual-entry.
 +      Add numerous index entries.  Correct "ESC a/e" to "M-a/e".
 +
 +      ("Comments in C"): Delete node; the info is in CC Mode manual.
 +      (c-comment-only-line-offset): Remove description.
 +
 +      (C-c ., C-c C-c): Describe new C Mode bindings.
 +
 +      (C-u TAB, indent-code-rigidly, c-indent-exp, c-tab-always-indent)
 +      (@dfn{Style}, c-default-style, comment-column, comment-padding)
 +      (c-up-conditional, c-beginning-of-statement, c-end-of-statement):
 +      Amend definitions.
 +
 +      (c-beginning-of-defun, c-end-of-defun, c-context-line-break):
 +      Describe functions.
 +
 +      (c-comment-start-regexp, c-hanging-comment-ender-p)
 +      (c-hanging-comment-starter-p): Remove obsolete definitions.
 +
 +      * emacs.texi: Remove the menu entry "Comments in C".
 +
 +2004-05-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * dired.texi (Dired and Find): `find-ls-option' does not apply to
 +      `M-x locate'.
 +
 +2004-05-16  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi (ack.texi) [@ifnottex]: Change condition; with @ifinfo,
 +      makeinfo --html fails.
 +      * help.texi (Help Summary) [@ifnottex]: Likewise.
 +
 +2004-05-13  Nick Roberts  <nickrob@gnu.org>
 +
 +      * building.texi (GDB Graphical Interface): Update and describe
 +      layout first.
 +
 +2004-05-04  Jason Rumney  <jasonr@gnu.org>
 +
 +      * makefile.w32-in: Revert last change.
 +
 +2004-05-03  Jason Rumney  <jasonr@gnu.org>
 +
 +      * makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes.
 +
 +2004-04-23  Juanma Barranquero  <lektu@terra.es>
 +
 +      * makefile.w32-in: Add "-*- makefile -*-" mode tag.
 +
 +2004-04-18  Juri Linkov  <juri@jurta.org>
 +
 +      * fixit.texi (Spelling): Remove file extension from ispell xref.
 +
 +2004-04-15  Kim F. Storm  <storm@cua.dk>
 +
 +      * cmdargs.texi (Initial Options): Add -Q.
 +
 +2004-04-05  Kim F. Storm  <storm@cua.dk>
 +
 +      * custom.texi (File Variables): Add safe-local-eval-forms.
 +
 +2004-04-02  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Reverting): Correct description of revert-buffer's
 +      handling of point.
 +
 +2004-03-22  Juri Linkov  <juri@jurta.org>
 +
 +      * emacs.texi (Top): Add `Misc X'.
 +
 +      * trouble.texi: Fix help key bindings.
 +
 +      * glossary.texi: Improve references.
 +
 +      * help.texi: Sync keywords with finder.el.
 +
 +      * mini.texi (Completion): Add description for menu items.
 +
 +      * misc.texi (Browse-URL, FFAP): Add information about keywords.
 +
 +      * sending.texi (Mail Methods): Fix xref to Message manual.
 +
 +2004-03-12  Richard M. Stallman  <rms@gnu.org>
 +
 +      * buffers.texi (Misc Buffer): Add index entry for rename-uniquely.
 +
 +2004-03-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi (Regexps): Explain that ^ and $ have their
 +      special meanings only in certain contexts.
 +
 +      * programs.texi (Expressions): Doc C-M-SPC as alias for C-M-@.
 +
 +      * mule.texi (Specify Coding): Doc C-x RET F.
 +
 +      * buffers.texi (Misc Buffer): Explain use of M-x rename-uniquely
 +      for multiple compile and grep buffers.
 +      (Indirect Buffers): Don't recommand clone-indirect-buffer
 +      for multiple compile and grep buffers.
 +
 +2004-02-29  Juanma Barranquero  <lektu@terra.es>
 +
 +      * makefile.w32-in (mostlyclean, clean, maintainer-clean):
 +      Use $(DEL) instead of rm, and ignore exit code.
 +
 +2004-02-23  Nick Roberts  <nick@nick.uklinux.net>
 +
 +      * building.texi (Watch Expressions): Update.
 +
 +2004-02-21  Juri Linkov  <juri@jurta.org>
 +
 +      * cmdargs.texi (Action Arguments): Add alias --find-file.  Add
 +      --directory, --help, --version.  Move text about command-line-args
 +      to Command Arguments.
 +      (Initial Options): Add @cindex for --script.  Fix @cindex for -q.
 +      Add --no-desktop.  Add alias --no-multibyte, --no-unibyte.
 +      (Window Size X): Join -g and --geometry.  Add @cindex.
 +      (Borders X): Fix @cindex for -ib.  Add @cindex for -bw.
 +      (Title X): Remove alias -title.
 +      (Misc X): New node.
 +
 +2004-02-15  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Drag and drop): Add Motif to list of supported
 +      protocols.
 +
 +2004-02-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Drag and drop): New section.
 +
 +2004-01-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * emacs.texi (Acknowledgments): Renamed from Acknowledgements.
 +      Include it only @ifnotinfo.  Patch the preceding and following
 +      node headers to point to each other.
 +
 +2004-01-11  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi (Appointments): Update section.
 +
 +2003-12-29  Kevin Ryde  <user42@zip.com.au>
 +
 +      * programs.texi (C Modes): Fix the xref.
 +
 +2003-12-23  Nick Roberts  <nick@nick.uklinux.net>
 +
 +      * building.texi (Watch Expressions): Update.
 +      (Commands of GUD): Include use of toolbar + breakpoints set from
 +      fringe/margin.
 +
 +2003-12-03  Andre Spiegel  <spiegel@gnu.org>
 +
 +      * files.texi: Say how to disable VC.  Suggested by Alan Mackenzie
 +      <acm@muc.de>.
 +
 +2003-11-29  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Dialog Boxes): Add use-file-dialog.
 +
 +2003-11-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
 +
 +      * ack.texi: Note that Alan Mackenzie contributed the AWK support
 +      in CC Mode.
 +
 +2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
 +
 +      * man/ack.texi, man/basic.texi, man/cmdargs.texi:
 +      * man/commands.texi, man/custom.texi, man/display.texi:
 +      * man/emacs.texi, man/files.texi:
 +      * man/frames.texi, man/glossary.texi, man/killing.texi:
 +      * man/macos.texi, man/mark.texi, man/misc.texi, man/msdog.texi:
 +      * man/mule.texi, man/rmail.texi, man/search.texi:
 +      * man/sending.texi, man/text.texi, man/trouble.texi:
 +      Replace @sc{ascii} and ASCII with @acronym{ASCII}.
 +
 +2003-11-01  Alan Mackenzie  <acm@muc.de>
 +
 +      * search.texi (Scrolling During Incremental Search): Document a
 +      new scrolling facility in isearch mode.
 +
 +2003-10-22  Miles Bader  <miles@gnu.org>
 +
 +      * Makefile.in (info): Move before $(top_srcdir)/info.
 +
 +2003-10-22  Nick Roberts  <nick@nick.uklinux.net>
 +
 +      * building.texi (Watch Expressions): Update section on data display
 +      to reflect code changes (GDB Graphical Interface).
 +
 +2003-10-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * xresources.texi (GTK resources): Clean up previous change.
 +
 +2003-10-12  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (GTK resources): Add a note that some themes
 +      disallow customizations.  Add scroll theme example.
 +
 +2003-09-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * cmdargs.texi (General Variables): Remove MAILRC envvar.
 +
 +      * misc.texi (Saving Emacs Sessions): Shorten the section,
 +      collapsing back into one node.
 +
 +2003-09-30  Lars Hansen  <larsh@math.ku.dk>
 +
 +      * misc.texi: Section "Saving Emacs Sessions" rewritten.
 +
 +2003-09-29  Jan Dj\e,Ad\e(Brv.  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (GTK names in Emacs): Correct typo.
 +
 +2003-09-24  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * cmdargs.texi (Font X): Mention new default font.  More
 +      fully describe long font names, wildcard patterns and the
 +      problems involved.  (Result of discussion on emacs-devel.)
 +
 +2003-09-22  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * emacs.texi (Acknowledgements): Correct typo.
 +
 +2003-09-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * dired.texi (Misc Dired Commands): New node.
 +      (Dired Navigation): Add dired-goto-file.
 +
 +      * files.texi (File Aliases, Misc File Ops): Add @cindex entries.
 +
 +      * emacs.texi (Acknowledgements): New node, split from Distribution.
 +
 +      * cmdargs.texi (Action Arguments): -f reads interactive args.
 +
 +2003-09-08  Lute Kamstra  <lute@gnu.org>
 +
 +      * screen.texi (Mode Line): Say that POS comes before LINE.
 +      Mention `size-indication-mode'.
 +      * display.texi (Optional Mode Line): Document
 +      `size-indication-mode'.
 +      * basic.texi (Position Info): Mention `size-indication-mode'.
 +
 +2003-09-07  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * xresources.texi (Resources): Refer to `editres' man page.
 +      (Lucid Resources): Update defaults.  Expand description of
 +      `shadowThickness'.
 +
 +2003-09-04  Miles Bader  <miles@gnu.org>
 +
 +      * Makefile.in (top_srcdir): New variable.
 +      ($(top_srcdir)/info): New rule.
 +      (info): Depend on it.
 +
 +2003-09-03  Peter Runestig  <peter@runestig.com>
 +
 +      * makefile.w32-in: New file.
 +
 +2003-08-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * misc.texi (Saving Emacs Sessions): Correct previous change.
 +
 +2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * emacs.texi (Top): Update menu to reflect new Keyboard Macros chapter.
 +      (Intro): Include kmacro.texi after fixit.texi instead of after
 +      custom.texi.  (As suggested by Kim Storm.)
 +
 +2003-08-18  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * fixit.texi (Fixit): Update `Next' pointer.
 +      * files.texi (Files): Update `Previous' pointer.
 +      * kmacro.texi (Keyboard Macros): Remove redundant node and section.
 +      * emacs.texi (Intro): Include kmacro.texi after custom.texi.
 +      (Suggested by Kim Storm.)
 +      * Makefile (EMACSSOURCES): Add kmacro.texi.  (Suggested by Kim Storm.)
 +
 +2003-08-18  Kim F. Storm  <storm@cua.dk>
 +
 +      * kmacro.texi: New file describing enhanced keyboard macro
 +      functionality.  Replaces old description in custom.texi.
 +
 +      * custom.texi (Customization): Add xref to Keyboard Macros chapter.
 +      (Keyboard Macros): Move to new kmacro.texi file.
 +
 +      * emacs.texi (Keyboard Macros): Reference new keyboard macro topics.
 +
 +2003-08-17  Edward M. Reingold  <reingold@emr.cs.iit.edu>
 +
 +      * calendar.texi (Specified Dates): Add `calendar-goto-day-of-year'.
 +
 +2003-08-17  Alex Schroeder  <alex@gnu.org>
 +
 +      * misc.texi (Saving Emacs Sessions): Manual M-x desktop-save not
 +      required.
 +
 +2003-08-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Lisp Indent): Don't describe
 +      lisp-indent-function property here.  Use xref to Lisp Manual.
 +
 +2003-08-03  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi (Date Formats): Document changed behaviour of
 +      abbreviations.
 +
 +2003-07-24  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * buffers.texi (List Buffers): Fix previous change.
 +
 +2003-07-13  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * buffers.texi (List Buffers): Adjust to new format of *Buffer
 +      List*.
 +
 +2003-07-07  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * display.texi (Font Lock): Fix typo.
 +
 +2003-07-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Font Lock): Add xref for format info on
 +      font-lock-remove-keywords.
 +
 +      * building.texi (Compilation): Document what happens with asynch
 +      children of compiler process.
 +
 +      * help.texi (Library Keywords): Use @multitable.
 +
 +2003-06-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * programs.texi (Expressions): Delete C-M-DEL.
 +
 +      * misc.texi (Shell Options): Clarify comint-scroll-show-maximum-output.
 +      comint-move-point-for-output renamed from
 +      comint-scroll-to-bottom-on-output.
 +
 +      * custom.texi (Init Rebinding): Replace previous change with xref.
 +      (Non-ASCII Rebinding): Explain that issue more briefly here.
 +
 +2003-05-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * indent.texi (Indentation): Condense, simplify, clarify prev change.
 +
 +2003-05-28  Nick Roberts  <nick@nick.uklinux.net>
 +
 +      * building.texi (GDB Graphical Interface): New node.
 +      (Rewritten somewhat by RMS.)
 +
 +2003-05-28  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
 +
 +      * custom.texi (Init Rebinding): Xref Non-ASCII Rebinding, for
 +      non-English letters.  Explain how to set coding systems correctly
 +      and how to include the right coding cookie in the file.
 +
 +2003-05-22  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
 +
 +      * indent.texi (Indentation): Explain the concepts.
 +      (Just Spaces): Explain why preventing tabs for indentation might
 +      be useful.
 +
 +2003-04-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * search.texi (Regexps): Ref to Lisp manual for more regexp features.
 +
 +2003-02-22  Alex Schroeder  <alex@emacswiki.org>
 +
 +      * cmdargs.texi (General Variables): Document SMTPSERVER.
 +
 +      * sending.texi: Remove SMTP node.
 +      (Mail Sending): Describe `send-mail-function'.  Link to SMTP
 +      library.
 +
 +2003-02-22  Alex Schroeder  <alex@emacswiki.org>
 +
 +      * sending.texi (Sending via SMTP): Explain MTA/MUA.
 +
 +2003-02-22  Simon Josefsson  <jas@extundo.com>
 +
 +      * sending.texi (Mail Methods): Add node about SMTP.
 +
 +2003-02-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar.
 +
 +2003-02-01  Kevin Ryde  <user42@zip.com.au>
 +
 +      * glossary.texi (Glossary): Correction to cl cross reference.
 +
 +2003-01-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * killing.texi (Rectangles): Document C-x c r.
 +
 +2003-01-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xresources.texi (GTK resources): New node.
 +      (GTK widget names): New node.
 +      (GTK names in Emacs): New node.
 +      (GTK styles): New node.
 +
 +2003-01-09  Francesco Potort\e,Al\e(B  <pot@gnu.org>
 +
 +      * maintaining.texi (Create Tags Table): Add reference to the new
 +      `etags --help --lang=LANG' option.
 +
 +2002-10-02  Karl Berry  <karl@gnu.org>
 +
 +      * emacs.texi: Per rms, update all manuals to use @copying instead of
 +      @ifinfo. Also use @ifnottex instead of @ifinfo around the top node,
 +      where needed for the sake of the HTML output.
 +
 +2001-12-20  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * Makefile.in (EMACSSOURCES): Update the list of Emacs manual
 +      source files.
 +
 +2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * Makefile.in (emacsman): New target.
 +
 +2001-10-20  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * (Version 21.1 released.)
 +
 +2001-10-05  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Branch for 21.1.
 +
 +2001-03-05  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Makefile.in (mostlyclean, maintainer-clean): Delete more files.
 +
 +2000-05-31  Stefan Monnier  <monnier@cs.yale.edu>
 +
 +      * .cvsignore (*.tmp): New entry.  Seems to be used for @macro.
 +
 +1999-07-12  Richard Stallman  <rms@gnu.org>
 +
 +      * Version 20.4 released.
 +
 +1998-12-04  Markus Rost  <rost@delysid.gnu.org>
 +
 +      * Makefile.in (INFO_TARGETS): Delete customize.info.
 +      (DVI_TARGETS): Delete customize.dvi.
 +      (../info/customize, customize.dvi): Targets deleted.
 +
 +1998-08-19  Richard Stallman  <rms@psilocin.ai.mit.edu>
 +
 +      * Version 20.3 released.
 +
 +1998-05-06  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile.in (EMACSSOURCES): Add mule.texi.
 +      Add msdog.texi, ack.texi.  Remove gnu1.texi.
 +
 +1998-04-06  Andreas Schwab  <schwab@gnu.org>
 +
 +      * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi.  Use
 +      it in dvi targets.
 +
 +1997-09-23  Paul Eggert  <eggert@twinsun.com>
 +
 +      * Makefile.in: Merge changes mistakenly made to `Makefile'.
 +      (INFO_TARGETS): Change ../info/custom to ../info/customize.
 +      (../info/customize): Rename from ../info/custom.
 +
 +1997-09-19  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Version 20.2 released.
 +
 +1997-09-15  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Version 20.1 released.
 +
 +1997-08-24  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Makefile (../info/customize, customize.dvi): New targets.
 +      (INFO_TARGETS): Add ../info/customize.
 +      (DVI_TARGETS): Add customize.dvi.
 +
 +1996-08-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Version 19.33 released.
 +
 +1996-07-31  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Version 19.32 released.
 +
 +1996-06-20  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Makefile.in (All info targets): cd $(srcdir) to do the work.
 +
 +1996-06-19  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 +
 +      * Makefile.in (All info targets): Specify $(srcdir) in input files.
 +      Specify -I option.
 +      (All dvi targets): Set the TEXINPUTS variable.
 +
 +1996-05-25  Karl Heuer  <kwzh@gnu.ai.mit.edu>
 +
 +      * Version 19.31 released.
 +
 +1995-11-24  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 +
 +      * Version 19.30 released.
 +
 +1995-02-07  Richard Stallman  <rms@pogo.gnu.ai.mit.edu>
 +
 +      * Makefile.in (maintainer-clean): Rename from realclean.
 +
 +1994-11-23  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 +
 +      * Makefile.in: New file.
 +      * Makefile: File deleted.
 +
 +1994-11-19  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 +
 +      * Makefile (TEXINDEX_OBJS): Variable deleted.
 +      (texindex, texindex.o, getopt.o): Rules deleted.
 +      All deps on texindex deleted.
 +      (distclean): Don't delete texindex.
 +      (mostlyclean): Don't delete *.o.
 +      * texindex.c, getopt.c: Files deleted.
 +
 +1994-09-07  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 +
 +      * Version 19.26 released.
 +
 +1994-07-02  Richard Stallman  (rms@gnu.ai.mit.edu)
 +
 +      * Makefile (EMACSSOURCES): Exclude undo.texi.
 +
 +1994-05-30  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.25 released.
 +
 +1994-05-23  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.24 released.
 +
 +1994-05-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.23 released.
 +
 +1994-04-17  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile: Delete spurious tab.
 +
 +1994-02-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (.SUFFIXES): New rule.
 +
 +1993-12-04  Richard Stallman  (rms@srarc2)
 +
 +      * getopt.c: New file.
 +      * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src.
 +      (getopt.o): New rule.
 +      (dvi): Don't depend on texindex.
 +      (emacs.dvi): Depend on texindex.
 +
 +1993-12-03  Richard Stallman  (rms@srarc2)
 +
 +      * Makefile (TEXI2DVI): New variable.
 +      (emacs.dvi): Add explicit command.
 +      (TEXINDEX_OBJS): Delete duplicate getopt.o.
 +
 +1993-11-27  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.22 released.
 +
 +1993-11-18  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (TEXINDEX_OBJS): Delete spurious period.
 +
 +1993-11-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.21 released.
 +
 +1993-11-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (realclean): Don't delete the Info files.
 +
 +1993-10-25  Brian Fox  (bfox@albert.gnu.ai.mit.edu)
 +
 +      * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x
 +      4' where appropriate.
 +
 +1993-10-20  Brian Fox  (bfox@ai.mit.edu)
 +
 +      * Makefile: Fix targets for texindex.
 +
 +      * texindex.c: Include "../src/config.h" if building in emacs.
 +
 +      * Makefile: Change all files to FILENAME.texi, force all targets
 +      to be FILENAME, not FILENAME.info.
 +      Add target to build texindex.c, defining `emacs'.
 +
 +1993-08-14  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.19 released.
 +
 +1993-08-08  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.18 released.
 +
 +1993-07-20  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile: Fix source file names of the separate manuals.
 +
 +1993-07-18  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Version 19.17 released.
 +
 +1993-07-10  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * split-man: Fix typos in last change.
 +
 +1993-07-06  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 +
 +      * Version 19.16 released.
 +
 +1993-06-19  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * version 19.15 released.
 +
 +1993-06-18  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 +
 +      * Makefile (distclean): It's rm, not rf.
 +
 +1993-06-17  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Version 19.14 released.
 +
 +1993-06-16  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Makefile: New file.
 +
 +1993-06-08  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Version 19.13 released.
 +
 +1993-05-27  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 +
 +      * Version 19.9 released.
 +
 +1993-05-25  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Version 19.8 released.
 +
 +1993-05-25  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * cmdargs.texi: Document the -i, -itype, and -iconic options.
 +
 +      * trouble.texi: It's `enable-flow-control-on', not
 +      `evade-flow-control-on'.
 +
 +1993-05-24  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * display.texi: Document standard-display-european.
 +
 +1993-05-22  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 +
 +      * Version 19.7 released.
 +
 +      * emacs.texi: Add a sentence to the top menu mentioning the
 +      specific version of Emacs this manual applies to.
 +
 +1993-04-25  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
 +
 +      * basic.texi: Document next-line-add-lines variable used to
 +      implement down-arrow.
 +
 +      * killing.texi: Document kill-whole-line.
 +
 +1993-04-18  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)
 +
 +      * text.texi: Update unix TeX ordering information.
 +
 +1993-03-26  Eric S. Raymond  (eric@geech.gnu.ai.mit.edu)
 +
 +      * news.texi: Mention fill-rectangle in keybinding list.
 +
 +      * killing.texi: Document fill-rectangle.
 +
 +1993-03-17  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
 +
 +      * vc.texi: Bring the docs up to date with VC 5.2.
 +
 +1992-01-10  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
 +
 +      * emacs.tex: Mention blackbox and gomoku under Amusements.
 +      Assembler mode is now mentioned and appropriately indexed
 +      under Programming Modes.
 +
 +1991-02-15  Robert J. Chassell  (bob@wookumz.ai.mit.edu)
 +
 +      * emacs.tex: Update TeX ordering information.
 +
 +1990-06-26  David Lawrence  (tale@geech)
 +
 +      * emacs.tex: Note that completion-ignored-extensions is not used
 +      to filter out names when all completions are displayed in
 +      *Completions*.
 +
 +1990-05-25  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 +
 +      * texindex.tex: If USG, include sys/types.h and sys/fcntl.h.
 +
 +1990-03-21  Jim Kingdon  (kingdon@pogo.ai.mit.edu)
 +
 +      * emacs.tex: Add @findex grep.
 +
 +1988-08-16  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
 +
 +      * emacs.tex: Correct two typos.  No other changes before
 +      Version 19 will be made.
 +
 +1988-05-23  Robert J. Chassell  (bob@frosted-flakes.ai.mit.edu)
 +
 +      * emacs.tex: Update information for obtaining TeX distribution from the
 +      University of Washington.
 +
 +;; Local Variables:
 +;; coding: iso-2022-7bit
 +;; fill-column: 79
 +;; add-log-time-zone-rule: t
 +;; End:
 +
 +    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
 +      2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 +
 +  This file is part of GNU Emacs.
 +
 +  GNU Emacs is free software; you can redistribute it and/or modify
 +  it under the terms of the GNU General Public License as published by
 +  the Free Software Foundation; either version 3, or (at your option)
 +  any later version.
 +
 +  GNU Emacs is distributed in the hope that it will be useful,
 +  but WITHOUT ANY WARRANTY; without even the implied warranty of
 +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +  GNU General Public License for more details.
 +
 +  You should have received a copy of the GNU General Public License
 +  along with GNU Emacs; see the file COPYING.  If not, write to the
 +  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 +  Boston, MA 02110-1301, USA.
 +
 +;;; arch-tag: f1d62776-3ed5-4811-9d96-267252577dbd
index d4d2945d5842e373e3fac0ca3363309d10cb4ed0,0000000000000000000000000000000000000000..5e1e0056592338c5b68b2153d2e5e6c205122814
mode 100644,000000..100644
--- /dev/null
@@@ -1,1259 -1,0 +1,1259 @@@
-   Normally, the cursor appears in non-selected windows in the ``off''
- state, with the same appearance as when the blinking cursor blinks
 +@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 Free Software Foundation, Inc.
 +@c See file emacs.texi for copying conditions.
 +@node Display, Search, Registers, Top
 +@chapter Controlling the Display
 +
 +  Since only part of a large buffer fits in the window, Emacs tries to
 +show a part that is likely to be interesting.  Display-control
 +commands allow you to specify which part of the text you want to see,
 +and how to display it.  Many variables also affect the details of
 +redisplay.  Unless otherwise stated, the variables described in this
 +chapter have their effect by customizing redisplay itself; therefore,
 +their values only make a difference at the time of redisplay.
 +
 +@menu
 +* Scrolling::            Commands to move text up and down in a window.
 +* Auto Scrolling::         Redisplay scrolls text automatically when needed.
 +* Horizontal Scrolling::   Moving text left and right in a window.
 +* Follow Mode::            Follow mode lets two windows scroll as one.
 +* Faces::                How to change the display style using faces.
 +* Standard Faces::         Emacs' predefined faces.
 +* Font Lock::              Minor mode for syntactic highlighting using faces.
 +* Highlight Interactively:: Tell Emacs what text to highlight.
 +* Fringes::                Enabling or disabling window fringes.
 +* Displaying Boundaries::  Displaying top and bottom of the buffer.
 +* Useless Whitespace::     Showing possibly-spurious trailing whitespace.
 +* Selective Display::      Hiding lines with lots of indentation.
 +* Optional Mode Line::     Optional mode line display features.
 +* Text Display::           How text characters are normally displayed.
 +* Cursor Display::         Features for displaying the cursor.
 +* Line Truncation::        Truncating lines to fit the screen width instead
 +                             of continuing them to multiple screen lines.
 +* Display Custom::         Information on variables for customizing display.
 +@end menu
 +
 +@node Scrolling
 +@section Scrolling
 +
 +  If a buffer contains text that is too large to fit entirely within a
 +window that is displaying the buffer, Emacs shows a contiguous portion of
 +the text.  The portion shown always contains point.
 +
 +@cindex scrolling
 +  @dfn{Scrolling} means moving text up or down in the window so that
 +different parts of the text are visible.  Scrolling ``forward'' or
 +``up'' means that text moves up, and new text appears at the bottom.
 +Scrolling ``backward'' or ``down'' moves text down, and new text
 +appears at the top.
 +
 +  Scrolling happens automatically if you move point past the bottom or
 +top of the window.  You can also scroll explicitly with the commands
 +in this section.
 +
 +@table @kbd
 +@item C-l
 +Clear screen and redisplay, scrolling the selected window to center
 +point vertically within it (@code{recenter}).
 +@item C-v
 +Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
 +@item @key{NEXT}
 +@itemx @key{PAGEDOWN}
 +Likewise, scroll forward.
 +@item M-v
 +Scroll backward (@code{scroll-down}).
 +@item @key{PRIOR}
 +@itemx @key{PAGEUP}
 +Likewise, scroll backward.
 +@item @var{arg} C-l
 +Scroll so point is on line @var{arg} (@code{recenter}).
 +@item C-M-l
 +Scroll heuristically to bring useful information onto the screen
 +(@code{reposition-window}).
 +@end table
 +
 +@kindex C-l
 +@findex recenter
 +  The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
 +no argument.  It scrolls the selected window so that point is halfway
 +down from the top of the window.  On a text terminal, it also clears
 +the screen and redisplays all windows.  That is useful in case the
 +screen is garbled (@pxref{Screen Garbled}).
 +
 +@kindex C-v
 +@kindex M-v
 +@kindex NEXT
 +@kindex PRIOR
 +@kindex PAGEDOWN
 +@kindex PAGEUP
 +@findex scroll-up
 +@findex scroll-down
 +  To read the buffer a windowful at a time, use @kbd{C-v}
 +(@code{scroll-up}) with no argument.  This scrolls forward by nearly
 +the whole window height.  The effect is to take the two lines at the
 +bottom of the window and put them at the top, followed by nearly a
 +whole windowful of lines that were not previously visible.  If point
 +was in the text that scrolled off the top, it ends up at the new top
 +of the window.
 +
 +@vindex next-screen-context-lines
 +  @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in
 +a similar way, also with overlap.  The number of lines of overlap that
 +the @kbd{C-v} or @kbd{M-v} commands leave is controlled by the
 +variable @code{next-screen-context-lines}; by default, it is 2.  The
 +function keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and
 +@key{PAGEUP}, are equivalent to @kbd{C-v} and @kbd{M-v}.
 +
 +  The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll
 +the text in the selected window up or down a few lines.  @kbd{C-v}
 +with an argument moves the text and point up, together, that many
 +lines; it brings the same number of new lines into view at the bottom
 +of the window.  @kbd{M-v} with numeric argument scrolls the text
 +downward, bringing that many new lines into view at the top of the
 +window.  @kbd{C-v} with a negative argument is like @kbd{M-v} and vice
 +versa.
 +
 +  The names of scroll commands are based on the direction that the
 +text moves in the window.  Thus, the command to scroll forward is
 +called @code{scroll-up} because it moves the text upward on the
 +screen.  The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names
 +and customary meanings from a different convention that developed
 +elsewhere; hence the strange result that @key{PAGEDOWN} runs
 +@code{scroll-up}.
 +
 +@vindex scroll-preserve-screen-position
 +  Some users like the full-screen scroll commands to keep point at the
 +same screen line.  To enable this behavior, set the variable
 +@code{scroll-preserve-screen-position} to a non-@code{nil} value.  In
 +this mode, when these commands would scroll the text around point off
 +the screen, or within @code{scroll-margin} lines of the edge, they
 +move point to keep the same vertical position within the window.
 +This mode is convenient for browsing through a file by scrolling by
 +screenfuls; if you come back to the screen where you started, point
 +goes back to the line where it started.  However, this mode is
 +inconvenient when you move to the next screen in order to move point
 +to the text there.
 +
 +  Another way to do scrolling is with @kbd{C-l} with a numeric argument.
 +@kbd{C-l} does not clear the screen when given an argument; it only scrolls
 +the selected window.  With a positive argument @var{n}, it repositions text
 +to put point @var{n} lines down from the top.  An argument of zero puts
 +point on the very top line.  Point does not move with respect to the text;
 +rather, the text and point move rigidly on the screen.  @kbd{C-l} with a
 +negative argument puts point that many lines from the bottom of the window.
 +For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
 +- 5 C-l} puts it five lines from the bottom.  @kbd{C-u C-l} scrolls to put
 +point at the center (vertically) of the selected window.
 +
 +@kindex C-M-l
 +@findex reposition-window
 +  The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
 +window heuristically in a way designed to get useful information onto
 +the screen.  For example, in a Lisp file, this command tries to get the
 +entire current defun onto the screen if possible.
 +
 +@node Auto Scrolling
 +@section Automatic Scrolling
 +
 +@vindex scroll-conservatively
 +  Redisplay scrolls the buffer automatically when point moves out of
 +the visible portion of the text.  The purpose of automatic scrolling
 +is to make point visible, but you can customize many aspects of how
 +this is done.
 +
 +  Normally, automatic scrolling centers point vertically within the
 +window.  However, if you set @code{scroll-conservatively} to a small
 +number @var{n}, then if you move point just a little off the
 +screen---less than @var{n} lines---then Emacs scrolls the text just
 +far enough to bring point back on screen.  By default,
 +@code{scroll-conservatively} is@tie{}0.
 +
 +@cindex aggressive scrolling
 +@vindex scroll-up-aggressively
 +@vindex scroll-down-aggressively
 +  When the window does scroll by a longer distance, you can control
 +how aggressively it scrolls, by setting the variables
 +@code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
 +The value of @code{scroll-up-aggressively} should be either
 +@code{nil}, or a fraction @var{f} between 0 and 1.  A fraction
 +specifies where on the screen to put point when scrolling upward.
 +More precisely, when a window scrolls up because point is above the
 +window start, the new start position is chosen to put point @var{f}
 +part of the window height from the top.  The larger @var{f}, the more
 +aggressive the scrolling.
 +
 +  @code{nil}, which is the default, scrolls to put point at the center.
 +So it is equivalent to .5.
 +
 +  Likewise, @code{scroll-down-aggressively} is used for scrolling
 +down.  The value, @var{f}, specifies how far point should be placed
 +from the bottom of the window; thus, as with
 +@code{scroll-up-aggressively}, a larger value is more aggressive.
 +
 +@vindex scroll-margin
 +  The variable @code{scroll-margin} restricts how close point can come
 +to the top or bottom of a window.  Its value is a number of screen
 +lines; if point comes within that many lines of the top or bottom of the
 +window, Emacs recenters the window.  By default, @code{scroll-margin} is
 +0.
 +
 +@node Horizontal Scrolling
 +@section Horizontal Scrolling
 +@cindex horizontal scrolling
 +
 +  @dfn{Horizontal scrolling} means shifting all the lines sideways
 +within a window---so that some of the text near the left margin is not
 +displayed at all.  When the text in a window is scrolled horizontally,
 +text lines are truncated rather than continued (@pxref{Line
 +Truncation}).  Whenever a window shows truncated lines, Emacs
 +automatically updates its horizontal scrolling whenever point moves
 +off the left or right edge of the screen.  You can also use these
 +commands to do explicit horizontal scrolling.
 +
 +@table @kbd
 +@item C-x <
 +Scroll text in current window to the left (@code{scroll-left}).
 +@item C-x >
 +Scroll to the right (@code{scroll-right}).
 +@end table
 +
 +@kindex C-x <
 +@kindex C-x >
 +@findex scroll-left
 +@findex scroll-right
 +  The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
 +window to the left by @var{n} columns with argument @var{n}.  This moves
 +part of the beginning of each line off the left edge of the window.
 +With no argument, it scrolls by almost the full width of the window (two
 +columns less, to be precise).
 +
 +  @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right.  The
 +window cannot be scrolled any farther to the right once it is displayed
 +normally (with each line starting at the window's left margin);
 +attempting to do so has no effect.  This means that you don't have to
 +calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
 +argument will restore the normal display.
 +
 +  If you use those commands to scroll a window horizontally, that sets
 +a lower bound for automatic horizontal scrolling.  Automatic scrolling
 +will continue to scroll the window, but never farther to the right
 +than the amount you previously set by @code{scroll-left}.
 +
 +@vindex hscroll-margin
 +  The value of the variable @code{hscroll-margin} controls how close
 +to the window's edges point is allowed to get before the window will
 +be automatically scrolled.  It is measured in columns.  If the value
 +is 5, then moving point within 5 columns of the edge causes horizontal
 +scrolling away from that edge.
 +
 +@vindex hscroll-step
 +  The variable @code{hscroll-step} determines how many columns to
 +scroll the window when point gets too close to the edge.  If it's
 +zero, horizontal scrolling centers point horizontally within the
 +window.  If it's a positive integer, it specifies the number of
 +columns to scroll by.  If it's a floating-point number, it specifies
 +the fraction of the window's width to scroll by.  The default is zero.
 +
 +@vindex auto-hscroll-mode
 +  To disable automatic horizontal scrolling, set the variable
 +@code{auto-hscroll-mode} to @code{nil}.
 +
 +@node Follow Mode
 +@section Follow Mode
 +@cindex Follow mode
 +@cindex mode, Follow
 +@findex follow-mode
 +@cindex windows, synchronizing
 +@cindex synchronizing windows
 +
 +  @dfn{Follow mode} is a minor mode that makes two windows, both
 +showing the same buffer, scroll as a single tall ``virtual window.''
 +To use Follow mode, go to a frame with just one window, split it into
 +two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
 +follow-mode}.  From then on, you can edit the buffer in either of the
 +two windows, or scroll either one; the other window follows it.
 +
 +  In Follow mode, if you move point outside the portion visible in one
 +window and into the portion visible in the other window, that selects
 +the other window---again, treating the two as if they were parts of
 +one large window.
 +
 +  To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
 +
 +@node Faces
 +@section Faces: Controlling Text Display Style
 +@cindex faces
 +
 +  You can specify various styles for displaying text using
 +@dfn{faces}.  Each face can specify various @dfn{face attributes},
 +such as the font family, the height, weight and slant of the
 +characters, the foreground and background color, and underlining or
 +overlining.  A face does not have to specify all of these attributes;
 +often it inherits most of them from another face.
 +
 +  On graphical display, all the Emacs face attributes are meaningful.
 +On a text-only terminal, only some of them work.  Some text-only
 +terminals support inverse video, bold, and underline attributes; some
 +support colors.  Text-only terminals generally do not support changing
 +the height and width or the font family.
 +
 +  Most major modes assign faces to the text automatically through the
 +work of Font Lock mode.  @xref{Font Lock}, for more information about
 +Font Lock mode and syntactic highlighting.  You can print the current
 +buffer with the highlighting that appears on your screen using the
 +command @code{ps-print-buffer-with-faces}.  @xref{PostScript}.
 +
 +  You control the appearance of a part of the text in the buffer by
 +specifying the face or faces to use for it.  The style of display used
 +for any given character is determined by combining the attributes of
 +all the applicable faces specified for that character.  Any attribute
 +that isn't specified by these faces is taken from the @code{default} face,
 +whose attributes reflect the default settings of the frame itself.
 +
 +  Enriched mode, the mode for editing formatted text, includes several
 +commands and menus for specifying faces for text in the buffer.
 +@xref{Format Faces}, for how to specify the font for text in the
 +buffer.  @xref{Format Colors}, for how to specify the foreground and
 +background color.
 +
 +@cindex face colors, setting
 +@findex set-face-foreground
 +@findex set-face-background
 +  To alter the appearance of a face, use the customization buffer.
 +@xref{Face Customization}.  You can also use X resources to specify
 +attributes of particular faces (@pxref{Resources}).  Alternatively,
 +you can change the foreground and background colors of a specific face
 +with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
 +These commands prompt in the minibuffer for a face name and a color
 +name, with completion, and then set that face to use the specified
 +color.  Changing the colors of the @code{default} face also changes
 +the foreground and background colors on all frames, both existing and
 +those to be created in the future.  (You can also set foreground and
 +background colors for the current frame only; see @ref{Frame
 +Parameters}.)
 +
 +  If you want to alter the appearance of all Emacs frames, you need to
 +customize the frame parameters in the variable
 +@code{default-frame-alist}; see @ref{Creating Frames,
 +default-frame-alist}.
 +
 +  Emacs can correctly display variable-width fonts, but Emacs commands
 +that calculate width and indentation do not know how to calculate
 +variable widths.  This can sometimes lead to incorrect results when
 +you use variable-width fonts.  In particular, indentation commands can
 +give inconsistent results, so we recommend you avoid variable-width
 +fonts for editing program source code.  Filling will sometimes make
 +lines too long or too short.  We plan to address these issues in
 +future Emacs versions.
 +
 +@node Standard Faces
 +@section Standard Faces
 +
 +@findex list-faces-display
 +  To see what faces are currently defined, and what they look like,
 +type @kbd{M-x list-faces-display}.  It's possible for a given face to
 +look different in different frames; this command shows the appearance
 +in the frame in which you type it.  With a prefix argument, this
 +prompts for a regular expression, and displays only faces with names
 +matching that regular expression.
 +
 +  Here are the standard faces for specifying text appearance.  You can
 +apply them to specific text when you want the effects they produce.
 +
 +@table @code
 +@item default
 +This face is used for ordinary text that doesn't specify any face.
 +@item bold
 +This face uses a bold variant of the default font, if it has one.
 +It's up to you to choose a default font that has a bold variant,
 +if you want to use one.
 +@item italic
 +This face uses an italic variant of the default font, if it has one.
 +@item bold-italic
 +This face uses a bold italic variant of the default font, if it has one.
 +@item underline
 +This face underlines text.
 +@item fixed-pitch
 +This face forces use of a particular fixed-width font.
 +@item variable-pitch
 +This face forces use of a particular variable-width font.  It's
 +reasonable to customize this face to use a different variable-width font,
 +if you like, but you should not make it a fixed-width font.
 +@item shadow
 +This face is used for making the text less noticeable than the surrounding
 +ordinary text.  Usually this can be achieved by using shades of gray in
 +contrast with either black or white default foreground color.
 +@end table
 +
 +  Here's an incomplete list of faces used to highlight parts of the
 +text temporarily for specific purposes.  (Many other modes define
 +their own faces for this purpose.)
 +
 +@table @code
 +@item highlight
 +This face is used for highlighting portions of text, in various modes.
 +For example, mouse-sensitive text is highlighted using this face.
 +@item isearch
 +This face is used for highlighting the current Isearch match.
 +@item query-replace
 +This face is used for highlighting the current Query Replace match.
 +@item lazy-highlight
 +This face is used for lazy highlighting of Isearch and Query Replace
 +matches other than the current one.
 +@item region
 +This face is used for displaying a selected region (when Transient Mark
 +mode is enabled---see below).
 +@item secondary-selection
 +This face is used for displaying a secondary X selection (@pxref{Secondary
 +Selection}).
 +@item trailing-whitespace
 +The face for highlighting excess spaces and tabs at the end of a line
 +when @code{show-trailing-whitespace} is non-@code{nil}; see
 +@ref{Useless Whitespace}.
 +@item nobreak-space
 +The face for displaying the character ``nobreak space.''
 +@item escape-glyph
 +The face for highlighting the @samp{\} or @samp{^} that indicates
 +a control character.  It's also used when @samp{\} indicates a
 +nobreak space or nobreak (soft) hyphen.
 +@end table
 +
 +@cindex @code{region} face
 +  When Transient Mark mode is enabled, the text of the region is
 +highlighted when the mark is active.  This uses the face named
 +@code{region}; you can control the style of highlighting by changing the
 +style of this face (@pxref{Face Customization}).  @xref{Transient Mark},
 +for more information about Transient Mark mode and activation and
 +deactivation of the mark.
 +
 +  These faces control the appearance of parts of the Emacs frame.
 +They exist as faces to provide a consistent way to customize the
 +appearance of these parts of the frame.
 +
 +@table @code
 +@item mode-line
 +@itemx modeline
 +This face is used for the mode line of the currently selected window,
 +and for menu bars when toolkit menus are not used.  By default, it's
 +drawn with shadows for a ``raised'' effect on graphical displays, and
 +drawn as the inverse of the default face on non-windowed terminals.
 +@code{modeline} is an alias for the @code{mode-line} face, for
 +compatibility with old Emacs versions.
 +@item mode-line-inactive
 +Like @code{mode-line}, but used for mode lines of the windows other
 +than the selected one (if @code{mode-line-in-non-selected-windows} is
 +non-@code{nil}).  This face inherits from @code{mode-line}, so changes
 +in that face affect mode lines in all windows.
 +@item mode-line-highlight
 +Like @code{highlight}, but used for portions of text on mode lines.
 +@item mode-line-buffer-id
 +This face is used for buffer identification parts in the mode line.
 +@item header-line
 +Similar to @code{mode-line} for a window's header line, which appears
 +at the top of a window just as the mode line appears at the bottom.
 +Most windows do not have a header line---only some special modes, such
 +Info mode, create one.
 +@item vertical-border
 +This face is used for the vertical divider between windows.
 +By default this face inherits from the @code{mode-line-inactive} face
 +on character terminals.  On graphical displays the foreground color of
 +this face is used for the vertical line between windows without
 +scrollbars.
 +@item minibuffer-prompt
 +@cindex @code{minibuffer-prompt} face
 +@vindex minibuffer-prompt-properties
 +This face is used for the prompt strings displayed in the minibuffer.
 +By default, Emacs automatically adds this face to the value of
 +@code{minibuffer-prompt-properties}, which is a list of text
 +properties used to display the prompt text.  (This variable takes
 +effect when you enter the minibuffer.)
 +@item fringe
 +@cindex @code{fringe} face
 +The face for the fringes to the left and right of windows on graphic
 +displays.  (The fringes are the narrow portions of the Emacs frame
 +between the text area and the window's right and left borders.)
 +@xref{Fringes}.
 +@item scroll-bar
 +This face determines the visual appearance of the scroll bar.
 +@xref{Scroll Bars}.
 +@item border
 +This face determines the color of the frame border.
 +@item cursor
 +This face determines the color of the cursor.
 +@item mouse
 +This face determines the color of the mouse pointer.
 +@item tool-bar
 +This face determines the color of tool bar icons.  @xref{Tool Bars}.
 +@item tooltip
 +This face is used for tooltips.  @xref{Tooltips}.
 +@item menu
 +@cindex menu bar appearance
 +@cindex @code{menu} face, no effect if customized
 +@cindex customization of @code{menu} face
 +This face determines the colors and font of Emacs's menus.  @xref{Menu
 +Bars}.  Setting the font of LessTif/Motif menus is currently not
 +supported; attempts to set the font are ignored in this case.
 +Likewise, attempts to customize this face in Emacs built with GTK and
 +in the MS-Windows/Mac ports are ignored by the respective GUI toolkits;
 +you need to use system-wide styles and options to change the
 +appearance of the menus.
 +@end table
 +
 +@node Font Lock
 +@section Font Lock mode
 +@cindex Font Lock mode
 +@cindex mode, Font Lock
 +@cindex syntax highlighting and coloring
 +
 +  Font Lock mode is a minor mode, always local to a particular buffer,
 +which highlights (or ``fontifies'') the buffer contents according to
 +the syntax of the text you are editing.  It can recognize comments and
 +strings in most languages; in several languages, it can also recognize
 +and properly highlight various other important constructs---for
 +example, names of functions being defined or reserved keywords.
 +Some special modes, such as Occur mode and Info mode, have completely
 +specialized ways of assigning fonts for Font Lock mode.
 +
 +@findex font-lock-mode
 +  Font Lock mode is turned on by default in all modes which support it.
 +You can toggle font-lock for each buffer with the command @kbd{M-x
 +font-lock-mode}.  Using a positive argument unconditionally turns Font
 +Lock mode on, and a negative or zero argument turns it off.
 +
 +@findex global-font-lock-mode
 +@vindex global-font-lock-mode
 +  If you do not wish Font Lock mode to be turned on by default,
 +customize the variable @code{global-font-lock-mode} using the Customize
 +interface (@pxref{Easy Customization}), or use the function
 +@code{global-font-lock-mode} in your @file{.emacs} file, like this:
 +
 +@example
 +(global-font-lock-mode 0)
 +@end example
 +
 +@noindent
 +This variable, like all the variables that control Font Lock mode,
 +take effect whenever fontification is done; that is, potentially at
 +any time.
 +
 +@findex turn-on-font-lock
 +  If you have disabled Global Font Lock mode, you can still enable Font
 +Lock for specific major modes by adding the function
 +@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}).  For
 +example, to enable Font Lock mode for editing C files, you can do this:
 +
 +@example
 +(add-hook 'c-mode-hook 'turn-on-font-lock)
 +@end example
 +
 +  Font Lock mode uses several specifically named faces to do its job,
 +including @code{font-lock-string-face}, @code{font-lock-comment-face},
 +and others.  The easiest way to find them all is to use @kbd{M-x
 +customize-group @key{RET} font-lock-faces @key{RET}}.  You can then
 +use that customization buffer to customize the appearance of these
 +faces.  @xref{Face Customization}.
 +
 +  You can also customize these faces using @kbd{M-x
 +set-face-foreground} or @kbd{M-x set-face-background}.  @xref{Faces}.
 +
 +@vindex font-lock-maximum-decoration
 +  The variable @code{font-lock-maximum-decoration} specifies the
 +preferred level of fontification, for modes that provide multiple
 +levels.  Level 1 is the least amount of fontification; some modes
 +support levels as high as 3.  The normal default is ``as high as
 +possible.''  You can specify an integer, which applies to all modes, or
 +you can specify different numbers for particular major modes; for
 +example, to use level 1 for C/C++ modes, and the default level
 +otherwise, use this:
 +
 +@example
 +(setq font-lock-maximum-decoration
 +      '((c-mode . 1) (c++-mode . 1)))
 +@end example
 +
 +@vindex font-lock-maximum-size
 +  Fontification can be too slow for large buffers, so you can suppress
 +it for buffers above a certain size.  The variable
 +@code{font-lock-maximum-size} specifies a buffer size, beyond which
 +buffer fontification is suppressed.
 +
 +@c @w is used below to prevent a bad page-break.
 +@vindex font-lock-beginning-of-syntax-function
 +@cindex incorrect fontification
 +@cindex parenthesis in column zero and fontification
 +@cindex brace in column zero and fontification
 +  Comment and string fontification (or ``syntactic'' fontification)
 +relies on analysis of the syntactic structure of the buffer text.  For
 +the sake of speed, some modes, including Lisp mode, rely on a special
 +convention: an open-parenthesis or open-brace in the leftmost column
 +always defines the @w{beginning} of a defun, and is thus always
 +outside any string or comment.  (@xref{Left Margin Paren}.)  If you
 +don't follow this convention, Font Lock mode can misfontify the text
 +that follows an open-parenthesis or open-brace in the leftmost column
 +that is inside a string or comment.
 +
 +@cindex slow display during scrolling
 +  The variable @code{font-lock-beginning-of-syntax-function} (always
 +buffer-local) specifies how Font Lock mode can find a position
 +guaranteed to be outside any comment or string.  In modes which use the
 +leftmost column parenthesis convention, the default value of the variable
 +is @code{beginning-of-defun}---that tells Font Lock mode to use the
 +convention.  If you set this variable to @code{nil}, Font Lock no longer
 +relies on the convention.  This avoids incorrect results, but the price
 +is that, in some cases, fontification for a changed text must rescan
 +buffer text from the beginning of the buffer.  This can considerably
 +slow down redisplay while scrolling, particularly if you are close to
 +the end of a large buffer.
 +
 +@findex font-lock-add-keywords
 +  Font Lock highlighting patterns already exist for many modes, but you
 +may want to fontify additional patterns.  You can use the function
 +@code{font-lock-add-keywords}, to add your own highlighting patterns for
 +a particular mode.  For example, to highlight @samp{FIXME:} words in C
 +comments, use this:
 +
 +@example
 +(font-lock-add-keywords
 + 'c-mode
 + '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
 +@end example
 +
 +@findex font-lock-remove-keywords
 +  To remove keywords from the font-lock highlighting patterns, use the
 +function @code{font-lock-remove-keywords}.  @xref{Search-based
 +Fontification,,, elisp, The Emacs Lisp Reference Manual}, for
 +documentation of the format of this list.
 +
 +@cindex just-in-time (JIT) font-lock
 +@cindex background syntax highlighting
 +  Fontifying large buffers can take a long time.  To avoid large
 +delays when a file is visited, Emacs fontifies only the visible
 +portion of a buffer.  As you scroll through the buffer, each portion
 +that becomes visible is fontified as soon as it is displayed.  The
 +parts of the buffer that are not displayed are fontified
 +``stealthily,'' in the background, i.e.@: when Emacs is idle.  You can
 +control this background fontification, also called @dfn{Just-In-Time}
 +(or @dfn{JIT}) Lock, by customizing variables in the customization
 +group @samp{jit-lock}.  @xref{Specific Customization}.
 +
 +@node Highlight Interactively
 +@section Interactive Highlighting
 +@cindex highlighting by matching
 +@cindex interactive highlighting
 +@cindex Highlight Changes mode
 +
 +@findex highlight-changes-mode
 +  Use @kbd{M-x highlight-changes-mode} to enable (or disable)
 +Highlight Changes mode, a minor mode that uses faces (colors,
 +typically) to indicate which parts of the buffer were changed most
 +recently.
 +
 +@cindex Hi Lock mode
 +@findex hi-lock-mode
 +  Hi Lock mode highlights text that matches regular expressions you
 +specify.  For example, you might wish to see all the references to a
 +certain variable in a program source file, highlight certain parts in
 +a voluminous output of some program, or make certain names stand out
 +in an article.  Use the @kbd{M-x hi-lock-mode} command to enable (or
 +disable) Hi Lock mode.  To enable Hi Lock mode for all buffers, use
 +@kbd{M-x global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)}
 +in your @file{.emacs} file.
 +
 +  Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except
 +that you specify explicitly the regular expressions to highlight.  You
 +control them with these commands:
 +
 +@table @kbd
 +@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
 +@kindex C-x w h
 +@findex highlight-regexp
 +Highlight text that matches @var{regexp} using face @var{face}
 +(@code{highlight-regexp}).  The highlighting will remain as long as
 +the buffer is loaded.  For example, to highlight all occurrences of
 +the word ``whim'' using the default face (a yellow background)
 +@kbd{C-x w h whim @key{RET} @key{RET}}.  Any face can be used for
 +highlighting, Hi Lock provides several of its own and these are
 +pre-loaded into a history list.  While being prompted for a face use
 +@kbd{M-p} and @kbd{M-n} to cycle through them.
 +
 +You can use this command multiple times, specifying various regular
 +expressions to highlight in different ways.
 +
 +@item C-x w r @var{regexp} @key{RET}
 +@kindex C-x w r
 +@findex unhighlight-regexp
 +Unhighlight @var{regexp} (@code{unhighlight-regexp}).
 +
 +If you invoke this from the menu, you select the expression to
 +unhighlight from a list.  If you invoke this from the keyboard, you
 +use the minibuffer.  It will show the most recently added regular
 +expression; use @kbd{M-p} to show the next older expression and
 +@kbd{M-n} to select the next newer expression.  (You can also type the
 +expression by hand, with completion.)  When the expression you want to
 +unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
 +the minibuffer and unhighlight it.
 +
 +@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
 +@kindex C-x w l
 +@findex highlight-lines-matching-regexp
 +@cindex lines, highlighting
 +@cindex highlighting lines of text
 +Highlight entire lines containing a match for @var{regexp}, using face
 +@var{face} (@code{highlight-lines-matching-regexp}).
 +
 +@item C-x w b
 +@kindex C-x w b
 +@findex hi-lock-write-interactive-patterns
 +Insert all the current highlighting regexp/face pairs into the buffer
 +at point, with comment delimiters to prevent them from changing your
 +program.  (This key binding runs the
 +@code{hi-lock-write-interactive-patterns} command.)
 +
 +These patterns are extracted from the comments, if appropriate, if you
 +invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
 +Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
 +
 +@item C-x w i
 +@kindex C-x w i
 +@findex hi-lock-find-patterns
 +Extract regexp/face pairs from comments in the current buffer
 +(@code{hi-lock-find-patterns}).  Thus, you can enter patterns
 +interactively with @code{highlight-regexp}, store them into the file
 +with @code{hi-lock-write-interactive-patterns}, edit them (perhaps
 +including different faces for different parenthesized parts of the
 +match), and finally use this command (@code{hi-lock-find-patterns}) to
 +have Hi Lock highlight the edited patterns.
 +
 +@vindex hi-lock-file-patterns-policy
 +The variable @code{hi-lock-file-patterns-policy} controls whether Hi
 +Lock mode should automatically extract and highlight patterns found in
 +a file when it is visited.  Its value can be @code{nil} (never
 +highlight), @code{t} (highlight the patterns), @code{ask} (query the
 +user), or a function.  If it is a function,
 +@code{hi-lock-find-patterns} calls it with the patterns as argument;
 +if the function returns non-@code{nil}, the patterns are used.  The
 +default is @code{nil}.  Note that patterns are always highlighted if
 +you call @code{hi-lock-find-patterns} directly, regardless of the
 +value of this variable.
 +
 +@vindex hi-lock-exclude-modes
 +Also, @code{hi-lock-find-patterns} does nothing if the current major
 +mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
 +@end table
 +
 +@node Fringes
 +@section Window Fringes
 +@cindex fringes
 +
 +  On a graphical display, each Emacs window normally has narrow
 +@dfn{fringes} on the left and right edges.  The fringes display
 +indications about the text in the window.
 +
 +  The most common use of the fringes is to indicate a continuation
 +line, when one line of text is split into multiple lines on the
 +screen.  The left fringe shows a curving arrow for each screen line
 +except the first, indicating that ``this is not the real beginning.''
 +The right fringe shows a curving arrow for each screen line except the
 +last, indicating that ``this is not the real end.''
 +
 +  The fringes indicate line truncation with short horizontal arrows
 +meaning ``there's more text on this line which is scrolled
 +horizontally out of view;'' clicking the mouse on one of the arrows
 +scrolls the display horizontally in the direction of the arrow.   The
 +fringes can also indicate other things, such as empty lines, or where a
 +program you are debugging is executing (@pxref{Debuggers}).
 +
 +@findex set-fringe-style
 +@findex fringe-mode
 +  You can enable and disable the fringes for all frames using
 +@kbd{M-x fringe-mode}.  To enable and disable the fringes
 +for the selected frame, use @kbd{M-x set-fringe-style}.
 +
 +@node Displaying Boundaries
 +@section Displaying Boundaries
 +
 +@vindex indicate-buffer-boundaries
 +  On a graphical display, Emacs can indicate the buffer boundaries in
 +the fringes.  It indicates the first line and the last line with
 +angle images in the fringes.  This can be combined with up and down
 +arrow images which say whether it is possible to scroll the window up
 +and down.
 +
 +  The buffer-local variable @code{indicate-buffer-boundaries} controls
 +how the buffer boundaries and window scrolling is indicated in the
 +fringes.  If the value is @code{left} or @code{right}, both angle and
 +arrow bitmaps are displayed in the left or right fringe, respectively.
 +
 +  If value is an alist, each element @code{(@var{indicator} .
 +@var{position})} specifies the position of one of the indicators.
 +The @var{indicator} must be one of @code{top}, @code{bottom},
 +@code{up}, @code{down}, or @code{t} which specifies the default
 +position for the indicators not present in the alist.
 +The @var{position} is one of @code{left}, @code{right}, or @code{nil}
 +which specifies not to show this indicator.
 +
 +  For example, @code{((top . left) (t . right))} places the top angle
 +bitmap in left fringe, the bottom angle bitmap in right fringe, and
 +both arrow bitmaps in right fringe.  To show just the angle bitmaps in
 +the left fringe, but no arrow bitmaps, use @code{((top .  left)
 +(bottom . left))}.
 +
 +@vindex default-indicate-buffer-boundaries
 +  The value of the variable @code{default-indicate-buffer-boundaries}
 +is the default value for @code{indicate-buffer-boundaries} in buffers
 +that do not override it.
 +
 +@node Useless Whitespace
 +@section Useless Whitespace
 +
 +@cindex trailing whitespace
 +@cindex whitespace, trailing
 +@vindex show-trailing-whitespace
 +  It is easy to leave unnecessary spaces at the end of a line, or
 +empty lines at the end of a file, without realizing it.  In most
 +cases, this @dfn{trailing whitespace} has no effect, but there are
 +special circumstances where it matters.  It can also be a nuisance
 +that the line has ``changed,'' when the change is just spaces added or
 +removed at the end.
 +
 +  You can make trailing whitespace at the end of a line visible on the
 +screen by setting the buffer-local variable
 +@code{show-trailing-whitespace} to @code{t}.  Then Emacs displays
 +trailing whitespace in the face @code{trailing-whitespace}.
 +
 +  This feature does not apply when point is at the end of the line
 +containing the whitespace.  Strictly speaking, that is ``trailing
 +whitespace'' nonetheless, but displaying it specially in that case
 +looks ugly while you are typing in new text.  In this special case,
 +the location of point is enough to show you that the spaces are
 +present.
 +
 +@findex delete-trailing-whitespace
 +  To delete all trailing whitespace within the current buffer's
 +accessible portion (@pxref{Narrowing}), type @kbd{M-x
 +delete-trailing-whitespace @key{RET}}.  (This command does not remove
 +the form-feed characters.)
 +
 +@vindex indicate-empty-lines
 +@vindex default-indicate-empty-lines
 +@cindex unused lines
 +@cindex fringes, and unused line indication
 +  Emacs can indicate unused lines at the end of the window with a
 +small image in the left fringe (@pxref{Fringes}).  The image appears
 +for window lines that do not correspond to any buffer text.  Blank
 +lines at the end of the buffer then stand out because they do not have
 +this image in the fringe.
 +
 +  To enable this feature, set the buffer-local variable
 +@code{indicate-empty-lines} to a non-@code{nil} value.  The default
 +value of this variable is controlled by the variable
 +@code{default-indicate-empty-lines}; by setting that variable, you
 +can enable or disable this feature for all new buffers.  (This feature
 +currently doesn't work on text-only terminals.)
 +
 +@node Selective Display
 +@section Selective Display
 +@cindex selective display
 +@findex set-selective-display
 +@kindex C-x $
 +
 +  Emacs has the ability to hide lines indented more than a certain number
 +of columns (you specify how many columns).  You can use this to get an
 +overview of a part of a program.
 +
 +  To hide lines in the current buffer, type @kbd{C-x $}
 +(@code{set-selective-display}) with a numeric argument @var{n}.  Then
 +lines with at least @var{n} columns of indentation disappear from the
 +screen.  The only indication of their presence is that three dots
 +(@samp{@dots{}}) appear at the end of each visible line that is
 +followed by one or more hidden ones.
 +
 +  The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
 +if they were not there.
 +
 +  The hidden lines are still present in the buffer, and most editing
 +commands see them as usual, so you may find point in the middle of the
 +hidden text.  When this happens, the cursor appears at the end of the
 +previous line, after the three dots.  If point is at the end of the
 +visible line, before the newline that ends it, the cursor appears before
 +the three dots.
 +
 +  To make all lines visible again, type @kbd{C-x $} with no argument.
 +
 +@vindex selective-display-ellipses
 +  If you set the variable @code{selective-display-ellipses} to
 +@code{nil}, the three dots do not appear at the end of a line that
 +precedes hidden lines.  Then there is no visible indication of the
 +hidden lines.  This variable becomes local automatically when set.
 +
 +  See also @ref{Outline Mode} for another way to hide part of
 +the text in a buffer.
 +
 +@node Optional Mode Line
 +@section Optional Mode Line Features
 +
 +@cindex buffer size display
 +@cindex display of buffer size
 +@findex size-indication-mode
 +  The buffer percentage @var{pos} indicates the percentage of the
 +buffer above the top of the window.  You can additionally display the
 +size of the buffer by typing @kbd{M-x size-indication-mode} to turn on
 +Size Indication mode.  The size will be displayed immediately
 +following the buffer percentage like this:
 +
 +@example
 +@var{POS} of @var{SIZE}
 +@end example
 +
 +@noindent
 +Here @var{SIZE} is the human readable representation of the number of
 +characters in the buffer, which means that @samp{k} for 10^3, @samp{M}
 +for 10^6, @samp{G} for 10^9, etc., are used to abbreviate.
 +
 +@cindex narrowing, and buffer size display
 +  If you have narrowed the buffer (@pxref{Narrowing}), the size of the
 +accessible part of the buffer is shown.
 +
 +@cindex line number display
 +@cindex display of line number
 +@findex line-number-mode
 +  The current line number of point appears in the mode line when Line
 +Number mode is enabled.  Use the command @kbd{M-x line-number-mode} to
 +turn this mode on and off; normally it is on.  The line number appears
 +after the buffer percentage @var{pos}, with the letter @samp{L} to
 +indicate what it is.
 +
 +@cindex Column Number mode
 +@cindex mode, Column Number
 +@findex column-number-mode
 +  Similarly, you can display the current column number by turning on
 +Column number mode with @kbd{M-x column-number-mode}.  The column
 +number is indicated by the letter @samp{C}.  However, when both of
 +these modes are enabled, the line and column numbers are displayed in
 +parentheses, the line number first, rather than with @samp{L} and
 +@samp{C}.  For example: @samp{(561,2)}.  @xref{Minor Modes}, for more
 +information about minor modes and about how to use these commands.
 +
 +@cindex narrowing, and line number display
 +  If you have narrowed the buffer (@pxref{Narrowing}), the displayed
 +line number is relative to the accessible portion of the buffer.
 +Thus, it isn't suitable as an argument to @code{goto-line}.  (Use
 +@code{what-line} command to see the line number relative to the whole
 +file.)
 +
 +@vindex line-number-display-limit
 +  If the buffer is very large (larger than the value of
 +@code{line-number-display-limit}), then the line number doesn't appear.
 +Emacs doesn't compute the line number when the buffer is large, because
 +that would be too slow.  Set it to @code{nil} to remove the limit.
 +
 +@vindex line-number-display-limit-width
 +  Line-number computation can also be slow if the lines in the buffer
 +are too long.  For this reason, Emacs normally doesn't display line
 +numbers if the average width, in characters, of lines near point is
 +larger than the value of the variable
 +@code{line-number-display-limit-width}.  The default value is 200
 +characters.
 +
 +@findex display-time
 +@cindex time (on mode line)
 +  Emacs can optionally display the time and system load in all mode
 +lines.  To enable this feature, type @kbd{M-x display-time} or customize
 +the option @code{display-time-mode}.  The information added to the mode
 +line usually appears after the buffer name, before the mode names and
 +their parentheses.  It looks like this:
 +
 +@example
 +@var{hh}:@var{mm}pm @var{l.ll}
 +@end example
 +
 +@noindent
 +@vindex display-time-24hr-format
 +Here @var{hh} and @var{mm} are the hour and minute, followed always by
 +@samp{am} or @samp{pm}.  @var{l.ll} is the average number of running
 +processes in the whole system recently.  (Some fields may be missing if
 +your operating system cannot support them.)  If you prefer time display
 +in 24-hour format, set the variable @code{display-time-24hr-format}
 +to @code{t}.
 +
 +@cindex mail (on mode line)
 +@vindex display-time-use-mail-icon
 +@vindex display-time-mail-face
 +@vindex display-time-mail-file
 +@vindex display-time-mail-directory
 +  The word @samp{Mail} appears after the load level if there is mail
 +for you that you have not read yet.  On a graphical display you can use
 +an icon instead of @samp{Mail} by customizing
 +@code{display-time-use-mail-icon}; this may save some space on the mode
 +line.  You can customize @code{display-time-mail-face} to make the mail
 +indicator prominent.  Use @code{display-time-mail-file} to specify
 +the mail file to check, or set @code{display-time-mail-directory}
 +to specify the directory to check for incoming mail (any nonempty regular
 +file in the directory is considered as ``newly arrived mail'').
 +
 +@cindex mode line, 3D appearance
 +@cindex attributes of mode line, changing
 +@cindex non-integral number of lines in a window
 +  By default, the mode line is drawn on graphics displays with
 +3D-style highlighting, like that of a button when it is not being
 +pressed.  If you don't like this effect, you can disable the 3D
 +highlighting of the mode line, by customizing the attributes of the
 +@code{mode-line} face.  @xref{Face Customization}.
 +
 +@cindex non-selected windows, mode line appearance
 +  By default, the mode line of nonselected windows is displayed in a
 +different face, called @code{mode-line-inactive}.  Only the selected
 +window is displayed in the @code{mode-line} face.  This helps show
 +which window is selected.  When the minibuffer is selected, since
 +it has no mode line, the window from which you activated the minibuffer
 +has its mode line displayed using @code{mode-line}; as a result,
 +ordinary entry to the minibuffer does not change any mode lines.
 +
 +@vindex mode-line-in-non-selected-windows
 +  You can disable use of @code{mode-line-inactive} by setting variable
 +@code{mode-line-in-non-selected-windows} to @code{nil}; then all mode
 +lines are displayed in the @code{mode-line} face.
 +
 +@vindex eol-mnemonic-unix
 +@vindex eol-mnemonic-dos
 +@vindex eol-mnemonic-mac
 +@vindex eol-mnemonic-undecided
 +  You can customize the mode line display for each of the end-of-line
 +formats by setting each of the variables @code{eol-mnemonic-unix},
 +@code{eol-mnemonic-dos}, @code{eol-mnemonic-mac}, and
 +@code{eol-mnemonic-undecided} to the strings you prefer.
 +
 +@node Text Display
 +@section How Text Is Displayed
 +@cindex characters (in text)
 +
 +  @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
 +buffers are displayed with their graphics, as are non-ASCII multibyte
 +printing characters (octal codes above 0400).
 +
 +  Some @acronym{ASCII} control characters are displayed in special ways.  The
 +newline character (octal code 012) is displayed by starting a new line.
 +The tab character (octal code 011) is displayed by moving to the next
 +tab stop column (normally every 8 columns).
 +
 +  Other @acronym{ASCII} control characters are normally displayed as a caret
 +(@samp{^}) followed by the non-control version of the character; thus,
 +control-A is displayed as @samp{^A}.  The caret appears in face
 +@code{escape-glyph}.
 +
 +  Non-@acronym{ASCII} characters 0200 through 0237 (octal) are
 +displayed with octal escape sequences; thus, character code 0230
 +(octal) is displayed as @samp{\230}.  The backslash appears in face
 +@code{escape-glyph}.
 +
 +@vindex ctl-arrow
 +  If the variable @code{ctl-arrow} is @code{nil}, control characters in
 +the buffer are displayed with octal escape sequences, except for newline
 +and tab.  Altering the value of @code{ctl-arrow} makes it local to the
 +current buffer; until that time, the default value is in effect.  The
 +default is initially @code{t}.
 +
 +  The display of character codes 0240 through 0377 (octal) may be
 +either as escape sequences or as graphics.  They do not normally occur
 +in multibyte buffers, but if they do, they are displayed as Latin-1
 +graphics.  In unibyte mode, if you enable European display they are
 +displayed using their graphics (assuming your terminal supports them),
 +otherwise as escape sequences.  @xref{Unibyte Mode}.
 +
 +@vindex nobreak-char-display
 +@cindex no-break space, display
 +@cindex no-break hyphen, display
 +@cindex soft hyphen, display
 +  Some character sets define ``no-break'' versions of the space and
 +hyphen characters, which are used where a line should not be broken.
 +Emacs normally displays these characters with special faces
 +(respectively, @code{nobreak-space} and @code{escape-glyph}) to
 +distinguish them from ordinary spaces and hyphens.  You can turn off
 +this feature by setting the variable @code{nobreak-char-display} to
 +@code{nil}.  If you set the variable to any other value, that means to
 +prefix these characters with an escape character.
 +
 +@vindex tab-width
 +@vindex default-tab-width
 +  Normally, a tab character in the buffer is displayed as whitespace which
 +extends to the next display tab stop position, and display tab stops come
 +at intervals equal to eight spaces.  The number of spaces per tab is
 +controlled by the variable @code{tab-width}, which is made local by
 +changing it.  Note that how the tab character
 +in the buffer is displayed has nothing to do with the definition of
 +@key{TAB} as a command.  The variable @code{tab-width} must have an
 +integer value between 1 and 1000, inclusive.  The variable
 +@code{default-tab-width} controls the default value of this variable
 +for buffers where you have not set it locally.
 +
 +  You can customize the way any particular character code is displayed
 +by means of a display table.  @xref{Display Tables,, Display Tables,
 +elisp, The Emacs Lisp Reference Manual}.
 +
 +@node Cursor Display
 +@section Displaying the Cursor
 +
 +@findex blink-cursor-mode
 +@vindex blink-cursor-alist
 +@cindex cursor, locating visually
 +@cindex cursor, blinking
 +  You can customize the cursor's color, and whether it blinks, using
 +the @code{cursor} Custom group (@pxref{Easy Customization}).  On
 +a graphical display, the command @kbd{M-x blink-cursor-mode} enables
 +or disables the blinking of the cursor.  (On text terminals, the
 +terminal itself blinks the cursor, and Emacs has no control over it.)
 +You can control how the cursor appears when it blinks off by setting
 +the variable @code{blink-cursor-alist}.
 +
 +@vindex visible-cursor
 +  Some text terminals offer two different cursors: the normal cursor
 +and the very visible cursor, where the latter may be e.g. bigger or
 +blinking.  By default Emacs uses the very visible cursor, and switches
 +to it when you start or resume Emacs.  If the variable
 +@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it
 +doesn't switch, so it uses the normal cursor.
 +
 +@cindex cursor in non-selected windows
 +@vindex cursor-in-non-selected-windows
- customize the variable @code{cursor-in-non-selected-windows} and assign
- it a @code{nil} value.
++  Normally, the cursor appears in non-selected windows without
++blinking, with the same appearance as when the blinking cursor blinks
 +``off.''  For a box cursor, this is a hollow box; for a bar cursor,
 +this is a thinner bar.  To turn off cursors in non-selected windows,
++customize the variable @code{cursor-in-non-selected-windows} and
++assign it a @code{nil} value.
 +
 +@vindex x-stretch-cursor
 +@cindex wide block cursor
 +  On graphical displays, Emacs can optionally draw the block cursor
 +as wide as the character under the cursor---for example, if the cursor
 +is on a tab character, it would cover the full width occupied by that
 +tab character.  To enable this feature, set the variable
 +@code{x-stretch-cursor} to a non-@code{nil} value.
 +
 +@findex hl-line-mode
 +@findex global-hl-line-mode
 +@cindex highlight current line
 +  To make the cursor even more visible, you can use HL Line mode, a
 +minor mode that highlights the line containing point.  Use @kbd{M-x
 +hl-line-mode} to enable or disable it in the current buffer.  @kbd{M-x
 +global-hl-line-mode} enables or disables the same mode globally.
 +
 +@node Line Truncation
 +@section Truncation of Lines
 +
 +@cindex truncation
 +@cindex line truncation, and fringes
 +  As an alternative to continuation, Emacs can display long lines by
 +@dfn{truncation}.  This means that all the characters that do not fit
 +in the width of the screen or window do not appear at all.  On
 +graphical displays, a small straight arrow in the fringe indicates
 +truncation at either end of the line.  On text-only terminals, @samp{$}
 +appears in the first column when there is text truncated to the left,
 +and in the last column when there is text truncated to the right.
 +
 +@vindex truncate-lines
 +@findex toggle-truncate-lines
 +  Horizontal scrolling automatically causes line truncation
 +(@pxref{Horizontal Scrolling}).  You can explicitly enable line
 +truncation for a particular buffer with the command @kbd{M-x
 +toggle-truncate-lines}.  This works by locally changing the variable
 +@code{truncate-lines}.  If that variable is non-@code{nil}, long lines
 +are truncated; if it is @code{nil}, they are continued onto multiple
 +screen lines.  Setting the variable @code{truncate-lines} in any way
 +makes it local to the current buffer; until that time, the default
 +value is in effect.  The default value is normally @code{nil}.
 +
 +@c @vindex truncate-partial-width-windows  @c Idx entry is in Split Windows.
 +  If the variable @code{truncate-partial-width-windows} is
 +non-@code{nil}, it forces truncation rather than continuation in any
 +window less than the full width of the screen or frame, regardless of
 +the value of @code{truncate-lines}.  For information about side-by-side
 +windows, see @ref{Split Window}.  See also @ref{Display,, Display,
 +elisp, The Emacs Lisp Reference Manual}.
 +
 +@vindex overflow-newline-into-fringe
 +  If the variable @code{overflow-newline-into-fringe} is
 +non-@code{nil} on a graphical display, then Emacs does not continue or
 +truncate a line which is exactly as wide as the window.  Instead, the
 +newline overflows into the right fringe, and the cursor appears in the
 +fringe when positioned on that newline.
 +
 +@node Display Custom
 +@section Customization of Display
 +
 +  This section describes variables (@pxref{Variables}) that you can
 +change to customize how Emacs displays.  Beginning users can skip
 +it.
 +@c the reason for that pxref is because an xref early in the
 +@c ``echo area'' section leads here.
 +
 +@vindex inverse-video
 +  If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
 +to invert all the lines of the display from what they normally are.
 +
 +@vindex visible-bell
 +  If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
 +to make the whole screen blink when it would normally make an audible bell
 +sound.  This variable has no effect if your terminal does not have a way
 +to make the screen blink.
 +
 +@vindex echo-keystrokes
 +  The variable @code{echo-keystrokes} controls the echoing of multi-character
 +keys; its value is the number of seconds of pause required to cause echoing
 +to start, or zero, meaning don't echo at all.  The value takes effect when
 +there is someting to echo.  @xref{Echo Area}.
 +
 +@vindex baud-rate
 +  The variable @anchor{baud-rate}@code{baud-rate} holds the output
 +speed of the terminal, as far as Emacs knows.  Setting this variable
 +does not change the speed of actual data transmission, but the value
 +is used for calculations.  On text-only terminals, it affects padding,
 +and decisions about whether to scroll part of the screen or redraw it
 +instead.  It also affects the behavior of incremental search.
 +
 +  On graphical displays, @code{baud-rate} is only used to determine
 +how frequently to look for pending input during display updating.  A
 +higher value of @code{baud-rate} means that check for pending input
 +will be done less frequently.
 +
 +@cindex hourglass pointer display
 +@vindex hourglass-delay
 +  On graphical display, Emacs can optionally display the mouse pointer
 +in a special shape to say that Emacs is busy.  To turn this feature on
 +or off, customize the group @code{cursor}.  You can also control the
 +amount of time Emacs must remain busy before the busy indicator is
 +displayed, by setting the variable @code{hourglass-delay}.
 +
 +@vindex overline-margin
 +  On graphical display, this variables specifies the vertical position
 +of an overline above the text, including the height of the overline
 +itself (1 pixel).  The default value is 2 pixels.
 +
 +@vindex x-underline-at-descent-line
 +  On graphical display, Emacs normally draws an underline at the
 +baseline level of the font.  If @code{x-underline-at-descent-line} is
 +non-@code{nil}, Emacs draws the underline at the same height as the
 +font's descent line.
 +
 +@findex tty-suppress-bold-inverse-default-colors
 +  On some text-only terminals, bold face and inverse video together
 +result in text that is hard to read.  Call the function
 +@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
 +argument to suppress the effect of bold-face in this case.
 +
 +@vindex no-redraw-on-reenter
 +  On a text-only terminal, when you reenter Emacs after suspending, Emacs
 +normally clears the screen and redraws the entire display.  On some
 +terminals with more than one page of memory, it is possible to arrange
 +the termcap entry so that the @samp{ti} and @samp{te} strings (output
 +to the terminal when Emacs is entered and exited, respectively) switch
 +between pages of memory so as to use one page for Emacs and another
 +page for other output.  On such terminals, you might want to set the variable
 +@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
 +assume, when resumed, that the screen page it is using still contains
 +what Emacs last wrote there.
 +
 +@ignore
 +   arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
 +@end ignore
index b4a9c045cd467e167f947403e40a4ad44b1c9ddd,0000000000000000000000000000000000000000..d95597e940b9a6e8e682fd6829b98ae78bfe1277
mode 100644,000000..100644
--- /dev/null
@@@ -1,6348 -1,0 +1,6364 @@@
 +2007-10-13  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi (@dircategory): Move to after @copying,
 +      since we want @copying as close as possible to the beginning of
 +      the output.
 +
++2007-10-12  Richard Stallman  <rms@gnu.org>
++
++      * elisp.texi (Top): Add Distinguish Interactive to subnode menu.
++
++      * commands.texi (Distinguish Interactive): New node,
++      broken out from Interactive Call and rewritten.
++      (Command Loop): Put Distinguish Interactive in menu.
++
++2007-10-09  Richard Stallman  <rms@gnu.org>
++
++      * text.texi (Examining Properties): Mention overlay priority.
++
++      * display.texi (Display Margins): Correct the description
++      of margin display specifications.
++      (Replacing Specs): New subnode broken out of Display Property.
++
 +2007-10-06  Juri Linkov  <juri@jurta.org>
 +
 +      * text.texi (Filling): Document fill-paragraph-or-region.
 +
 +2007-10-05  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * display.texi (Auto Faces): Fix typo.
 +
 +2007-10-02  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Display Property): Explain some display specs
 +      don't let you move point in.
 +
 +      * frames.texi (Cursor Parameters): Describe
 +      cursor-in-non-selected-windows here.  Explain more values.
 +
 +      * windows.texi (Basic Windows): Don't describe
 +      cursor-in-non-selected-windows here.
 +
 +2007-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * processes.texi (Misc Network): Note that these functions are
 +      supported only on some systems.
 +
 +2007-10-01  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Overlay Properties): Explain nil as priority.
 +      Explain that conflicts are unpredictable if not resolved by
 +      priorities.
 +
 +2007-09-23  Richard Stallman  <rms@gnu.org>
 +
 +      * macros.texi (Backquote): Minor clarification.
 +
 +2007-09-19  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Display Property): Explain multiple display specs.
 +      Clarify when they work in parallel and when one overrides.
 +      Fix error in example.
 +
 +2007-09-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Move from lispref/ to doc/lispref/.  Change all setfilename
 +      commands to use ../../info.
 +      * Makefile.in (infodir): Go up one more level.
 +      (usermanualdir): Change from ../man to ../emacs.
 +      (miscmanualdir): New.
 +      (dist): Use new variable miscmanualdir.
 +      * makefile.w32-in (infodir, texinputdir): Go up one more level.
 +      (usermanualdir): Change from ../man to ../emacs.
 +
 +2007-08-30  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * commands.texi (Command Loop Info): Advise against changing
 +      most variables described here.  Explain new variable
 +      last-repeatable-command.
 +
 +2007-08-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * elisp.texi (EMACSVER): Increase to 23.0.50.
 +
 +2007-08-29  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * frames.texi (Basic Parameters): Add display-environment-variable
 +      and term-environment-variable.
 +
 +2007-08-28  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Image Formats, Other Image Types): Add SVG.
 +
 +2007-08-28  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Images): Move formats-related text to new node
 +      "Image Formats".
 +      (Image Formats): New node.
 +
 +2007-08-27  Richard Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Window Configurations): Clarify what
 +      a window configuration saves.
 +
 +2007-08-25  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Images): Delete redundant @findex.
 +
 +2007-08-16  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Asynchronous Processes): Clarify
 +      doc of start-file-process.
 +
 +2007-08-08  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * modes.texi (Example Major Modes): Fix typo.
 +
 +2007-08-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * intro.texi (nil and t): Do not use `iff' in documentation.
 +
 +      * tips.texi (Documentation Tips): Recommend against `iff'.
 +
 +2007-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Image Cache): Document image-refresh.
 +
 +2007-08-06  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * windows.texi (Size of Window): Document window-full-width-p.
 +
 +2007-07-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * gpl.texi (GPL): Replace license with GPLv3.
 +
 +      * Relicense all FSF files to GPLv3 or later.
 +
 +2007-07-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * processes.texi (Synchronous Processes):
 +      Add `process-file-shell-command'.
 +      (Asynchronous Processes): Mention restricted use of
 +      `process-filter' and `process-sentinel' in
 +      `start-file-process'.  Add `start-file-process-shell-command'.
 +
 +2007-07-17  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): Introduce optional parameter
 +      IDENTIFICATION for `file-remote-p'.
 +
 +2007-07-16  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Faces): Fix previous change.
 +
 +2007-07-14  Richard Stallman  <rms@gnu.org>
 +
 +      * control.texi (Handling Errors): Document `debug' in handler list.
 +
 +2007-07-10  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Faces): Explain C-M-x feature for defface.
 +
 +2007-07-09  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Magic File Names): Rewrite previous change.
 +
 +2007-07-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): Introduce optional parameter
 +      CONNECTED for `file-remote-p'.
 +
 +2007-07-07  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * processes.texi (Asynchronous Processes):
 +      * files.texi (Magic File Names): Add `start-file-process'.
 +
 +2007-06-27  Richard Stallman  <rms@gnu.org>
 +
 +      * files.texi (Format Conversion Piecemeal): Clarify
 +      `after-insert-file-functions' calling convention.
 +
 +2007-06-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): Remove `dired-call-process'.
 +      Add `process-file'.
 +
 +2007-06-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * text.texi (Special Properties): Fix description about
 +      `composition' property.
 +
 +2007-06-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * nonascii.texi (Default Coding Systems): Document about the
 +      return value `undecided'.
 +
 +2007-06-25  David Kastrup  <dak@gnu.org>
 +
 +      * keymaps.texi (Active Keymaps): Document new POSITION argument of
 +      `current-active-maps'.
 +
 +2007-06-24  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text.
 +
 +2007-06-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * display.texi (Overlay Arrow): Doc fix.
 +
 +2007-06-14  Karl Berry  <karl@tug.org>
 +
 +      * anti.texi (Antinews): Typo.
 +
 +2007-06-14  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Image Cache): Document image-refresh.
 +
 +2007-06-12  Karl Berry  <karl@gnu.org>
 +
 +      * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update.
 +      * two-volume.make: New file.
 +      * .cvsignore: Ignore two-volume files.
 +
 +2007-06-12  Tom Tromey  <tromey@redhat.com>
 +
 +      * os.texi (Init File): Document user-emacs-directory.
 +
 +2007-06-03  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * commands.texi (Click Events): Describe width and height when
 +      object is nil.
 +
 +2007-05-30  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * commands.texi (Click Events): Layout more logically.  Describe
 +      width and height.
 +      (Drag Events, Motion Events): Update to new format for position.
 +
 +2007-06-02  Richard Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
 +
 +2007-06-02  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Version 22.1 released.
 +
 +2007-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * text.texi (Special Properties): Correct meaning of fontified face.
 +
 +2007-05-30  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Add link to Adjusting Point.
 +
 +2007-05-12  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Margins): indent-to-left-margin is not the default.
 +      (Mode-Specific Indent): For indent-line-function, the default
 +      is indent-relative.
 +
 +      * modes.texi (Example Major Modes): Explain last line of text-mode
 +      is redundant.
 +
 +2007-05-10  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Scanning Keymaps): Update where-is-internal example.
 +
 +      * help.texi (Keys in Documentation): Add reference to
 +      Documentation Tips.
 +
 +      * files.texi (Format Conversion): TO-FN gets three arguments.
 +
 +      * modes.texi (Auto Major Mode): Document file-start-mode-alist.
 +
 +2007-05-10  Thien-Thi Nguyen  <ttn@gnuvola.org>
 +
 +      * elisp.texi (Top): Remove "Saving Properties" from detailed menu.
 +      * files.texi (Format Conversion): Expand intro; add menu.
 +      (Format Conversion Overview, Format Conversion Round-Trip)
 +      (Format Conversion Piecemeal): New nodes/subsections.
 +      * hooks.texi: Xref "Format Conversion" , not "Saving Properties".
 +      * text.texi (Text Properties): Remove "Saving Properties" from menu.
 +      (Saving Properties): Delete node/subsection.
 +
 +2007-05-07  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi (EMACSVER): Back to 22.
 +
 +2007-05-06  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Accepting Output): Revert most of previous change.
 +
 +2007-05-05  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Accepting Output): accept-process-output
 +      uses microseconds, not milliseconds.  But that arg is obsolete.
 +
 +2007-05-04  Karl Berry  <karl@tug.org>
 +
 +      * elisp.texi (EMACSVER) [smallbook]: 22.1, not 22.
 +
 +2007-05-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * tips.texi (Documentation Tips): Rearrange items to place the
 +      more important ones first.  Add an index entry for hyperlinks.
 +
 +2007-05-03  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing.
 +      (EMACSVER) [smallbook]: 22 for printed version.
 +
 +      * control.texi (Signaling Errors) <signal>: texinfo.tex is fixed,
 +      so restore anchor to normal position after defun.  Found by Kevin Ryde.
 +
 +2007-04-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * elisp.texi (EMACSVER): Increase to 22.1.50.
 +
 +2007-04-28  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi: Improve line breaks on copyright page,
 +      similar layout to emacs manual, 8.5x11 by default.
 +
 +2007-04-24  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Add xref to Overlay Properties.
 +
 +      * display.texi (Overlay Properties): Add xref to Special Properties.
 +
 +2007-04-22  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Extended Menu Items): Move the info about
 +      format with cached keyboard binding.
 +
 +2007-04-21  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Clarify previous change.
 +
 +      * files.texi (File Name Expansion): Clarify previous change.
 +
 +      * display.texi (Attribute Functions): Fix example for
 +      face-attribute-relative-p.
 +
 +2007-04-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * text.texi (Special Properties): Document composition property.
 +
 +2007-04-19  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.texi (File Name Expansion): Mention "superroot".
 +
 +2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frames.texi (Multiple Displays): Add note about "multi-monitor"
 +      setups.
 +      (Display Feature Testing): Note that display refers to all
 +      physical monitors for multi-monitor setups.
 +
 +2007-04-14  Richard Stallman  <rms@gnu.org>
 +
 +      * lists.texi (Sets And Lists): Clarify `delete' examples.
 +      Remove spurious xref to same node.
 +      Clarify xref for add-to-list.
 +
 +2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * keymaps.texi (Format of Keymaps): Remove spurious ")" from
 +      value of lisp-mode-map.
 +
 +2007-04-11  Karl Berry  <karl@gnu.org>
 +
 +      * anti.texi (Antinews):
 +      * display.texi (Overlay Properties, Defining Images):
 +      * processes.texi (Synchronous Processes, Sentinels):
 +      * syntax.texi (Syntax Table Internals):
 +      * searching.texi (Regexp Special):
 +      * nonascii.texi (Default Coding Systems):
 +      * text.texi (Special Properties):
 +      * minibuf.texi (Basic Completion): Wording to improve breaks in
 +      8.5x11 format.
 +      * elisp.texi (smallbook): New @set to more easily switch between
 +      smallbook and 8.5x11.
 +
 +2007-04-11  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Lazy Properties): Minor fix.
 +
 +2007-04-08  Karl Berry  <karl@gnu.org>
 +
 +      * symbols.texi (Plists and Alists): Period after "vs" in index entries.
 +      * macros.texi (Backquote): Downcase Backquote in index entries for
 +      consistency.
 +
 +2007-04-08  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Adaptive Fill): Just describe default,
 +      don't show it (since it contains non-ASCII chars).
 +
 +2007-04-07  Karl Berry  <karl@gnu.org>
 +
 +      * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in
 +      adaptive-fill-regexp's value, since they are not in the standard
 +      TeX fonts.
 +
 +2007-04-07  Guanpeng Xu  <herberteuler@hotmail.com>
 +
 +      * display.texi (Defining Faces): Fix example.
 +
 +2007-04-07  Karl Berry  <karl@gnu.org>
 +
 +      * display.texi (Button Buffer Commands): Improve page break.
 +
 +2007-04-07  Richard Stallman  <rms@gnu.org>
 +
 +      * advice.texi (Activation of Advice): Remove redundant index entry.
 +
 +      * backups.texi: Improve index entries.  Remove redundant ones.
 +
 +      * compile.texi (Byte Compilation): Improve index entry.
 +
 +      * hash.texi (Creating Hash): Improve index entry.
 +
 +      * symbols.texi (Definitions): Improve index entry.
 +
 +      * edebug.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * maps.texi (Standard Keymaps): Remove useless index entry.
 +
 +      * help.texi (Documentation Basics): Remove redundant index entries.
 +
 +      * customize.texi: Improve index entries.
 +      Remove redundant/useless ones.
 +
 +      * locals.texi (Standard Buffer-Local Variables): Clarify intro text.
 +
 +      * streams.texi (Output Variables): Improve index entry.
 +
 +      * abbrevs.texi (Abbrevs): Remove useless index entry.
 +
 +      * macros.texi (Expansion): Remove useless index entry.
 +
 +      * text.texi: Improve index entries.  Remove redundant/useless ones.
 +      (Text Properties, Examining Properties)
 +      (Special Properties): Use "property category" instead of "category"
 +      to refer to the `category' property.
 +
 +      * positions.texi: Improve index entries.  Remove useless one.
 +
 +      * lists.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * os.texi: Improve index entries.
 +      (Timers): Fix previous change.
 +
 +      * buffers.texi: Improve index entries.
 +      (Modification Time): Get rid of term "obsolete buffer".
 +
 +      * debugging.texi: Improve index entries.
 +      (Test Coverage): Add xref to other test coverage ftr.
 +
 +      * eval.texi: Improve index entry.  Remove redundant ones.
 +
 +      * numbers.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * files.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * objects.texi: Improve index entries.
 +
 +      * processes.texi: Improve index entries.
 +
 +      * modes.texi: Improve index entry.  Remove redundant one.
 +
 +      * nonascii.texi: Improve index entries.
 +
 +      * internals.texi: Improve index entries.
 +
 +      * syntax.texi: Improve index entries.
 +
 +      * keymaps.texi (Active Keymaps): Improve index entries.
 +
 +      * commands.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * frames.texi: Improve index entries.  Remove redundant/useless ones.
 +
 +      * markers.texi: Improve index entries.  Remove redundant ones.
 +
 +      * tips.texi: Improve index entries.
 +
 +      * loading.texi (Unloading): Improve index entry.
 +
 +      * variables.texi: Improve index entries.  Remove redundant one.
 +
 +      * sequences.texi: Improve index entry.
 +
 +      * display.texi: Improve index entries.  Remove redundant ones.
 +
 +      * windows.texi: Improve index entries.
 +
 +      * searching.texi: Improve index entries.  Remove redundant one.
 +
 +      * strings.texi (Case Tables): Improve last change.
 +
 +2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * strings.texi (Case Tables): Document with-case-table and
 +      ascii-case-table.
 +
 +2007-04-03  Karl Berry  <karl@gnu.org>
 +
 +      * processes.texi (Network): Reword to improve page break.
 +
 +2007-04-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * functions.texi (Inline Functions): Describe more disadvantages
 +      of defsubst, and make advice against it stronger.
 +
 +2007-04-02  Karl Berry  <karl@gnu.org>
 +
 +      * backups.texi (Backup Names): Avoid widow words.
 +      * modes.texi (Example Major Modes): Align last comment.
 +
 +2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keymaps.texi (Remapping Commands): Document new arg to
 +      command-remapping.
 +
 +2007-04-01  Karl Berry  <karl@gnu.org>
 +
 +      * processes.texi (Low-Level Network): Typo.
 +      * loading.texi (Hooks for Loading): Avoid double "the".
 +      * keymaps.texi (Key Sequences): No double "and".
 +      (Changing Key Bindings): Shorten to improve line break.
 +
 +2007-03-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi (Timers): Fix description of run-at-time TIME formats.
 +
 +2007-03-31  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Invisible Text): Correct buffer-invisibility-spec
 +      regarding ellipsis.
 +
 +2007-03-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * intro.texi (nil and t):
 +      * symbols.texi (Plists and Alists):
 +      * variables.texi (Variable Aliases, Constant Variables):
 +      * functions.texi (Defining Functions):
 +      * advice.texi (Advising Primitives):
 +      * debugging.texi (Syntax Errors, Compilation Errors):
 +      * minibuf.texi (Minibuffer Windows):
 +      * commands.texi (Adjusting Point):
 +      * modes.texi (Syntactic Font Lock, Faces for Font Lock)
 +      (Auto Major Mode, Major Mode Conventions):
 +      * help.texi (Describing Characters):
 +      * files.texi (Create/Delete Dirs, Information about Files)
 +      (File Locks, Writing to Files, Reading from Files)
 +      (Saving Buffers):
 +      * windows.texi (Resizing Windows, Cyclic Window Ordering):
 +      * frames.texi (Finding All Frames):
 +      * positions.texi (Buffer End, Motion):
 +      * markers.texi (The Region):
 +      * text.texi (Deletion, Near Point):
 +      * display.texi (Displaying Messages, Truncation):
 +      * os.texi (Processor Run Time):
 +      * tips.texi (Key Binding Conventions, Programming Tips)
 +      (Warning Tips, Documentation Tips, Comment Tips):
 +      * internals.texi (Memory Usage): Improve indexing.
 +
 +      * variables.texi (Frame-Local Variables):
 +      * functions.texi (Argument List):
 +      * loading.texi (Library Search):
 +      * streams.texi (Output Variables):
 +      * keymaps.texi (Translation Keymaps, Searching Keymaps):
 +      * searching.texi (Replacing Match, Search and Replace):
 +      * processes.texi (Byte Packing, Decoding Output)
 +      (Accepting Output, Network Servers, Shell Arguments):
 +      * display.texi (Abstract Display, Image Cache, Scroll Bars):
 +      * windows.texi (Window Point, Window Start):
 +      * frames.texi (Management Parameters, Frame Parameters, Frame Titles):
 +      * commands.texi (Reading Input, Keyboard Events):
 +      * minibuf.texi (Reading File Names, Minibuffer Completion)
 +      (Recursive Mini):
 +      * positions.texi (List Motion):
 +      * hash.texi (Hash Tables, Creating Hash, Defining Hash):
 +      * numbers.texi (Arithmetic Operations, Math Functions)
 +      (Predicates on Numbers, Comparison of Numbers):
 +      (Numeric Conversions):
 +      * locals.texi (Standard Buffer-Local Variables):
 +      * maps.texi (Standard Keymaps):
 +      * os.texi (User Identification, System Environment, Recording Input)
 +      (X11 Keysyms):
 +      * nonascii.texi (Non-ASCII Characters, Splitting Characters):
 +      * backups.texi (Backups and Auto-Saving):
 +      * customize.texi (Customization, Group Definitions)
 +      (Variable Definitions):
 +      * compile.texi (Byte Compilation): Improve index entries.
 +
 +2007-03-31  Karl Berry  <karl@gnu.org>
 +
 +      * macros.texi (Defining Macros): Avoid widow syllable.
 +
 +2007-03-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * elisp.texi (Top): Postscript -> PostScript.
 +
 +      * display.texi (Images, Postscript Images): Postscript -> PostScript.
 +
 +2007-03-31  Markus Triska  <markus.triska@gmx.at>
 +
 +      * internals.texi (Writing Emacs Primitives): Untabify `For'.
 +
 +2007-03-30  Karl Berry  <karl@gnu.org>
 +
 +      * lists.texi (List-related Predicates): Remove spurious @need.
 +      (Setcdr): Use @smallexample to improve page break.
 +      (Association Lists) <assoc>: Reword to improve page break.
 +
 +      * strings.texi (String Conversion): Insert blank line to improve
 +      page break.
 +
 +      * numbers.texi (Random Numbers): Use @minus{}.
 +      (Math Functions): Use @minus{}.
 +
 +      * intro.texi (Acknowledgements): Avoid line breaks before middle
 +      initials.
 +
 +2007-03-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * errors.texi (Standard Errors): Add an index entry.
 +
 +2007-03-19  Richard Stallman  <rms@gnu.org>
 +
 +      * os.texi (Recording Input): recent-keys now gives 300 keys.
 +
 +2007-03-12  Glenn Morris  <rgm@gnu.org>
 +
 +      * os.texi: Replace "daylight savings" with "daylight saving"
 +      throughout.
 +
 +2007-03-05  Richard Stallman  <rms@gnu.org>
 +
 +      * variables.texi (File Local Variables): Update
 +      enable-local-variables values.
 +
 +2007-03-04  Richard Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Control Parsing): Minor clarification.
 +
 +      * strings.texi (Formatting Strings): Clarify width, precision, flags.
 +
 +      * sequences.texi (Sequence Functions): Move string-bytes away,
 +      add xref.
 +
 +      * nonascii.texi (Text Representations): Move string-bytes here.
 +
 +      * modes.texi (Major Mode Conventions): Fundamental mode is exception.
 +
 +      * minibuf.texi (Basic Completion): Minor clarification.
 +
 +      * markers.texi (The Mark): Clarify existence vs activation of mark.
 +      Other cleanup.
 +
 +      * display.texi (Finding Overlays): Write better example.
 +
 +      * compile.texi (Eval During Compile): Clarify putting macros
 +      in eval-when-compile.
 +
 +2007-02-25  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 +
 +      * loading.texi (How Programs Do Loading): Fix anchor position at
 +      load-read-function definition doc. (tiny change)
 +
 +2007-02-21  Kim F. Storm  <storm@cua.dk>
 +
 +      * strings.texi (Text Comparison): Mention that assoc-string
 +      converts symbols to strings before testing.
 +
 +2007-02-17  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Bindat Spec): Vector types can have optional
 +      element type.
 +      (Bindat Examples): Fix example.  Add vector with element type.
 +
 +2007-02-16  Andreas Schwab  <schwab@suse.de>
 +
 +      * strings.texi (Formatting Strings): Document '+' flag.
 +
 +2007-02-15  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * strings.texi (Modifying Strings): Clarify that `clear-string'
 +      always converts the string to unibyte.
 +
 +2007-02-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Glyphs): Add make-glyph-code, glyph-char, glyph-face.
 +      Rewrite glyph code description to refer to these functions.
 +      Remove details of encoding face number and char into integer code.
 +
 +2007-02-03  Alan Mackenzie  <acm@muc.de>
 +
 +      * loading.texi (Hooks for Loading): Make the description of
 +      `eval-after-load' more detailed, and amend the description of
 +      after-load-alist, in accordance with changes from 2006-05.
 +
 +2007-02-03  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * modes.texi (Defining Minor Modes): Document that a :require
 +      keyword or similar may be required to make saved customization
 +      variables work.
 +
 +2007-02-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * elisp.texi (Top): Make the detailed menu headers compliant with
 +      Texinfo guidelines and with what texnfo-upd.el expects.  Add
 +      comments to prevent people from inadvertently modifying the key
 +      parts needed by `texinfo-multiple-files-update'.
 +
 +2007-02-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * elisp.texi (Top): Update the top-level menus.
 +
 +      * syntax.texi (Categories): Add index entries.
 +
 +2007-02-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * display.texi (Attribute Functions): Fix name and description of
 +      the UNDERLINE arg of `set-face-underline-p'.
 +
 +2007-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * elisp.texi (Top): Add "Standard Errors", "Standard Buffer-Local
 +      Variables", and "Standard Keymaps" to the detailed menu.
 +
 +      * variables.texi (Future Local Variables): Add index entry.
 +
 +2007-01-28  Richard Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Clarify the tip about macros
 +      that define a function or a variable.
 +
 +      * files.texi (File Attributes): UID and GID can be floats.
 +      (Magic File Names): Explain why deferring all operations to
 +      the standard handler does not work.
 +
 +2007-01-23  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * backups.texi (Reverting): Use "buffer" instead of "file"
 +      when talking about major and minor modes.
 +
 +2007-01-21  Richard Stallman  <rms@gnu.org>
 +
 +      * help.texi (Documentation): Add xref to Documentation Tips.
 +
 +2007-01-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * tips.texi (Coding Conventions): Fix typos.
 +
 +2007-01-05  Richard Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): Fix previous change.
 +
 +2007-01-03  Richard Stallman  <rms@gnu.org>
 +
 +      * customize.texi (Variable Definitions, Customization Types):
 +      Don't use * in doc string for defcustom.
 +
 +2007-01-02  Richard Stallman  <rms@gnu.org>
 +
 +      * variables.texi (Variable Aliases): Clarify that aliases vars
 +      always have the same value.
 +
 +      * processes.texi (Bindat Spec): Fix Texinfo usage.
 +
 +      * modes.texi (Defining Minor Modes): Explain effect of command
 +      defined with define-global-minor-mode on new buffers.
 +
 +2006-12-30  Kim F. Storm  <storm@cua.dk>
 +
 +      * keymaps.texi (Tool Bar): Describe `grow-only' value of
 +      `auto-resize-tool-bars'.
 +
 +2006-12-30  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Active Keymaps): Fix previous change.
 +
 +2006-12-30  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * keymaps.texi (Active Keymaps): Make xref to lookup-key.
 +
 +2006-12-30  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Bindat Spec): Clarify using field names in
 +      length specifications.
 +
 +2006-12-29  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Bindat Spec): Explain eval forms and lengths better.
 +      Add count and index variables for eval forms in repeat blocks.
 +
 +2006-12-24  Richard Stallman  <rms@gnu.org>
 +
 +      * customize.texi (Variable Definitions): Document
 +      new name custom-add-frequent-value.
 +
 +2006-12-19  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Misc Events): User signals now result in sigusr1
 +      and sigusr2 events which are handled through special-event-map.
 +      (Special Events): User signals and drag-n-drop are special.
 +
 +2006-12-17  Richard Stallman  <rms@gnu.org>
 +
 +      * loading.texi (Named Features): Explain subfeatures better.
 +
 +      * customize.texi: Use "option" only for user options.
 +      For the keyword values inside defcustom etc, say "keywords".
 +      For :options value's elements, say "elements".
 +      :group should not be omitted.
 +
 +      * syntax.texi (Parsing Expressions): Split up node.
 +      (Motion via Parsing, Position Parse, Parser State)
 +      (Low-Level Parsing, Control Parsing): New subnodes.
 +      (Parser State): Document syntax-ppss-toplevel-pos.
 +
 +      * positions.texi (List Motion): Punctuation fix.
 +
 +      * files.texi (File Name Completion): Document PREDICATE arg
 +      to file-name-completion.
 +
 +2006-12-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * internals.texi (Building Emacs, Writing Emacs Primitives):
 +      Add index entries.
 +
 +2006-12-11  Richard Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Font Lock Basics): Explain how nil for font-lock-defaults
 +      affects face menu.  Explain how to make it non-nil without enabling
 +      any fontification.
 +
 +2006-12-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * modes.texi (Font Lock Basics): Document nil value of
 +      font-lock-defaults.
 +
 +2006-12-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * abbrevs.texi (Defining Abbrevs): Mention `define-abbrev' 'force
 +      value for system-flag argument.  Abbrev tables may not be empty
 +      when major modes are loaded.
 +
 +2006-12-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (maintainer-clean): Partially revert last
 +      change; delete "elisp-?" and "elisp-??" instead of "elisp-*"
 +      to protect elisp-covers.texi.
 +
 +2006-12-07  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * makefile.w32-in (maintainer-clean): Depend on `distclean'.
 +      Don't remove elisp* info files; they are already deleted by the
 +      `clean' and `distclean' targets, and they are in the $(infodir)
 +      directory, not the current one.
 +
 +2006-12-04  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Misc Events): Update signal events.
 +      (Event Examples): Add signal example.
 +
 +2006-11-29  Richard Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Visibility of Frames): Explain visible windows
 +      can be covered by others.  Add xref for raise-frame.
 +
 +2006-11-28  Richard Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Regexp Special): Update when ^ is special.
 +
 +2006-11-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * customize.texi (Customization, Common Keywords)
 +      (Group Definitions, Variable Definitions, Composite Types)
 +      (Type Keywords, Customization Types): Add index entries for
 +      various customization keywords.
 +
 +2006-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Multiline Font Lock): Rephrase some parts for clarity.
 +
 +2006-11-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Window System Selections): Remove clipboard from
 +      description of selection-coding-system.
 +
 +2006-11-06  Richard Stallman  <rms@gnu.org>
 +
 +      * lists.texi (List Variables): Document COMPARE-FN.
 +
 +      * keymaps.texi: Avoid use of "binding" to mean a relation;
 +      use it only to refer to the meaning associated with a key.
 +      (Keymaps): Change menu node description.
 +
 +      * elisp.texi (Top): Change menu node description.
 +
 +      * display.texi (Managing Overlays): Document overlay-recenter.
 +
 +2006-10-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * Makefile.in: Use relative paths to avoid advertising filesystem
 +      contents during compilation.
 +
 +2006-10-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Event Input Misc): Update unread-command-events.
 +
 +2006-10-23  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * lists.texi (Sets And Lists): Fix typos.
 +
 +2006-10-18  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * control.texi (Processing of Errors): Use @var for an argument,
 +      not @code.
 +
 +2006-10-16  Richard Stallman  <rms@gnu.org>
 +
 +      * edebug.texi (Edebug Recursive Edit): Minor cleanup.
 +
 +      * keymaps.texi (Format of Keymaps): Show all the keymap element
 +      patterns that result from menu items.
 +      (Key Lookup): Minor cleanups.
 +
 +      * modes.texi (Precalculated Fontification): Don't say that
 +      not setting font-lock-defaults avoids loading font-lock.
 +
 +      * help.texi (Documentation): Move xref to Emacs Manual here.
 +      (Documentation Basics): From here.
 +      Also doc emacs-lisp-docstring-fill-column.
 +
 +      * elisp.texi: Update version and ISBN.
 +
 +      * commands.texi (Interactive Call): Clarify KEYS arg to
 +      call-interactively is a vector.
 +      (Command Loop Info): Delete anchor in this-command-keys.
 +      Add anchor in this-command-keys-vector.
 +      (Recursive Editing): Document how recursive-edit
 +      handles the current buffer.
 +
 +2006-10-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * frames.texi (Frame Titles): %c and %l are ignored in
 +      frame-title-format.
 +
 +2006-10-11  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Key Sequences): Clarify use of kbd.
 +
 +2006-10-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * lists.texi (Sets And Lists): Add memql.
 +
 +2006-10-03  Richard Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Char Classes): Document :multibyte: and :unibyte:.
 +      Clarify :ascii: and :nonascii:.
 +
 +2006-09-29  Juri Linkov  <juri@jurta.org>
 +
 +      * modes.texi (%-Constructs): Reorder coding systems in the
 +      documentation of %z to the real order displayed in the modeline.
 +
 +2006-09-25  Richard Stallman  <rms@gnu.org>
 +
 +      * os.texi (Timers): Describe timer-max-repeats.
 +
 +2006-09-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * os.texi (Timers): Mention with-local-quit.
 +
 +2006-09-24  Richard Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Searching and Matching): Mention property search.
 +
 +      * commands.texi (Command Loop Info): Explain how read-event affects
 +      this-command-keys.
 +
 +2006-09-20  Richard Stallman  <rms@gnu.org>
 +
 +      * os.texi (Timers): Clarify about REPEAT when timer is delayed.
 +
 +      * windows.texi (Window Start): Minor cleanups.
 +
 +2006-09-20  Kim F. Storm  <storm@cua.dk>
 +
 +      * windows.texi (Window Start): pos-visible-in-window-p allows
 +      specifying t for position to mean "end of window".
 +      Add window-line-height.
 +
 +      * anti.texi (Antinews): Mention window-line-height.
 +
 +2006-09-19  David Kastrup  <dak@gnu.org>
 +
 +      * keymaps.texi (Searching Keymaps): Small clarification.
 +
 +2006-09-18  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Creating Keymaps): Explain that keymap prompt strings
 +      cause keyboard menus.
 +      (Menu Keymaps): Likewise.
 +      (Defining Menus, Keyboard Menus): Clarify.
 +
 +      * text.texi (Fields): Clarify explanation of constrain-to-field.
 +
 +2006-09-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * variables.texi (Tips for Defining): Fix a typo.
 +
 +2006-09-15  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Remapping Commands, Searching Keymaps)
 +      (Active Keymaps): Clean up previous change.
 +
 +2006-09-15  Jay Belanger  <belanger@truman.edu>
 +
 +      * gpl.texi: Replace "Library Public License" by "Lesser Public
 +      License" throughout.
 +
 +2006-09-15  David Kastrup  <dak@gnu.org>
 +
 +      * keymaps.texi (Active Keymaps): Adapt description to use
 +      `get-char-property' instead `get-text-property'.  Explain how
 +      mouse events change this.  Explain the new optional argument of
 +      `key-binding' and its mouse-dependent lookup.
 +      (Searching Keymaps): Adapt description similarly.
 +      (Remapping Commands): Explain the new optional argument of
 +      `command-remapping'.
 +
 +2006-09-14  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Searching Keymaps): Clarification.
 +      (Active Keymaps): Refer to Searching Keymaps instead of duplication.
 +
 +2006-09-13  Richard Stallman  <rms@gnu.org>
 +
 +      * objects.texi (Character Type): Node split.
 +      Add xref to Describing Characters.
 +      (Basic Char Syntax, General Escape Syntax)
 +      (Ctl-Char Syntax, Meta-Char Syntax): New subnodes.
 +
 +2006-09-11  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Display Table Format): Wording clarification.
 +      (Glyphs): Clarifications.
 +
 +2006-09-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keymaps.texi (Active Keymaps): Mention that key-binding checks
 +      local maps.
 +
 +2006-09-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Forcing Redisplay): Document return value of
 +      function redisplay.
 +
 +2006-09-09  Richard Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Window Hooks): Explain limits of
 +      window-scroll-functions.
 +
 +      * display.texi (Fringe Indicators): Update for last change in
 +      indicate-buffer-boundaries.
 +
 +2006-09-08  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Bindat Spec): Suggest names ending in -bindat-spec.
 +
 +2006-09-06  Kim F. Storm  <storm@cua.dk>
 +
 +      * frames.texi (Display Feature Testing): display-mm-dimensions-alist.
 +
 +      * windows.texi (Window Start): Update pos-visible-in-window-p.
 +
 +2006-09-04  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Accepting Output): Explain SECONDS=0 for
 +      accept-process-output.
 +
 +      * os.texi (Idle Timers): Explain why timer functions should not
 +      loop until (input-pending-p).
 +
 +2006-09-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (usermanualdir): New variable.
 +      (elisp.dvi): Use it.
 +
 +2006-09-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * buffers.texi (Buffer Modification): Fix last change.
 +
 +2006-09-01  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * buffers.texi (Buffer Modification): Document
 +      buffer-chars-modified-tick.
 +
 +2006-08-31  Richard Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Syntactic Font Lock): Mention specific faces once again.
 +
 +2006-08-31  Richard Bielawski  <RBielawski@moneygram.com>  (tiny change)
 +
 +      * modes.texi (Syntactic Font Lock):
 +      Mention font-lock-syntactic-face-function
 +      instead of specific faces.
 +
 +2006-08-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Images): Add xrref to display-images-p.
 +
 +2006-08-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * nonascii.texi (Lisp and Coding Systems): Fix description of
 +      detect-coding-region.
 +
 +2006-08-27  Michael Olson  <mwolson@gnu.org>
 +
 +      * processes.texi (Transaction Queues): Remove stray quote
 +      character.
 +
 +2006-08-25  Richard Stallman  <rms@gnu.org>
 +
 +      * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value.
 +      Add xref.
 +
 +2006-08-24  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * os.texi (Timers): Avoid waiting inside timers.
 +
 +2006-08-21  Lute Kamstra  <lute@gnu.org>
 +
 +      * Makefile.in: Use ../man/texinfo.tex to build elisp.dvi.
 +
 +2006-08-20  Richard Stallman  <rms@gnu.org>
 +
 +      * os.texi (Idle Timers): New node, split out from Timers.
 +      Document current-idle-time.
 +      * commands.texi (Reading One Event): Update xref.
 +      * elisp.texi (Top): Update subnode menu.
 +
 +2006-08-16  Richard Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Extended Menu Items): Show format of cached
 +      bindings in extended menu items.
 +
 +      * customize.texi (Variable Definitions): Explain when the
 +      standard value expression is evaluated.
 +
 +2006-08-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * commands.texi (Reading One Event): Explain idleness in
 +      `read-event'.
 +
 +2006-08-12  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * text.texi (Near Point): Say "cursor" not "terminal cursor".
 +      (Commands for Insertion): Removed split-line since it's not
 +      relevant for Lisp programming.
 +      (Yank Commands): Rewrite introduction.
 +      (Undo): Clarify.
 +      (Maintaining Undo): Clarify.  Document undo-ask-before-discard.
 +      (Filling): Remove redundant comment.  Clarify return value of
 +      current-justification.
 +      (Margins): Minor clarifications.
 +      (Adaptive Fill): Update default value of adaptive-fill-regexp.
 +      (Sorting): Update definition of sort-lines.
 +      (Columns): Clarify behavior of sort-columns.
 +      (Indent Tabs): Link to Tab Stops in Emacs manual.
 +      (Special Properties): Clarify.
 +      (Clickable Text): Mention Buttons package.
 +
 +2006-08-12  Kevin Ryde  <user42@zip.com.au>
 +
 +      * os.texi (Time Parsing): Add %z to description of
 +      format-time-string, as per docstring.  Add cross reference to
 +      glibc manual for strftime.
 +
 +2006-08-08  Richard Stallman  <rms@gnu.org>
 +
 +      * modes.texi: Clean up wording in previous change.
 +
 +2006-08-07  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * modes.texi (Hooks): Clarify.
 +      (Major Mode Basics): Mention define-derived-mode explicitly.
 +      (Major Mode Conventions): Rebinding RET is OK for some modes.
 +      Mention change-major-mode-hook and after-change-major-mode-hook.
 +      (Example Major Modes): Moved to end of Modes section.
 +      (Mode Line Basics): Clarify.
 +      (Mode Line Data): Mention help-echo and local-map in strings.
 +      Explain reason for treatment of non-risky variables.
 +      (Properties in Mode): Clarify.
 +      (Faces for Font Lock): Add font-lock-negation-char-face.
 +
 +2006-08-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * strings.texi (Formatting Strings): Warn against arbitrary
 +      strings as first arg to `format'.
 +
 +2006-07-31  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * text.texi (Clickable Text): Mention `help-echo' text property.
 +      Update intro, examples and associated explanations.
 +
 +2006-07-31  Richard Stallman  <rms@gnu.org>
 +
 +      * commands.texi: Update xrefs.
 +      (Event Mod): New node, cut out from old Translating Input.
 +
 +      * maps.texi: Update xrefs.
 +
 +      * keymaps.texi (Translation Keymaps): New node.
 +      Update xrefs from Translating Input to Translation Keymaps.
 +
 +      * elisp.texi (Top): Update subnode menu.
 +
 +      * display.texi (Face Functions): Fix explanations of FRAME=t or nil.
 +
 +      * os.texi (System Interface): Fix menu descriptions of some nodes.
 +      (Translating Input): Node deleted.
 +
 +2006-07-31  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * modes.texi (Minor Mode Conventions): Update xref for add-to-list.
 +
 +      * lists.texi (Sets And Lists): Likewise.
 +
 +2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * text.texi (Fields): Mention POS
 +      requirement when narrowing is in effect.
 +
 +2006-07-28  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Face Attributes): Simplify wording.
 +      (Attribute Functions): Clarify meaning of new-frame default
 +      attribute settings.
 +
 +      * customize.texi (Common Keywords): Document how to use
 +      :package-version in a package not in Emacs.
 +
 +2006-07-28  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Reading One Event): Fix last change.
 +
 +2006-07-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * commands.texi (Reading One Event): Document SECONDS argument for
 +      read-event, read-char, and read-char-exclusive.
 +
 +2006-07-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Multiline Font Lock): Can't use jit-lock-defer-multiline
 +      to ensure correct identification.
 +
 +2006-07-24  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Clickable Text): Clarify.
 +
 +      * sequences.texi (Vector Functions): Delete duplicate xref.
 +
 +      * objects.texi (Function Type): Clarify.
 +
 +      * modes.texi (Keymaps and Minor Modes): List punct chars for minor
 +      modes.
 +
 +      * lists.texi (List Variables): New node.
 +      Material moved from other nodes.
 +
 +      * variables.texi (Setting Variables): add-to-list and
 +      add-to-ordered-list moved to List Variables node.
 +
 +2006-07-23  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * text.texi (Links and Mouse-1):
 +      For mouse-on-link-p, expand on arg POS.
 +
 +2006-07-21  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Forcing Redisplay): Don't mention systems which
 +      don't support sub-second timers for redisplay-preemption-period.
 +
 +      * os.texi (Terminal Output): Clarify text vs graphical terminal.
 +
 +2006-07-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frames.texi (Input Focus): Document that focus-follows-mouse has
 +      no effect on MS-Windows.
 +
 +2006-07-18  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Forcing Redisplay): Cleanups in previous change.
 +
 +      * processes.texi (Low-Level Network): Make menu more convenient.
 +
 +2006-07-18  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Forcing Redisplay): redisplay-preemption-period
 +      only used on window systems.  Add xref to Terminal Output.
 +
 +      * os.texi (Terminal Output): baud-rate only controls preemption on
 +      non-window systems.  Add xref to Forcing Redisplay.
 +
 +      * processes.texi (Low-Level Network): Rename node "Make Network"
 +      to "Network Processes".
 +
 +2006-07-18  Karl Berry  <karl@gnu.org>
 +
 +      * variables.texi, functions.texi, customize.texi, loading.texi:
 +      * edebug.texi, minibuf.texi: Fix page breaks through chapter 20.
 +
 +2006-07-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * commands.texi (Waiting): Document batch-mode sit-for behavior.
 +
 +2006-07-17  Richard Stallman  <rms@gnu.org>
 +
 +      * eval.texi, elisp.texi, text.texi: Use real doublequote inside menus.
 +      Put period and comma inside quotes.
 +
 +      * loading.texi, markers.texi: Use real doublequote inside menus.
 +
 +      * windows.texi: Put point and comma inside quotes.
 +      (Textual Scrolling): Use @samp for error message.
 +
 +      * variables.texi, tips.texi, syntax.texi, symbols.texi:
 +      * strings.texi, streams.texi, processes.texi, os.texi:
 +      * objects.texi, numbers.texi, modes.texi, minibuf.texi:
 +      * lists.texi, keymaps.texi, intro.texi, hash.texi, internals.texi:
 +      * gpl.texi, functions.texi, files.texi, frames.texi, doclicense.texi:
 +      * display.texi, control.texi, commands.texi, buffers.texi, anti.texi:
 +      Put point and comma inside quotes.
 +
 +      * control.texi (Processing of Errors): Add command-error-function.
 +
 +      * variables.texi (File Local Variables): Clarify that
 +      file local variables make buffer-local bindings.
 +
 +      * modes.texi (Syntactic Font Lock): Give default for
 +      font-lock-syntax-table.
 +
 +2006-07-17  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * text.texi (Special Properties): Clean up previous change.
 +
 +2006-07-16  Karl Berry  <karl@gnu.org>
 +
 +      * objects.texi, numbers.texi, strings.texi, lists.texi, hash.texi:
 +      * control.texi: Fix bad page breaks through chapter 10 (control).
 +
 +      * anti.texi (Antinews): Reorder face-attribute fns to avoid
 +      underfull hbox.
 +
 +2006-07-15  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * text.texi (Special Properties): Describe fontified text property
 +      in relation to a character (not text).
 +
 +2006-07-15  Kim F. Storm  <storm@cua.dk>
 +
 +      * maps.texi (Standard Keymaps): Add xref for minibuffer maps.
 +      Add apropos-mode-map, custom-mode-map, esc-map, global-map,
 +      grep-mode-map, help-map, help-mode-map, kmacro-map, and tool-bar-map.
 +
 +      * anti.texi (Antinews): Mention redisplay function.
 +      The kbd macro existed, but was not documented, before 22.x.
 +      Function pos-visible-in-window-p is not new in 22.x, just enhanced.
 +
 +2006-07-14  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * display.texi (Displaying Messages): Add anchor.
 +
 +      * frames.texi (Dialog Boxes): Use it.
 +
 +2006-07-12  Richard Stallman  <rms@gnu.org>
 +
 +      * objects.texi (Frame Type): Explain nature of frames better.
 +
 +      * frames.texi (Frames): Explain nature of frames better.
 +
 +2006-07-12  Ken Manheimer  <ken.manheimer@gmail.com>
 +
 +      * tips.texi (Coding Conventions): Explain why use cl at compile time.
 +
 +2006-07-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * frames.texi (Window System Selections): Mention scrap support for Mac.
 +      Default value of x-select-enable-clipboard is t on Mac.
 +
 +      * os.texi (Getting Out): Suspending is not allowed on Mac, either.
 +
 +2006-07-11  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Forcing Redisplay): Add `redisplay' function.
 +      Don't mention (sit-for -1) -- use (redisplay t) instead.
 +
 +      * commands.texi (Waiting): (sit-for -1) is no longer special.
 +      (sit-for 0) is equivalent to (redisplay).
 +      Iconifying/deiconifying no longer makes sit-for return.
 +
 +2006-07-10  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * display.texi (Buttons): Fix typo.
 +
 +      * index.texi, elisp.texi (New Symbols): Comment node out.
 +
 +2006-07-09  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Truncation): Clean up previous change.
 +
 +2006-07-08  Richard Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Interactive Call): Use 3 as prefix in example
 +      for execute-extended-command.
 +
 +      * display.texi (Attribute Functions): Move paragraph about
 +      compatibility with Emacs < 21.
 +
 +2006-07-09  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Refresh Screen): Clarify force-window-update.
 +      (Truncation): "Normally" indicated by fringe arrows.
 +
 +2006-07-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * windows.texi (Textual Scrolling, Resizing Windows):
 +      * variables.texi (Constant Variables):
 +      * text.texi (Buffer Contents, Deletion, Changing Properties)
 +      (Property Search, Special Properties, Sticky Properties)
 +      (Links and Mouse-1, Fields, Change Hooks):
 +      * syntax.texi (Syntax Table Functions, Parsing Expressions)
 +      (Categories):
 +      * symbols.texi (Other Plists):
 +      * streams.texi (Output Variables):
 +      * processes.texi (Input to Processes, Query Before Exit):
 +      * positions.texi (Word Motion, Text Lines, List Motion):
 +      * os.texi (Init File, System Environment, Sound Output)
 +      (Session Management):
 +      * nonascii.texi (Text Representations, Character Sets)
 +      (Chars and Bytes, Locales):
 +      * modes.texi (Defining Minor Modes, Header Lines):
 +      * minibuf.texi (Minibuffer Contents):
 +      * markers.texi (Information from Markers):
 +      * lists.texi (List Elements, Building Lists, Association Lists):
 +      * keymaps.texi (Tool Bar):
 +      * hash.texi (Creating Hash, Hash Access, Defining Hash, Other Hash):
 +      * functions.texi (What Is a Function, Mapping Functions):
 +      * frames.texi (Creating Frames, Parameter Access, Pointer Shape)
 +      (Color Names, Text Terminal Colors, Display Feature Testing):
 +      * files.texi (Visiting Functions, File Name Components)
 +      (Unique File Names, Contents of Directories):
 +      * display.texi (Forcing Redisplay, Displaying Messages)
 +      (Temporary Displays, Font Selection, Auto Faces)
 +      (Font Lookup, Fringe Indicators, Display Margins)
 +      (Image Descriptors, Showing Images, Image Cache, Button Types)
 +      (Making Buttons, Manipulating Buttons, Button Buffer Commands)
 +      (Display Table Format, Glyphs):
 +      * control.texi (Iteration):
 +      * commands.texi (Command Loop Info, Adjusting Point):
 +      * backups.texi (Making Backups, Auto-Saving):
 +      Remove @tindex entries.
 +
 +2006-07-07  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Fringe Cursors): Fix typo.
 +      (Customizing Bitmaps): Fix define-fringe-bitmap entry.
 +      (Overlay Arrow): Default is overlay-arrow fringe indicator.
 +
 +2006-07-05  Richard Stallman  <rms@gnu.org>
 +
 +      * text.texi (Buffer Contents): Add example of text props
 +      in result of buffer-substring.
 +      (Text Properties): Explain better about use of specific property names.
 +      (Property Search): Some cleanups; reorder some functions.
 +
 +      * keymaps.texi (Changing Key Bindings): Cleanup.
 +      Add xref to Key Binding Conventions.
 +
 +      * display.texi (Attribute Functions): Add examples for
 +      face-attribute-relative-p.
 +
 +      * tips.texi (Coding Conventions): Cleanup last change.
 +
 +2006-07-05  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi: Use @fonttextsize 10pt, a la emacs.texi.
 +      Remove @setchapternewpage odd.
 +      Result is 1013 pages, down from 1100.
 +
 +      * anti.texi, customize.texi, display.texi, internals.texi:
 +      * minibuf.texi, modes.texi, tips.texi:
 +      Fix overfull/underfull boxes.
 +
 +2006-07-05  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * edebug.texi (Instrumenting):
 +      Add Edebug-specific findex for eval-buffer.
 +      * loading.texi (Loading):
 +      Replace eval-current-buffer with eval-buffer.
 +
 +2006-06-30  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * locals.texi (Standard Buffer-Local Variables): Update the list
 +      of variables.
 +
 +2006-06-26  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * files.texi (File Name Completion): Point user to the node
 +      "Reading File Names".
 +
 +2006-06-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Contents of Directories): Document case-insensitive
 +      behavior on respective filesystems.
 +
 +      * objects.texi (Character Type): Document that Emacs signals an
 +      error for unsupported Unicode characters specified as \uNNNN.
 +
 +2006-06-19  Richard Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Bindat Spec): Clarify previous change.
 +
 +2006-06-16  Richard Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Better explain conventions
 +      for definition constructs.
 +
 +      * text.texi (Special Properties): String value of `read-only'
 +      serves as the error message.
 +
 +      * objects.texi (Character Type): Clarify prev. change.
 +      (Non-ASCII in Strings): Mention \u and \U.
 +
 +      * commands.texi (Using Interactive): Explain problem of
 +      markers, etc., in command-history.
 +
 +2006-06-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Waiting): Negative arg to sit-for forces
 +      redisplay even if input is pending.
 +
 +      * display.texi (Forcing Redisplay): Use (sit-for -1) to force a
 +      redisplay.  Remove incorrect example of binding redisplay-dont-pause
 +      around (sit-for 0).
 +
 +2006-06-13  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Forcing Redisplay): Clarify previous change.
 +
 +2006-06-13  Romain Francoise  <romain@orebokech.com>
 +
 +      * display.texi (Forcing Redisplay): Fix typo.
 +
 +2006-06-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Forcing Redisplay): Add redisplay-preemption-period.
 +
 +2006-06-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Coding Conventions): Add `@end itemize'.
 +
 +2006-06-10  Richard Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Explain use of coding systems
 +      to ensure one decoding for strings.
 +
 +2006-06-09  Aidan Kehoe  <kehoea@parhasard.net>
 +
 +      * objects.texi (Character Type): Describe the \uABCD and \U00ABCDEF
 +      syntax.
 +
 +2006-06-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * display.texi (Font Selection): Remove description of
 +      clear-face-cache.
 +
 +      * compile.texi (Eval During Compile): Fix a typo.  Add index
 +      entries for possible uses of eval-when-compile.
 +
 +2006-06-04  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * display.texi (Abstract Display): Fix typo.
 +
 +2006-06-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * minibuf.texi (Minibuffer History) <history-add-new-input>:
 +      Reword variable's description.
 +
 +2006-06-01  Richard Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Splitting Windows): Clarify splitting nonselected
 +      window.
 +
 +2006-05-31  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuf.texi (Minibuffer History): Add history-add-new-input.
 +
 +2006-05-30  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Line Height): Fix errors in description of
 +      default line height and line-height properyty.
 +
 +      * nonascii.texi (Default Coding Systems): Further clarification.
 +
 +2006-05-29  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * internals.texi (Pure Storage): Mention that an overflow in pure
 +      space causes a memory leak.
 +      (Garbage Collection): If there was an overflow in pure space,
 +      `garbage-collect' returns nil.
 +
 +2006-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * nonascii.texi (Default Coding Systems): Fix it some more.
 +
 +2006-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * nonascii.texi (Default Coding Systems): Fix last change.
 +
 +2006-05-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * nonascii.texi (find-operation-coding-system): Describe the new
 +      argument format (FILENAME . BUFFER).
 +
 +2006-05-28  Richard Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Better explain reasons not to
 +      advise other packages or use `eval-after-load'.
 +
 +2006-05-29  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Bindat Functions): Rename `pos' and `raw-data' to
 +      `bindat-idx' and `bindat-raw' for clarity.
 +
 +2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * processes.texi (Bindat Spec): Expand on `repeat' handler.
 +
 +      * display.texi (Display): Add "Abstract Display" to menu.
 +      (Abstract Display, Abstract Display Functions)
 +      (Abstract Display Example): New nodes.
 +      * elisp.texi (Top): Add "Abstract Display" to menu.
 +
 +2006-05-27  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keymaps.texi (Key Sequences): Link to input events definition.
 +      (Format of Keymaps): Delete material duplicated in Keymap Basics.
 +
 +      * files.texi (Changing Files): Document updated argument list for
 +      copy-file.
 +
 +2006-05-27  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * processes.texi (Bindat Functions): Explain term "total length".
 +      Use it in bindat-length and bindat-pack descriptions.
 +
 +2006-05-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Advise against using
 +      eval-after-load in packages.  Add an index entry.
 +
 +2006-05-25  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuf.texi (Text from Minibuffer): Undocument keep-all.
 +
 +      * modes.texi (%-Constructs): Add %e, %z, %Z.
 +
 +2006-05-25  Richard Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode menu.
 +
 +      * keymaps.texi (Keymap Basics): New node, split out of Key Sequences.
 +      (Keymaps): Update menu.
 +
 +2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keymaps.texi (Key Sequences): Some clarifications.
 +
 +2006-05-25  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * processes.texi (Bindat Functions): Say "unibyte string"
 +      explicitly for bindat-unpack and bindat-pack descriptions.
 +      (Bindat Examples): Don't call `string-make-unibyte' in example.
 +
 +2006-05-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keymaps.texi (Key Sequences): Renamed from Keymap Terminology.
 +      Explain string and vector representations of key sequences
 +
 +      * keymaps.texi (Changing Key Bindings):
 +      * commands.texi (Interactive Codes, Interactive Codes):
 +      * help.texi (Describing Characters): Refer to it.
 +
 +2006-05-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Pointer Shape): @end table -> @end defvar.
 +
 +2006-05-22  Richard Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode menus.
 +
 +      * frames.texi (Pointer Shape): Node renamed from Pointer Shapes.
 +      Contents rewritten; material from old Pointer Shape node moved here.
 +
 +      * display.texi (Pointer Shape): Node deleted.
 +      (Image Descriptors): Minor cleanup.
 +
 +2006-05-21  Richard Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Parsing Expressions): Update info on which STATE
 +      elements are ignored.
 +
 +2006-05-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * hooks.texi (Standard Hooks): Correct typo.
 +
 +      * gpl.texi (GPL): ifinfo -> ifnottex.
 +
 +2006-05-19  Michael Ernst  <mernst@alum.mit.edu>  (tiny change)
 +
 +      * searching.texi (Simple Match Data): Warn about match data being
 +      set anew by every search.
 +
 +2006-05-17  Richard Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Minibuffer History): Clarify.
 +
 +      * searching.texi (Regexp Special): Clarify nested regexp warning.
 +
 +2006-05-16  Kim F. Storm  <storm@cua.dk>
 +
 +      * minibuf.texi (Minibuffer History): Update add-to-history.
 +
 +2006-05-15  Oliver Scholz  <epameinondas@gmx.de>  (tiny change)
 +
 +      * nonascii.texi (Explicit Encoding): Fix
 +      typo (encoding<->decoding).
 +
 +2006-05-14  Richard Stallman  <rms@gnu.org>
 +
 +      * buffers.texi (Creating Buffers): Cleanup.
 +
 +      * files.texi (Visiting Functions): Rewrite in find-file-noselect.
 +
 +2006-05-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * buffers.texi (Current Buffer): Document that with-temp-buffer
 +      disables undo.
 +
 +      * os.texi (Terminal-Specific): More accurate description of how
 +      Emacs searches for the terminal-specific libraries.
 +
 +2006-05-12  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to
 +      emacs-xtra to @inforef's.
 +
 +      * text.texi (Undo): Document that undo is turned off in buffers
 +      whose names begin with a space.
 +
 +      * buffers.texi (Buffer Names): Add index entries for buffers whose
 +      names begin with a space.
 +      (Creating Buffers): Document that undo is turned off in buffers
 +      whose names begin with a space.
 +
 +      * files.texi (Visiting Functions, Reading from Files)
 +      (Saving Buffers): Mention code and EOL conversions by file I/O
 +      primitives and subroutines.
 +
 +      * nonascii.texi (Lisp and Coding Systems): Document
 +      coding-system-eol-type.  Add index entries for eol conversion.
 +
 +      * display.texi (Defining Faces): Mention `mac', and add an xref to
 +      where window-system is described.
 +
 +2006-05-10  Richard Stallman  <rms@gnu.org>
 +
 +      * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules.
 +
 +2006-05-10  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * variables.texi (File Local Variables): Recommend to quote lambda
 +      expressions in safe-local-variable property.
 +
 +2006-05-09  Richard Stallman  <rms@gnu.org>
 +
 +      * variables.texi (File Local Variables): Document
 +      safe-local-eval-forms and safe-local-eval-function.
 +
 +2006-05-07  Kim F. Storm  <storm@cua.dk>
 +
 +      * minibuf.texi (Minibuffer History): Remove keep-dups arg
 +      from add-to-history.
 +
 +2006-05-07  Romain Francoise  <romain@orebokech.com>
 +
 +      * commands.texi (Event Input Misc):
 +      * compile.texi (Eval During Compile):
 +      * internals.texi (Buffer Internals):
 +      * minibuf.texi (Initial Input):
 +      * nonascii.texi (Scanning Charsets):
 +      * numbers.texi (Comparison of Numbers):
 +      * windows.texi (Textual Scrolling, Vertical Scrolling):
 +      Fix various typos.
 +
 +2006-05-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * hooks.texi (Standard Hooks): Replace inforef to emacs-xtra by
 +      conditional xref's to either emacs or emacs-xtra, depending on
 +      @iftex/@ifnottex.
 +
 +      * minibuf.texi (Minibuffer History): Document add-to-history.
 +
 +2006-05-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * internals.texi (Pure Storage): Mention the pure overflow message
 +      at startup.
 +
 +2006-05-05  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
 +
 +      * keymaps.texi (Active Keymaps): Fix pseudo-Lisp syntax.
 +      (Searching Keymaps): Fix pseudo-Lisp description of keymap
 +      search.
 +
 +2006-05-01  Richard Stallman  <rms@gnu.org>
 +
 +      * intro.texi (nil and t): Clarify.
 +
 +      * variables.texi (File Local Variables): Suggest using booleanp.
 +
 +2006-05-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * objects.texi (Type Predicates): Fix typos.
 +
 +2006-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * intro.texi (nil and t): Add booleanp.
 +
 +      * objects.texi (Type Predicates): Add links for booleanp and
 +      string-or-null-p.
 +
 +2006-04-29  Richard Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Multiline Font Lock): Rename from
 +      Multi line Font Lock Elements.  Much clarification.
 +      (Font Lock Multiline, Region to Fontify): Much clarification.
 +
 +2006-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * variables.texi (File Local Variables): Remove the special case t for
 +      safe-local-variable.
 +
 +2006-04-26  Richard Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Parsing Expressions): Minor cleanup.
 +
 +2006-04-18  Richard Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Explain when the package's
 +      prefix should appear later on (not at the start of the name).
 +
 +      * searching.texi (String Search): Clarify effect of NOERROR.
 +
 +      * modes.texi (Imenu): Clarify what special items do.
 +
 +      * hooks.texi (Standard Hooks): Delete text about old hook names.
 +
 +2006-04-17  Romain Francoise  <romain@orebokech.com>
 +
 +      * variables.texi (Local Variables): Update the default value of
 +      `max-specpdl-size'.
 +
 +2006-04-15  Michael Olson  <mwolson@gnu.org>
 +
 +      * processes.texi (Transaction Queues): Mention the new optional
 +      `delay-question' argument for `tq-enqueue'.
 +
 +2006-04-13  Bill Wohler  <wohler@newt.com>
 +
 +      * customize.texi (Common Keywords): Use dotted notation for
 +      :package-version value.  Specify its values.  Improve documentation
 +      for customize-package-emacs-version-alist.
 +
 +2006-04-12  Bill Wohler  <wohler@newt.com>
 +
 +      * customize.texi (Common Keywords): Move description of
 +      customize-package-emacs-version-alist to @defvar.
 +
 +2006-04-10  Bill Wohler  <wohler@newt.com>
 +
 +      * customize.texi (Common Keywords): Add :package-version.
 +
 +2006-04-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * text.texi (Buffer Contents): Add NOPROPS arg to
 +      filter-buffer-substring.
 +
 +2006-04-08  Kevin Ryde  <user42@zip.com.au>
 +
 +      * os.texi (Command-Line Arguments): Update xref to emacs manual
 +      "Command Arguments" -> "Emacs Invocation", per change there.
 +
 +2006-04-08  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * display.texi (Other Display Specs): Arrange a @code{DOTTED-LIST} to
 +      be on one line to help makeinfo not render two spaces after the dot.
 +
 +2006-04-07  Reiner Steib  <Reiner.Steib@gmx.de>
 +
 +      * strings.texi (Predicates for Strings): Add string-or-null-p.
 +
 +2006-03-28  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Accepting Output): Remove obsolete (and incorrect)
 +      remarks about systems that don't support fractional seconds.
 +
 +2006-03-25  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi: Use @copyright{} instead of (C), and do not indent
 +      the year list.
 +
 +2006-03-21  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * display.texi (Fringe Indicators): Fix typos.
 +
 +2006-03-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Documentation Tips): One can now also write `program'
 +      in front of a quoted symbol in a docstring to prevent making a
 +      hyperlink.
 +
 +2006-03-19  Alan Mackenzie  <acm@muc.de>
 +
 +      * text.texi (Special Properties): Clarify `fontified' property.
 +
 +2006-03-16  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Images): Minor cleanup.
 +
 +2006-03-16  Bill Wohler  <wohler@newt.com>
 +
 +      * display.texi (Defining Images): In image-load-path-for-library,
 +      prefer user's images.
 +
 +2006-03-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Region to Fontify): Remove font-lock-lines-before.
 +
 +2006-03-15  Bill Wohler  <wohler@newt.com>
 +
 +      * display.texi (Defining Images): Fix example in
 +      image-load-path-for-library by not recommending that one binds
 +      image-load-path.  Just defvar it to placate compiler and only use
 +      it if previously defined.
 +
 +2006-03-14  Bill Wohler  <wohler@newt.com>
 +
 +      * display.texi (Defining Images): In image-load-path-for-library,
 +      always return list of directories.  Update example.
 +
 +2006-03-14  Alan Mackenzie  <acm@muc.de>
 +
 +      * modes.texi: New node, "Region to Fontify" (for Font Lock).
 +      This describes font-lock-extend-region-function.
 +      ("Other Font Lock Variables"): Move "font-lock-lines-before" to
 +      the new node "Region to Fontify".
 +
 +2006-03-13  Richard Stallman  <rms@gnu.org>
 +
 +      * display.texi (Invisible Text): The impossible position is
 +      now before the invisible text, not after.
 +      (Defining Images): Clean up last change.
 +
 +2006-03-11  Bill Wohler  <wohler@newt.com>
 +
 +      * display.texi (Defining Images): Add image-load-path-for-library.
 +
 +2006-03-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * text.texi (Adaptive Fill): Fix Texinfo usage.
 +
 +      * strings.texi (Creating Strings): Fix Texinfo usage.
 +
 +      * searching.texi (Regexp Special): Use @samp for regular
 +      expressions that are not in Lisp syntax.
 +
 +2006-03-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * searching.texi (Regexp Special): Put remark between parentheses
 +      to avoid misreading.
 +
 +2006-03-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * searching.texi (Syntax of Regexps): More accurately describe
 +      which characters are special in which situations.
 +      (Regexp Special): Recommend _not_ to quote `]' or `-' when they
 +      are not special.  Describe in detail when `[' and `]' are special.
 +      (Regexp Backslash): Plenty of regexps with unbalanced square
 +      brackets are valid, so reword that statement.
 +
 +2006-03-02  Kim F. Storm  <storm@cua.dk>
 +
 +      * keymaps.texi (Tool Bar): Add tool-bar-border.
 +
 +2006-02-28  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * loading.texi (Load Suffixes): Rephrase last paragraph.  Fix typos.
 +
 +2006-02-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * elisp.texi (Top): Include "Load Suffixes" in the detailed menu.
 +
 +      * files.texi (Locating Files): Suggest additional values for the
 +      SUFFIXES arg of `locate-file'.  Update pxref.
 +
 +      * loading.texi (Loading): Include new node "Load Suffixes" in menu.
 +      (How Programs Do Loading): Discuss the effects of Auto Compression
 +      mode on `load'.
 +      (Load Suffixes): New node.
 +      (Library Search): Delete description of `load-suffixes'; it was
 +      moved to "Load Suffixes".
 +      (Autoload, Named Features): Mention `load-suffixes'.
 +
 +2006-02-21  Giorgos Keramidas  <keramida@ceid.upatras.gr>  (tiny change)
 +
 +      * display.texi (Fringe Indicators, Fringe Cursors): Fix typos.
 +
 +      * windows.texi (Window Tree): Fix typo.
 +
 +2006-02-20  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Fringe Indicators): New section.
 +      Move indicate-empty-lines, indicate-buffer-boundaries, and
 +      default-indicate-buffer-boundaries here.
 +      Add fringe-indicator-alist and default-fringes-indicator-alist.
 +      Add list of logical fringe indicator symbols.
 +      Update list of standard bitmap names.
 +      (Fringe Cursors): New section.
 +      Move overflow-newline-into-fringe here.
 +      Add fringe-cursor-alist and default-fringes-cursor-alist.
 +      Add list of fringe cursor symbols.
 +
 +2006-02-20  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * commands.texi (Using Interactive): Fix reference to node
 +      "Minibuffers".
 +
 +2006-02-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (High-Level Completion):
 +      Add xref to read-input-method-name.
 +
 +      * files.texi (Relative File Names): Move file-relative-name here.
 +      (File Name Expansion): From here.  Minor clarifications.
 +
 +      * commands.texi (Using Interactive): Add xrefs about reading input.
 +      Clarify remarks about that moving point and mark.
 +      Put string case before list case.
 +
 +2006-02-16  Johan Bockg\e,Ae\e(Brd  <bojohan@dd.chalmers.se>
 +
 +      * display.texi (Other Display Specs, Image Descriptors):
 +      Revert erroneous changes.  The previous description of
 +      image-descriptors as `(image . PROPS)' was correct.
 +
 +2006-02-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * variables.texi (File Local Variables): Clarifications.
 +
 +2006-02-14  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * variables.texi (File Local Variables): Use @code for a cons
 +      cell, not @var.
 +
 +2006-02-13  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * variables.texi (File Local Variables): Document new file local
 +      variable behavior.
 +
 +2006-02-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * eval.texi (Function Indirection): Add NOERROR to indirect-function.
 +
 +2006-02-08  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * modes.texi (%-Constructs): Remove obsolete info about
 +      `global-mode-string'.
 +
 +2006-02-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Prefix Command Arguments): Minor cleanup.
 +
 +      * display.texi: "Graphical display", not window system.
 +
 +      * functions.texi (What Is a Function): Fix xref.
 +
 +      * keymaps.texi (Key Lookup): Clarify wrt commands vs other functions.
 +      (Changing Key Bindings): Clarify when remapping is better than
 +      substitute-key-definition.
 +
 +2006-02-02  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Basic Completion): Completion alists are risky.
 +
 +      * keymaps.texi (Active Keymaps): Clarifications.
 +      (Searching Keymaps): New node.
 +      (Keymaps): Update menu.
 +
 +      * frames.texi (Layout Parameters): Minor clarification.
 +      (Drag and Drop): New node.
 +      (Frames): Update menu.
 +
 +2006-01-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Other Display Specs, Image Descriptors):
 +      Image description is a list, not a cons cell.
 +
 +2006-01-28  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Cons Cells): Minor correction (the cdr of a dotted
 +      list is not necessarily a list).
 +
 +2006-01-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frames.texi (Layout Parameters): border-width and
 +      internal-border-width belong to the frame, not the window.
 +
 +2006-01-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * nonascii.texi (Translation of Characters): Search cmds use
 +      translation-table-for-input.  Automatically made local.
 +
 +      * markers.texi (Overview of Markers): Count insertion type
 +      as one of a marker's attributes.
 +
 +      * keymaps.texi (Controlling Active Maps): New node, split out of
 +      Active Keymaps.
 +      (Keymaps): Menu updated.
 +      (Active Keymaps): Give pseudocode to explain how the active
 +      maps are searched.  current-active-maps and key-binding moved here.
 +      (Functions for Key Lookup): current-active-maps and key-binding moved.
 +      Clarifications.
 +      (Searching the Keymaps): New subnode.
 +
 +      * elisp.texi (Top): Menu clarification.
 +
 +      * display.texi (Other Display Specs): Delete duplicate entry for
 +      just a string as display spec.  Move text about recursive display
 +      specs on such a string.
 +
 +      * commands.texi (Key Sequence Input): Clarify.
 +      Move num-nonmacro-input-events out.
 +      (Reading One Event): num-nonmacro-input-events moved here.
 +
 +2006-01-14  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * advice.texi (Simple Advice): Update example to fit argument
 +      change in previous-line.
 +
 +2006-01-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * markers.texi (The Mark): Fix in `mark'.
 +
 +2006-01-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Misc Network, Make Network): Minor cleanups.
 +
 +2006-01-04  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Make Network): Add IPv6 addresses and handling.
 +      (Network Feature Testing): Mention (:family ipv6).
 +      (Misc Network): Add IPv6 formats to format-network-address.
 +
 +2005-12-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Changing Properties):
 +      Don't use return value of set-text-properties.
 +
 +2005-12-29  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * modes.texi (Mode Line Format): Correct typo in menu.
 +
 +2005-12-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Mode Line Top): New node.
 +      (Mode Line Data): Some text moved to new node.
 +      Explain the data structure more concretely.
 +      (Mode Line Basics): Clarifications.
 +      (Mode Line Variables): Clarify intro paragraph.
 +      (%-Constructs): Clarify intro paragraph.
 +      (Mode Line Format): Update menu.
 +
 +2005-12-28  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * minibuf.texi (Basic Completion): Update lazy-completion-table
 +      examples for removal of ARGS argument.
 +
 +2005-12-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Undo): Restore some explanation from the version
 +      that was deleted.
 +
 +2005-12-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * text.texi (Undo): Remove duplicate descriptions of `apply
 +      funname' and `apply delta' elements of the undo list.
 +
 +2005-12-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * help.texi (Help Functions): Update documentation of `apropos'.
 +
 +2005-12-20  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * customize.texi (Type Keywords): Delete xref to "Text help-echo",
 +      because it is confusing.  If the :help-echo keyword is a function,
 +      it is not directly used as the :help-echo overlay property, as the
 +      xref seems to suggest (it does not take the appropriate args).
 +
 +2005-12-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * customize.texi (Common Keywords): Fix Texinfo usage.
 +      (Group Definitions, Variable Definitions): Update for new
 +      conventions for using `*' in docstrings.
 +
 +      * tips.texi (Documentation Tips): Update for new conventions for
 +      using `*' in docstrings.
 +
 +2005-12-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Minibuffer Contents): Minor cleanup.
 +
 +2005-12-16  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuf.texi (Minibuffer Contents): Add minibuffer-completion-contents.
 +
 +2005-12-14  Romain Francoise  <romain@orebokech.com>
 +
 +      * modes.texi (Customizing Keywords): Rename `append' to `how'.
 +      Fix typo.
 +
 +2005-12-11  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuf.texi (Completion Commands): Add mention of read-file-name
 +      for filename completion keymaps.
 +      (Reading File Names): Add mention of filename completion keymaps
 +      for read-file-name and xref to `Completion Commands'.
 +
 +2005-12-10  Richard M. Stallman  <rms@gnu.org>
 +
 +      * customize.texi (Common Keywords): State caveats for use of :tag.
 +
 +2005-12-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Intro to Minibuffers): Replace list of local maps
 +      with xrefs and better explanation.
 +      (Completion Commands): Add the filename completion maps.
 +
 +      * objects.texi (Character Type): Clarify that \s is not space
 +      if a dash follows.
 +
 +2005-12-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Resizing Windows): Delete preserve-before args.
 +
 +2005-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymaps.texi (Format of Keymaps): Remove mention of a quirk
 +      in full keymaps, since the quirk has been fixed.
 +
 +2005-12-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * hooks.texi (Standard Hooks): Add index entries.  Mention
 +      `compilation-finish-functions'.
 +
 +2005-11-27  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Resizing Windows): Add adjust-window-trailing-edge.
 +
 +2005-11-21  Juri Linkov  <juri@jurta.org>
 +
 +      * customize.texi (Common Keywords): Update links types
 +      custom-manual and url-link.  Add link types emacs-library-link,
 +      file-link, function-link, variable-link, custom-group-link.
 +
 +2005-11-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi: Revert 2005-11-20 change.
 +
 +2005-11-20  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * processes.texi (Bindat Functions):
 +      Say "third" to refer to zero-based index "2".
 +
 +2005-11-18  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * loading.texi (Library Search): Update the default value of
 +      `load-suffixes'.
 +
 +2005-11-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Attribute Functions): Mention :ignore-defface.
 +
 +2005-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode.
 +      (Minor Mode Conventions): Mention the use of a hook.
 +
 +2005-11-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Magic File Names): find-file-name-handler checks the
 +      `operations' property of the handler.
 +
 +2005-11-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * variables.texi (Frame-Local Variables): Small clarification.
 +
 +2005-10-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * os.texi (Init File): Document ~/.emacs.d/init.el.
 +
 +2005-10-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * internals.texi (Garbage Collection): Document memory-full.
 +
 +2005-10-28  Bill Wohler  <wohler@newt.com>
 +
 +      * tips.texi (Documentation Tips): Help mode now creates hyperlinks
 +      for URLs.
 +
 +2005-10-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Completion Commands): Clean up prev change.
 +
 +2005-10-26  Kevin Ryde  <user42@zip.com.au>
 +
 +      * compile.texi (Eval During Compile): Explain recommended uses
 +      of eval-when-compile and eval-and-compile.
 +
 +2005-10-27  Masatake YAMATO  <jet@gyve.org>
 +
 +      * minibuf.texi (Completion Commands):
 +      Write about new optional argument for `display-completion-list'.
 +
 +2005-10-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Overlay Arrow): Clarify about local bindings of
 +      overlay-arrow-position.
 +
 +2005-10-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * internals.texi (Building Emacs): Fix last change.
 +
 +2005-10-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * internals.texi (Building Emacs): Document eval-at-startup.
 +
 +2005-10-21  Richard M. Stallman  <rms@gnu.org>
 +
 +      * loading.texi (Where Defined): load-history contains abs file names.
 +      symbol-file returns abs file names.
 +
 +2005-10-19  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Showing Images): Add max-image-size integer value.
 +
 +2005-10-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Showing Images): Document max-image-size.
 +
 +2005-10-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Quitting): Minor clarification.
 +
 +      * processes.texi (Sentinels): Clarify about output and quitting.
 +      (Filter Functions): Mention with-local-quit.
 +
 +2005-10-17  Juri Linkov  <juri@jurta.org>
 +
 +      * buffers.texi (Current Buffer):
 +      * commands.texi (Event Input Misc):
 +      * compile.texi (Eval During Compile, Compiler Errors):
 +      * customize.texi (Group Definitions):
 +      * display.texi (Progress, Defining Faces):
 +      * files.texi (Writing to Files):
 +      * modes.texi (Mode Hooks, Defining Minor Modes):
 +      * streams.texi (Output Functions):
 +      * syntax.texi (Syntax Table Functions):
 +      * text.texi (Change Hooks):
 +      Replace `...' with `@dots{}' in `@defmac' and `@defspec'.
 +
 +      * commands.texi (Quitting): Replace arg `forms' with `body' in
 +      `with-local-quit'.
 +
 +      * positions.texi (Excursions): Replace arg `forms' with `body' in
 +      `save-excursion'.
 +
 +2005-10-08  Kim F. Storm  <storm@cua.dk>
 +
 +      * windows.texi (Window Tree): Rename window-split-tree to window-tree.
 +      Rename manual section accordingly.
 +
 +2005-10-04  Kim F. Storm  <storm@cua.dk>
 +
 +      * windows.texi (Window Split Tree): New section describing
 +      new function window-split-tree function.
 +
 +2005-10-03  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * display.texi (Fringe Size/Pos): Simplify and add detail.
 +
 +2005-09-30  Romain Francoise  <romain@orebokech.com>
 +
 +      * minibuf.texi (High-Level Completion): Explain that the prompt
 +      given to `read-buffer' should end with a colon and a space.
 +      Update usage examples.
 +
 +2005-09-29  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Displaying Messages): Rename argument name
 +      `string' to `format-string' in functions `message', `message-box',
 +      `message-or-box'.
 +
 +2005-09-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * errors.texi (Standard Errors): Correct xrefs.
 +
 +2005-09-18  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Defining Images): Update documentation for
 +      `image-load-path'.
 +
 +2005-09-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Images): Clean up previous change.
 +
 +2005-09-16  Romain Francoise  <romain@orebokech.com>
 +
 +      * elisp.texi: Specify GFDL version 1.2.
 +
 +      * doclicense.texi (GNU Free Documentation License): Update to
 +      version 1.2.
 +
 +2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Defining Images): Document `image-load-path'.
 +
 +2005-09-15  Richard M. Stallman  <rms@gnu.org>
 +
 +      * objects.texi (Printed Representation): Minor cleanup.
 +      (Box Diagrams): Minor fix.
 +      (Cons Cell Type): Move (...) index item here.
 +      (Box Diagrams): From here.
 +      (Array Type): Minor fix.
 +      (Type Predicates): Delete index "predicates".
 +      (Hash Table Type): Clarify xref.
 +      (Dotted Pair Notation): Minor fix.
 +
 +2005-09-10  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * files.texi (Saving Buffers): Fix typo.
 +
 +2005-09-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Programming Tips): Correct the "default" prompt spec.
 +
 +2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * locals.texi (Standard Buffer-Local Variables): Don't include
 +      mode variables for minor modes.
 +      Fix xrefs for buffer-display-count, buffer-display-table,
 +      buffer-offer-save, buffer-saved-size, cache-long-line-scans,
 +      enable-multibyte-characters, fill-column, header-line-format,
 +      left-fringe-width, left-margin, and right-fringe-width.
 +
 +      * hooks.texi (Standard Hooks): All hooks should conform to the
 +      standard naming convention now.
 +      Fix xref for `echo-area-clear-hook'.
 +
 +      * display.texi (Usual Display): Note that indicate-empty-lines and
 +      tab-width are buffer-local.
 +
 +      * files.texi (Saving Buffers): Add xref to `Killing Buffers'.
 +
 +      * modes.texi (Mode Help): Note that major-mode is buffer-local.
 +
 +      * nonascii.texi (Encoding and I/O): Note that
 +      buffer-file-coding-system is buffer-local.
 +
 +      * positions.texi (List Motion): Note that defun-prompt-regexp is
 +      buffer-local.
 +
 +      * text.texi (Auto Filling): Note that auto-fill-function is
 +      buffer-local.
 +      (Undo): Note that buffer-undo-list is buffer-local.
 +
 +      * windows.texi (Buffers and Windows): Document
 +      buffer-display-count.
 +
 +2005-09-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Sometimes it is ok to put the
 +      package prefix elsewhere than at the start of the name.
 +
 +2005-09-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Programming Tips): Add conventions for minibuffer
 +      questions and prompts.
 +
 +2005-09-03  Joshua Varner  <jlvarner@gmail.com>  (tiny change)
 +
 +      * intro.texi (nil and t): Minor cleanup.
 +      Delete spurious mention of keyword symbols.
 +      (Evaluation Notation): Add index entry.
 +      (A Sample Function Description): Minor cleanup.
 +      (A Sample Variable Description): Not all vars can be set.
 +
 +2005-09-03  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * text.texi (Buffer Contents): Use "\n" in examples' result strings.
 +
 +      (Insertion): Document precise type of `insert-char' arg COUNT.
 +
 +2005-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * modes.texi (Other Font Lock Variables): Sync the default of
 +      font-lock-lines-before.
 +
 +2005-08-31  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): Add `make-auto-save-file-name'.
 +
 +2005-08-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode menu.
 +
 +      * searching.texi (Searching and Matching): Move node.
 +      Rearrange contents and add overall explanation.
 +      (Searching and Case): Move node.
 +      (Searching and Matching): Update menu.
 +
 +2005-08-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * os.texi (Startup Summary): Fix the description of the initial
 +      startup message display.
 +
 +2005-08-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Search and Replace): Add replace-regexp-in-string.
 +
 +2005-08-25  Emilio C. Lopes  <eclig@gmx.net>
 +
 +      * display.texi (Finding Overlays): Fix `find-overlay-prop' in
 +      `next-overlay-change' example.
 +
 +2005-08-22  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Attribute Functions): Add set-face-inverse-video-p.
 +      Fix invert-face.  Fix args of face-background.
 +
 +      * display.texi (Standard Faces): Delete node.
 +      (Faces): Add xref to `(emacs)Standard Faces'.
 +      (Displaying Faces): Fix xref to `Standard Faces'.
 +
 +      * modes.texi (Mode Line Data): Fix xref to Standard Faces.
 +
 +2005-08-20  Alan Mackenzie  <acm@muc.de>
 +
 +      * buffers.texi (The Buffer List): Clarify the manipulation of the
 +      buffer list.
 +
 +2005-08-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Auto Major Mode): interpreter-mode-alist key is not
 +      a regexp.
 +
 +2005-08-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode lists.
 +
 +      * display.texi (Inverse Video): Node deleted.
 +
 +      * tips.texi (Key Binding Conventions, Programming Tips, Warning Tips):
 +      New nodes split out of Coding Conventions.
 +
 +      * searching.texi (Regular Expressions): Document re-builder.
 +
 +      * os.texi (Time Parsing): New node split out of Time Conversion.
 +
 +      * processes.texi (Misc Network, Network Feature Testing)
 +      (Network Options, Make Network): New nodes split out of
 +      Low-Level Network.
 +
 +2005-08-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Geometry): New node, split from Size and Position.
 +      (Frame Parameters): Refer to Geometry.
 +
 +      * buffers.texi (The Buffer List): Fix xrefs.
 +
 +      * windows.texi (Splitting Windows): Fix xref.
 +
 +      * frames.texi (Layout Parameters): Add xref.
 +
 +      * display.texi (Line Height, Scroll Bars): Fix xrefs.
 +
 +      * keymaps.texi (Menu Bar): Fix xref.
 +
 +      * locals.texi (Standard Buffer-Local Variables): Fix xref.
 +
 +      * modes.texi (%-Constructs): Fix xref.
 +
 +      * frames.texi (Window Frame Parameters): Node split up.
 +      (Basic Parameters, Position Parameters, Size Parameters)
 +      (Layout Parameters, Buffer Parameters, Management Parameters)
 +      (Cursor Parameters, Color Parameters): New subnodes.
 +
 +2005-08-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * positions.texi (Screen Lines): Update xref for previous change
 +      in minibuf.texi.
 +
 +      * minibuf.texi (Intro to Minibuffers): Update pxref for previous
 +      change in minibuf.texi.
 +
 +2005-08-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Minor cleanup.
 +
 +      * modes.texi (Defining Minor Modes): Explain when init-value
 +      can be non-nil.
 +
 +      * elisp.texi (Top): Update submenu for Minibuffer.
 +
 +      * minibuf.texi (Minibuffer Misc): Node split up.
 +      (Minibuffer Commands, Minibuffer Windows, Minibuffer Contents)
 +      (Recursive Mini): New nodes split out from Minibuffer Misc.
 +      (Minibuffer Misc): Document max-mini-window-height.
 +
 +      * hash.texi (Defining Hash): Delete stray paren in example.
 +
 +      * display.texi (Echo Area Customization): Don't define
 +      max-mini-window-height here; xref instead.
 +
 +      * commands.texi (Event Input Misc): Update while-no-input.
 +
 +      * advice.texi (Advising Functions): Explain when to use advice
 +      and when to use a hook.
 +
 +2005-07-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (info): Don't run install-info.
 +      ($(infodir)/dir): New target, produced by running install-info.
 +
 +2005-07-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * modes.texi (Defining Minor Modes): The keyword for the initial
 +      value is :init-value, not :initial-value.
 +
 +2005-07-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * loading.texi (Autoload): Make the `doctor' example be consistent
 +      with what's in current loaddefs.el.  Describe the "fn" magic in
 +      the usage portion of the doc string.
 +
 +2005-07-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * internals.texi (Garbage Collection): Clarify previous change.
 +
 +2005-07-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * internals.texi (Garbage Collection): Add gc-cons-percentage.
 +
 +2005-07-18  Juri Linkov  <juri@jurta.org>
 +
 +      * commands.texi (Accessing Events):
 +      * frames.texi (Text Terminal Colors, Resources):
 +      * markers.texi (The Mark):
 +      * modes.texi (Defining Minor Modes):
 +      Delete duplicate duplicate words.
 +
 +2005-07-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Managing Overlays): Clarify make-overlay
 +      args for insertion types.
 +
 +2005-07-13  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * customize.texi (Variable Definitions):
 +      Add `custom-initialize-safe-set' and `custom-initialize-safe-default'.
 +      `standard-value' is a list too.
 +      (Defining New Types): Use @key{RET} instead of @key{ret}.
 +
 +2005-07-13  Francis Litterio  <franl@world.std.com>  (tiny change)
 +
 +      * os.texi (Translating Input): Fix typo.
 +
 +2005-07-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * README: Update edition number and size estimate.
 +
 +      * elisp.texi (VERSION): Set to 2.9.
 +
 +2005-07-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * book-spine.texinfo: Update Emacs version.
 +
 +      * display.texi (Inverse Video): Delete mode-line-inverse-video.
 +
 +2005-07-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Regexp Search): Clarify what re-search-forward
 +      does when the search fails.
 +
 +2005-07-05  Lute Kamstra  <lute@gnu.org>
 +
 +      * Update FSF's address in GPL notices.
 +
 +      * doclicense.texi (GNU Free Documentation License):
 +      * gpl.texi (GPL):
 +      * tips.texi (Coding Conventions, Library Headers):
 +      * vol1.texi:
 +      * vol2.texi: Update FSF's address.
 +
 +2005-07-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * hooks.texi (Standard Hooks): Add occur-hook.
 +
 +2005-07-03  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (The Echo Area): Correct menu.
 +
 +2005-07-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode menu for Display.
 +
 +      * display.texi (Displaying Messages): New node, with most
 +      of what was in The Echo Area.
 +      (Progress): Moved under The Echo Area.
 +      (Logging Messages): New node with new text.
 +      (Echo Area Customization): New node, the rest of what was
 +      in The Echo Area.  Document message-truncate-lines with @defvar.
 +      (Display): Update menu.
 +
 +      * windows.texi (Textual Scrolling): Doc 3 values for
 +      scroll-preserve-screen-position.
 +
 +      * text.texi (Special Properties): Change hook functions
 +      should bind inhibit-modification-hooks around altering buffer text.
 +
 +      * keymaps.texi (Key Binding Commands): Call binding BINDING
 +      rather than DEFINITION.
 +
 +2005-06-29  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * variables.texi (Defining Variables): `user-variable-p' returns t
 +      for aliases of user options, nil for alias loops.
 +
 +2005-06-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
 +      make-keymap.
 +
 +2005-06-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * variables.texi (Setting Variables): Correct and clarify
 +      description of `add-to-ordered-list'.
 +
 +2005-06-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Faces): Minor cleanup.
 +
 +2005-06-25  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Faces): `facep' returns t for strings that are
 +      face names.
 +
 +2005-06-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * objects.texi (Equality Predicates): Clarify meaning of equal.
 +
 +      * windows.texi (Selecting Windows): save-selected-window
 +      and with-selected-window save and restore the current buffer.
 +
 +2005-06-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * numbers.texi (Float Basics): Explain how to test for NaN,
 +      and printing the sign of NaNs.
 +
 +2005-06-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * makefile.w32-in (MAKEINFO): Use --force.
 +
 +2005-06-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Face Functions): Correct Texinfo usage.
 +
 +2005-06-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Rings): `ring-elements' now returns the elements of
 +      RING in order.
 +
 +2005-06-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * markers.texi (The Mark): Texinfo usage fix.
 +
 +2005-06-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * searching.texi (Entire Match Data): Remove evaporate option for
 +      match-data.  Do not mention evaporate option for set-match-data.
 +
 +2005-06-22  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * display.texi (Face Functions): Mention face aliases.
 +
 +2005-06-21  Richard M. Stallman  <rms@gnu.org>
 +
 +      * anti.texi (Antinews): Texinfo usage fix.
 +
 +2005-06-21  Karl Berry  <karl@gnu.org>
 +
 +      * elisp.texi: Use @copying.
 +
 +      * elisp.texi: Put @summarycontents and @contents before the Top
 +      node, instead of the end of the file, so that the contents appear
 +      in the right place in the dvi/pdf output.
 +
 +2005-06-21  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Defining Faces): Add `customized-face'.
 +
 +2005-06-20  Kim F. Storm  <storm@cua.dk>
 +
 +      * variables.texi (Setting Variables): Any type of element can be
 +      given order in add-to-ordered-list.  Compare elements with eq.
 +
 +      * lists.texi (Rearrangement): Sort predicate may just return non-nil.
 +
 +2005-06-20  Karl Berry  <karl@gnu.org>
 +
 +      * syntax.texi (Syntax Flags): Make last column very slightly wider
 +      to avoid "generic comment" breaking on two lines and causing an
 +      underfull box.
 +
 +2005-06-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Rings): Various minor clarifications and corrections.
 +
 +2005-06-18  Richard M. Stallman  <rms@gnu.org>
 +
 +      * functions.texi (Obsolete Functions): Simplify.
 +
 +      * variables.texi (Variable Aliases): Simplify.
 +
 +      * anti.texi, backups.texi, compile.texi, customization.texi:
 +      * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi:
 +      * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi:
 +      * os.texi, processes.texi, searching.texi, strings.texi, text.texi:
 +      * variables.texi: Fix formatting ugliness.
 +
 +      * elisp.texi: Add links to Rings and Byte Packing.
 +      Update version and copyright years.
 +
 +      * minibuf.texi: Fix formatting ugliness.
 +      (Completion Commands): Move keymap vars to the end
 +      and vars completing-read binds to the top.
 +
 +2005-06-17  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * processes.texi: Fix typos.
 +      (Bindat Spec): Correct Texinfo error.
 +      (Byte Packing): Fix ungrammatical sentence.
 +
 +2005-06-17  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * lists.texi (Rings): New node.
 +      (Lists): Add it to menu.
 +
 +      * processes.texi (Byte Packing): New node.
 +      (Processes): Add it to menu.
 +
 +2005-06-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Parsing Expressions): Fix texinfo usage.
 +
 +      * help.texi (Documentation Basics): Explain the xref to
 +      Documentation Tips.
 +
 +      * debugging.texi (Debugger Commands): Minor fix.
 +
 +2005-06-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * edebug.texi (Instrumenting): Eliminate duplicate link.
 +      (Specification List): Replace references to "below", referring to
 +      a later node, with one @ref to that node.
 +
 +      * os.texi (Timers): Timers should save and restore the match data
 +      if they change it.
 +
 +      * debugging.texi (Debugger Commands): Mention that the Lisp
 +      debugger can not step through primitive functions.
 +
 +2005-06-16  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * functions.texi (Obsolete Functions): Update argument names of
 +      `make-obsolete' and `define-obsolete-function-alias'.
 +
 +      * variables.texi (Variable Aliases): Update argument names of
 +      `defvaralias', `make-obsolete-variable' and
 +      `define-obsolete-variable-alias'.
 +
 +2005-06-15  Kim F. Storm  <storm@cua.dk>
 +
 +      * searching.texi (Entire Match Data): Rephrase warnings about
 +      evaporate arg to match-data and set-match-data.
 +
 +2005-06-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * elisp.texi (Top): Update detailed menu.
 +
 +      * edebug.texi (Edebug): Update menu.
 +      (Instrumenting): Update xrefs.
 +      (Edebug Execution Modes): Correct xref.
 +      (Jumping): Clarify description of `h' command.
 +      Eliminate redundant @ref.
 +      (Breaks): New node.
 +      (Breakpoints): Is now a subsubsection.
 +      (Global Break Condition): Mention `C-x X X'.
 +      (Edebug Views): Clarify `v' and `p'.  Mention `C-x X w'.
 +      (Trace Buffer): Clarify STRING arg of `edebug-tracing'.
 +      (Edebug Display Update): Correct pxref.
 +      (Edebug and Macros): New node.
 +      (Instrumenting Macro Calls): Is now a subsubsection.
 +      Neither arg of `def-edebug-spec' is evaluated.
 +      (Instrumenting Macro Calls): Mention `edebug-eval-macro-args'.
 +      (Specification Examples): Fix typo.
 +
 +2005-06-14  Lute Kamstra  <lute@gnu.org>
 +
 +      * debugging.texi (Function Debugging): Primitives can break on
 +      entry too.
 +
 +2005-06-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * variables.texi (Setting Variables): Add add-to-ordered-list.
 +
 +2005-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.texi (Parsing Expressions): Document aux functions and vars of
 +      syntax-ppss: syntax-ppss-flush-cache and syntax-begin-function.
 +
 +2005-06-13  Lute Kamstra  <lute@gnu.org>
 +
 +      * text.texi (Special Properties): Fix cross reference.
 +
 +2005-06-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * debugging.texi (Function Debugging): Delete mention of empty
 +      string argument to `cancel-debug-on-entry'.  Delete inaccurate
 +      description of the return value of that command.
 +
 +2005-06-11  Alan Mackenzie  <acm@muc.de>
 +
 +      * text.texi (Adaptive Fill): Amplify the description of
 +      fill-context-prefix.
 +
 +2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * syntax.texi (Parsing Expressions): Fix Texinfo error.
 +
 +2005-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * syntax.texi (Parsing Expressions): Document syntax-ppss.
 +
 +2005-06-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * debugging.texi (Error Debugging): Minor rewording.
 +      (Function Debugging): FUNCTION-NAME arg to `cancel-debug-on-entry'
 +      is optional.
 +
 +2005-06-10  Lute Kamstra  <lute@gnu.org>
 +
 +      * elisp.texi: Use EMACSVER to refer to the current version of Emacs.
 +      (Top): Give it a title.  Correct version number.  Give the
 +      detailed node listing a more prominent header.
 +      * intro.texi: Don't set VERSION here a second time.
 +      Mention Emacs's version too.
 +      * anti.texi (Antinews): Use EMACSVER to refer to the current
 +      version of Emacs.
 +
 +2005-06-09  Kim F. Storm  <storm@cua.dk>
 +
 +      * searching.texi (Entire Match Data): Explain new `reseat' argument to
 +      match-data and set-match-data.
 +
 +2005-06-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Entire Match Data): Clarify when match-data
 +      returns markers and when integers.
 +
 +      * display.texi (Defining Faces): Explain that face name should not
 +      end in `-face'.
 +
 +      * modes.texi (Mode Line Data): Minor cleanup.
 +      (Customizing Keywords): Node split out of Search-based Fontification.
 +      Add example of using font-lock-add-keywords from a hook.
 +      Clarify when MODE should be non-nil, and when nil.
 +
 +2005-06-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Mode Line Data): Explain what happens when the car
 +      of a list is a void symbol.
 +      (Search-based Fontification): Explain MODE arg to
 +      font-lock-add-keywords and warn about calls from major modes.
 +
 +2005-06-08  Juri Linkov  <juri@jurta.org>
 +
 +      * display.texi (Standard Faces): Add `shadow' face.
 +
 +2005-05-29  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * modes.texi (Major Mode Conventions): A derived mode only needs
 +      to put the call to the parent mode inside `delay-mode-hooks'.
 +
 +2005-05-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook is
 +      new, and what that implies.  Clarify.
 +
 +      * files.texi (Locating Files): Clean up the text.
 +
 +      * frames.texi (Window Frame Parameters): Document user-size.
 +      Shorten entry for top by referring to left.
 +
 +2005-05-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook
 +      is new, and what the implications are.  Other clarifications.
 +
 +2005-05-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Dialog Boxes): Minor fixes.
 +
 +2005-05-25  Masatake YAMATO  <jet@gyve.org>
 +
 +      * display.texi (Standard Faces): Write about `mode-line-highlight'.
 +
 +2005-05-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Dialog Boxes): HEADER argument to `x-popup-dialog'
 +      is optional.
 +
 +2005-05-24  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * frames.texi (Dialog Boxes): Descibe new optional argument.
 +
 +2005-05-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Font Lock Basics, Syntactic Font Lock): Recommend
 +      syntax-begin-function over font-lock-beginning-of-syntax-function.
 +
 +2005-05-21  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * minibuf.texi (Reading File Names): Update description of
 +      `read-directory-name'.
 +
 +      * modes.texi (Derived Modes): Clarify :group keyword.
 +
 +2005-05-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.texi (Locating Files): New subsection.
 +      Describe locate-file and executable-find.
 +
 +2005-05-21  Kevin Ryde  <user42@zip.com.au>
 +
 +      * frames.texi (Initial Parameters): Update cross reference to
 +      "Emacs Invocation".
 +
 +2005-05-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * keymaps.texi (Active Keymaps): Add anchor.
 +
 +      * modes.texi (Hooks): Delete confusing and unnecessary sentence.
 +      (Major Mode Conventions): Refer to `Auto Major Mode' in more
 +      appropriate place.
 +      (Derived Modes): Small clarifications.
 +      (Minor Mode Conventions, Keymaps and Minor Modes):
 +      Replace references to nodes with references to anchors.
 +      (Mode Line Data): Warn that `(:eval FORM)' should not load any files.
 +      Clarify description of lists whose first element is an integer.
 +      (Mode Line Variables): Add anchor.
 +      (%-Constructs): Clarify description of integer after %.
 +      (Emulating Mode Line): Describe nil value for FACE.
 +
 +2005-05-18  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * modes.texi (Derived Modes): Correct references to non-existing
 +      variable standard-syntax-table.
 +
 +2005-05-17  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): Mention the mode hook.
 +
 +2005-05-15  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Network): Remove open-network-stream-nowait.
 +      (Network Servers): Remove open-network-stream-server.
 +
 +2005-05-15  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * elisp.texi (Top): Update detailed menu.
 +
 +      * variables.texi: Reorder nodes.
 +      (Variables): Update menu.
 +      (File Local Variables): Do not refer to the `-*-' line as
 +      a "local variables list".  Add pxref.
 +
 +2005-05-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * elisp.texi (Top): Update detailed menu for node changes.
 +
 +      * modes.texi (Modes): Update Menu.
 +      (Hooks): Move to beginning of chapter.
 +      Most minor modes run mode hooks too.
 +      `add-hook' can handle void hooks or hooks whose value is a single
 +      function.
 +      (Major Modes): Update Menu.
 +      (Major Mode Basics): New node, split off from `Major Modes'.
 +      (Major Mode Conventions): Correct xref.  Explain how to handle
 +      auto-mode-alist if the major mode command has an autoload cookie.
 +      (Auto Major Mode): Major update.  Add magic-mode-alist.
 +      (Derived Modes): Major update.
 +      (Mode Line Format): Update Menu.
 +      (Mode Line Basics): New node, split off from `Mode Line Format'.
 +
 +      * loading.texi (Autoload): Mention `autoload cookie' as synonym
 +      for `magic autoload comment'.  Add index entries and anchor.
 +
 +2005-05-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Explain how important it is
 +      that just loading certain files not change Emacs behavior.
 +
 +      * modes.texi (Defining Minor Modes): Define define-global-minor-mode.
 +
 +2005-05-12  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Generic Modes): Update.
 +      (Major Modes): Refer to node "Generic Modes".
 +
 +      * elisp.texi (Top): Update to the current structure of the manual.
 +      * processes.texi (Processes): Add menu description.
 +      * customize.texi (Customization): Add menu descriptions.
 +
 +2005-05-11  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * processes.texi (Signals to Processes)
 +      (Low-Level Network): Fix typos.
 +
 +2005-05-11  Lute Kamstra  <lute@gnu.org>
 +
 +      * elisp.texi (Top): Add some nodes from the chapter "Major and
 +      Minor Modes" to the detailed node listing.
 +
 +2005-05-10  Richard M. Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Extended Menu Items): Menu item filter functions
 +      can be called at any time.
 +
 +2005-05-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * variables.texi (File Local Variables): `(hack-local-variables t)'
 +      now also checks whether a mode is specified in the local variables
 +      list.
 +
 +2005-05-05  Kevin Ryde  <user42@zip.com.au>
 +
 +      * display.texi (The Echo Area): Correct format function cross
 +      reference.
 +
 +2005-05-05  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * variables.texi (Variable Aliases): Change description of
 +      `define-obsolete-variable-alias'.
 +
 +      * functions.texi (Functions): Add "Obsolete Functions" to menu.
 +      (Defining Functions): Add xref.
 +      (Obsolete Functions): New node.
 +      (Function Safety): Standardize capitalization of section title.
 +
 +      * frames.texi (Pop-Up Menus): Complete description of `x-popup-menu'.
 +      (Dialog Boxes): Complete description of `x-popup-dialog'.
 +
 +2005-05-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Interactive Codes): Fix Texinfo usage.
 +      Document U more clearly.
 +
 +2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * variables.texi (Variable Aliases): `make-obsolete-variable' is a
 +      function and not a macro.
 +
 +      * frames.texi (Pop-Up Menus): Correct and clarify description of
 +      `x-popup-menu'.
 +      (Dialog Boxes): Clarify description of `x-popup-dialog'.
 +
 +2005-05-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * edebug.texi (Checking Whether to Stop): Fix previous change.
 +
 +2005-05-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi: Fix typos and Texinfo usage.
 +
 +      * edebug.texi (Checking Whether to Stop): executing-macro ->
 +      executing-kbd-macro.
 +
 +2005-05-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Invisible Text): Correct add-to-invisibility-spec.
 +
 +2005-04-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Magic File Names): Document `operations' property.
 +
 +2005-04-29  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Generic Modes): New node.
 +      (Major Modes): Add it to the menu.
 +      (Derived Modes): Add "derived mode" to concept index.
 +
 +2005-04-28  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): Fix previous change.
 +      (Font Lock Mode): Simplify.
 +      (Font Lock Basics): Say that font-lock-defaults is buffer-local
 +      when set and that some parts are optional.  Add cross references.
 +      (Search-based Fontification): Say how to specify font-lock-keywords.
 +      Add cross references.  Add font-lock-multiline to index.
 +      Move font-lock-keywords-case-fold-search here from node "Other Font
 +      Lock Variables".  Document font-lock-add-keywords and
 +      font-lock-remove-keywords.
 +      (Other Font Lock Variables): Move font-lock-keywords-only,
 +      font-lock-syntax-table, font-lock-beginning-of-syntax-function,
 +      and font-lock-syntactic-face-function to node "Syntactic Font
 +      Lock".  Move font-lock-keywords-case-fold-search to node
 +      "Search-based Fontification".  Document font-lock-inhibit-thing-lock
 +      and font-lock-{,un}fontify-{buffer,region}-function.
 +      (Precalculated Fontification): Remove reference to deleted variable
 +      font-lock-core-only.
 +      (Faces for Font Lock): Add font-lock-comment-delimiter-face.
 +      (Syntactic Font Lock): Add intro.  Move font-lock-keywords-only,
 +      font-lock-syntax-table, font-lock-beginning-of-syntax-function,
 +      and font-lock-syntactic-face-function here from node "Other Font
 +      Lock Variables".  Move font-lock-syntactic-keywords to "Setting
 +      Syntax Properties".  Add cross references.
 +      (Setting Syntax Properties): New node.
 +      Move font-lock-syntactic-keywords here from "Syntactic Font Lock".
 +      * syntax.texi (Syntax Properties): Add cross reference.
 +      * hooks.texi (Standard Hooks): Add Font-Lock hooks.
 +
 +2005-04-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Faces):
 +      Document `default' elements of defface spec.
 +
 +      * modes.texi (Major Mode Conventions): Explain customizing ElDoc mode.
 +
 +      * variables.texi (Variable Aliases): Clarify text.
 +
 +2005-04-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * windows.texi (Window Hooks): Remove reference to obsolete Lazy Lock.
 +
 +2005-04-25  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * hooks.texi (Standard Hooks): Most minor modes have mode hooks too.
 +
 +2005-04-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * syntax.texi (Syntax Table Internals): Elaborate documentation of
 +      syntax-after and syntax-class.
 +
 +      * files.texi (Changing Files): Fix last change's cross-reference.
 +      (Unique File Names): Don't mention "numbers" in the documentation
 +      of make-temp-file and make-temp-name.
 +
 +2005-04-23  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Changing Files): Document MUSTBENEW arg in copy-file.
 +
 +2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * windows.texi (Cyclic Window Ordering): Clarify window-list.
 +
 +2005-04-22  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * variables.texi (Variable Aliases): Describe make-obsolete-variable
 +      and define-obsolete-variable-alias.
 +
 +2005-04-22  Kim F. Storm  <storm@cua.dk>
 +
 +      * symbols.texi (Symbol Plists): Remove safe-get, as get is now safe.
 +      (Other Plists): Remove safe-plist-get, as plist-get is now safe.
 +
 +2005-04-21  Lute Kamstra  <lute@gnu.org>
 +
 +      * lists.texi (Association Lists): Document rassq-delete-all.
 +
 +2005-04-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Search-based Fontification): Explain that
 +      facespec is an expression to be evaluated.
 +
 +2005-04-19  Kevin Ryde  <user42@zip.com.au>
 +
 +      * streams.texi (Output Functions): Fix xref.
 +      * strings.texi (String Conversion): Fix xref.
 +
 +2005-04-19  Kim F. Storm  <storm@cua.dk>
 +
 +      * symbols.texi (Symbol Plists): Add safe-get.
 +      Mention that `get' may signal an error.
 +
 +2005-04-18  Nick Roberts  <nickrob@snap.net.nz>
 +
 +      * customize.texi (Variable Definitions): Replace tooltip-mode
 +      example with save-place.
 +
 +2005-04-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * buffers.texi (Indirect Buffers): Clarify.
 +
 +      * positions.texi (Positions): Clarify converting marker to integer.
 +
 +      * strings.texi (String Basics): Mention string-match; clarify.
 +
 +2005-04-08  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Search-based Fontification): Fix cross references.
 +      Use consistent terminology.  Document anchored highlighting.
 +
 +2005-04-05  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): Document :group keyword
 +      argument and its default value.
 +
 +2005-04-03  Lute Kamstra  <lute@gnu.org>
 +
 +      * hooks.texi (Standard Hooks): Add some hooks.  Add cross
 +      references and/or descriptions.  Delete major mode hooks; mention
 +      them as a category instead.  Rename or delete obsolete hooks.
 +
 +2005-04-02  Richard M. Stallman  <rms@gnu.org>
 +
 +      * nonascii.texi (Coding System Basics): Another wording cleanup.
 +
 +2005-04-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * nonascii.texi (Coding System Basics): Clarify previous change.
 +
 +2005-04-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * nonascii.texi (Coding System Basics): Describe about rondtrip
 +      identity of coding systems.
 +
 +2005-03-29  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * text.texi (Buffer Contents): Add filter-buffer-substring and
 +      buffer-substring-filters.
 +
 +2005-03-26  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * anti.texi (Antinews): Mention `G' interactive code.
 +
 +      * tips.texi (Compilation Tips): Mention benchmark.el.
 +
 +2005-03-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * modes.texi (Other Font Lock Variables): `font-lock-fontify-block'
 +      is now bound to M-o M-o.
 +
 +      * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o.
 +
 +2005-03-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
 +
 +      * calendar.texi: Delete file (and move contents to emacs-xtra.texi
 +      in the Emacs Manual).
 +      * Makefile.in (srcs): Remove calendar.texi.
 +      * makefile.w32-in (srcs): Remove calendar.texi.
 +      * display.texi (Display): Change name of next node.
 +      * os.texi (System In): Change name of previous node.
 +      * elisp.texi (Top): Remove Calendar references.
 +      * vol1.texi (Top): Remove Calendar references.
 +      * vol2.texi (Top): Remove Calendar references.
 +
 +2005-03-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps):
 +      Cleanup previous change.
 +
 +2005-03-25  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Face Attributes): Faces earlier in an :inherit
 +      list take precedence.
 +      (Scroll Bars): Fix description of vertical-scroll-bars.
 +      Document frame-current-scroll-bars and window-current-scroll-bars.
 +
 +      * markers.texi (The Mark): Document temporary Transient Mark mode.
 +
 +      * minibuf.texi (Reading File Names):
 +      Document read-file-name-completion-ignore-case.
 +
 +      * positions.texi (Screen Lines): Document nil for width argument
 +      to compute-motion.
 +
 +2005-03-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Standard Faces): Other faces used in the fringe
 +      implicitly inherits from the fringe face.
 +      (Fringe Bitmaps): FACE in right-fringe and left-fringe display
 +      properties implicitly inherits from fringe face.
 +      (Customizing Bitmaps): Likewise for set-fringe-bitmap-face.
 +
 +2005-03-20  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * display.texi (Invisible Text): State default value of
 +      line-move-ignore-invisible.
 +      (Managing Overlays): Document remove-overlays.
 +      (Standard Faces): Document escape-glyph face.
 +
 +      * minibuf.texi (Reading File Names): Document read-file-name-function.
 +
 +      * modes.texi (Other Font Lock Variables):
 +      Document font-lock-lines-before.
 +
 +      * positions.texi (Skipping Characters): skip-chars-forward allows
 +      character classes.
 +
 +2005-03-18  Lute Kamstra  <lute@gnu.org>
 +
 +      * edebug.texi (Instrumenting Macro Calls): Fix another typo.
 +
 +2005-03-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Undo): Document extensible undo entries.
 +
 +      * searching.texi (String Search, Regexp Search, Regexp Search):
 +      Cleanups.
 +
 +      * nonascii.texi (Character Codes): Minor fix.
 +
 +      * display.texi (Display Property): Explain the significance
 +      of having text properties that are eq.
 +      (Other Display Specs): Explain string as display spec.
 +
 +      * commands.texi (Interactive Codes): Document G option.
 +
 +2005-03-17  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * text.texi (Filling): Add sentence-end-without-period and
 +      sentence-end-without-space.
 +      (Changing Properties): Minor fix.
 +
 +      * anti.texi: Total rewrite.
 +
 +2005-03-15  Lute Kamstra  <lute@gnu.org>
 +
 +      * edebug.texi (Instrumenting Macro Calls): Fix typos.
 +
 +2005-03-08  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Specified Space): Property :width is support on
 +      non-graphic terminals, :height is not.
 +
 +2005-03-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps):
 +      Now subnodes of Fringes.
 +      (Overlay Arrow): Document overlay-arrow-variable-list.
 +      (Fringe Size/Pos): New node, broken out of Fringes.
 +      (Display): Explain clearing vs redisplay better.
 +      (Truncation): Clarify use of bitmaps.
 +      (The Echo Area): Clarify the uses of the echo area.
 +      Add max-mini-window-height.
 +      (Progress): Clarify.
 +      (Invisible Text): Explain that main loop moves point out.
 +      (Selective Display): Say "hidden", not "invisible".
 +      (Managing Overlays): Move up.  Describe relation to Undo here.
 +      (Overlay Properties): Clarify intro.
 +      (Finding Overlays): Explain return values when nothing found.
 +      (Width): truncate-string-to-width has added arg.
 +      (Displaying Faces): Clarify and update mode line face handling.
 +      (Face Functions): Minor cleanup.
 +      (Conditional Display): Merge into Other Display Specs.
 +      (Pixel Specification, Other Display Specs): Minor cleanups.
 +      (Images, Image Descriptors): Minor cleanups.
 +      (GIF Images): Patents have expired.
 +      (Showing Images): Explain default text for insert-image.
 +      (Manipulating Button Types): Merge into Manipulating Buttons.
 +      (Making Buttons): Explain return values.
 +      (Button Buffer Commands): Add xref.
 +      (Inverse Video): Update mode-line-inverse-video.
 +      (Display Table Format): Clarify.
 +      (Active Display Table): Give defaults for window-display-table.
 +
 +      * calendar.texi (Calendar Customizing): calendar-holiday-marker
 +      and calendar-today-marker are strings, not chars.
 +      (Holiday Customizing): Minor fix.
 +
 +      * internals.texi (Writing Emacs Primitives): Update `or' example.
 +      Update limit on # args of subr.
 +
 +      * edebug.texi (Using Edebug): Arrow is in fringe.
 +      (Instrumenting): Arg to eval-defun works without loading edebug.
 +      (Edebug Execution Modes): Add xref.
 +
 +      * customize.texi (Common Keywords): Clarify :require.
 +      Mention :version here.
 +      (Variable Definitions, Group Definitions): Not here.
 +      (Variable Definitions): Clarify symbol arg to :initialize and :set fns.
 +
 +2005-03-07  Chong Yidong  <cyd@stupidchicken.com>
 +      * nonascii.texi (Text Representations): Clarify position-bytes.
 +      (Character Sets): Add list-charset-chars.
 +      (Scanning Charsets): Add charset-after.
 +      (Encoding and I/O): Minor fix.
 +
 +2005-03-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Vertical Scrolling): Get rid of "Emacs 21".
 +      (Resizing Windows): Likewise.
 +
 +      * text.texi (Change Hooks): Get rid of "Emacs 21".
 +
 +      * strings.texi (Formatting Strings): Get rid of "Emacs 21".
 +
 +      * streams.texi (Output Variables): Get rid of "Emacs 21".
 +
 +      * searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21".
 +
 +      * os.texi (Translating Input): Replace flow-control example
 +      with a less obsolete example that uses `keyboard-translate'.
 +
 +      * objects.texi (Hash Table Type, Circular Objects):
 +      Get rid of "Emacs 21".
 +
 +      * modes.texi (Mode Line Format): Get rid of "Emacs 21".
 +      (Mode Line Data, Properties in Mode, Header Lines): Likewise.
 +
 +      * minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21".
 +
 +      * lists.texi (List Elements, Building Lists): Get rid of "Emacs 21".
 +
 +      * keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21".
 +      (Menu Bar): Fix when menu-bar-update-hook is called.
 +
 +      * hash.texi (Hash Tables): Get rid of "Emacs 21".
 +
 +      * frames.texi (Text Terminal Colors): Get rid of "Emacs 21",
 +      and make it read better.
 +
 +      * files.texi (Writing to Files): Get rid of "Emacs 21".
 +      (Unique File Names): Likewise.
 +
 +      * elisp.texi: Update Emacs version to 22.
 +
 +      * display.texi (Forcing Redisplay): Get rid of "Emacs 21".
 +      (Overlay Properties, Face Attributes): Likewise.
 +      (Managing Overlays): Fix punctuation.
 +      (Attribute Functions): Clarify set-face-font; get rid of
 +      info about old Emacs versions.
 +      (Auto Faces, Font Lookup, Display Property, Images):
 +      Get rid of "Emacs 21".
 +
 +      * calendar.texi (Calendar Customizing): Get rid of "Emacs 21".
 +
 +2005-03-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * debugging.texi (Error Debugging): Remove stack-trace-on-error.
 +
 +2005-03-04  Lute Kamstra  <lute@gnu.org>
 +
 +      * debugging.texi (Error Debugging): Document stack-trace-on-error.
 +
 +2005-03-03  Lute Kamstra  <lute@gnu.org>
 +
 +      * edebug.texi (Instrumenting Macro Calls): Fix typo.
 +
 +2005-03-01  Lute Kamstra  <lute@gnu.org>
 +
 +      * debugging.texi (Debugger Commands): Update `j'.
 +
 +2005-02-28  Lute Kamstra  <lute@gnu.org>
 +
 +      * debugging.texi (Debugging): Fix typo.
 +      (Error Debugging): Document eval-expression-debug-on-error.
 +      (Function Debugging): Update example.
 +      (Using Debugger): Mention starred stack frames.
 +      (Debugger Commands): Document `j' and `l'.
 +      (Invoking the Debugger): `d' and `j' exit recursive edit too.
 +      Update the messages that the debugger displays.
 +      (Internals of Debugger): Add cross reference.  Update example.
 +      (Excess Open): Minor improvement.
 +      (Excess Close): Minor improvement.
 +
 +2005-02-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Clarify.
 +      Put all the major mode key reservations together.
 +      Mention the Mouse-1 => Mouse-2 conventions.
 +
 +      * syntax.texi (Syntax Class Table): Clarify.
 +      (Syntax Table Functions): syntax-after moved from here.
 +      (Syntax Table Internals): syntax-after moved to here.
 +      (Parsing Expressions): Update info on number of values
 +      and what's meaningful in the STATE argument.
 +      (Categories): Fix typo.
 +
 +      * sequences.texi (Arrays): Cleanup.
 +      (Char-Tables): Clarify.
 +
 +      * processes.texi (Deleting Processes): Cleanups, add xref.
 +      (Subprocess Creation): Explain nil in exec-path.  Cleanup.
 +      (Process Information): set-process-coding-system, some args optional.
 +      (Input to Processes): Explain various types for PROCESS args.
 +      Rename them from PROCESS-NAME to PROCESS.
 +      (Signals to Processes): Likewise.
 +      (Decoding Output): Cleanup.
 +      (Query Before Exit): Clarify.
 +
 +      * os.texi (Startup Summary): Correct the options; add missing ones.
 +      (Terminal Output, Batch Mode): Clarify.
 +      (Flow Control): Node deleted.
 +
 +      * markers.texi (The Mark): Clarify.
 +
 +      * macros.texi (Expansion): Cleanup.
 +      (Indenting Macros): indent-spec allows ints, not floats.
 +
 +      * keymaps.texi (Keymaps): Clarify.
 +      (Format of Keymaps): Update lisp-mode-map example.
 +      (Active Keymaps, Key Lookup): Clarify.
 +      (Changing Key Bindings): Add xref to `kbd'.
 +      (Key Binding Commands, Simple Menu Items): Clarify.
 +      (Mouse Menus, Menu Bar): Clarify.
 +      (Menu Example): Replace print example with menu-bar-replace-menu.
 +
 +      * help.texi (Documentation Basics): Add function-documentation prop.
 +
 +      * elisp.texi (Top): Don't refer to Flow Control node.
 +
 +      * commands.texi (Command Overview): Improve xrefs.
 +      (Adjusting Point): Adjusting point applies to intangible and invis.
 +      (Key Sequence Input): Doc extra read-key-sequence args.
 +      Likewise for read-key-sequence-vector.
 +
 +      * backups.texi (Rename or Copy): Minor fix.
 +      (Numbered Backups): For version-control, say the default.
 +      (Auto-Saving): make-auto-save-file-name example is simplified.
 +
 +      * advice.texi (Advising Functions): Don't imply one part of Emacs
 +      should advise another part.  Markup changes.
 +      (Defining Advice): Move transitional para.
 +      (Activation of Advice): Cleanup.
 +      Explain if COMPILE is nil or negative.
 +
 +      * abbrevs.texi (Abbrev Expansion): Clarify, fix typo.
 +
 +2005-02-24  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): Explain that INIT-VALUE,
 +      LIGHTER, and KEYMAP can be omitted when KEYWORD-ARGS are used.
 +
 +2005-02-23  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Defining Minor Modes): define-minor-mode can be used
 +      to define global minor modes as well.
 +
 +      * display.texi (Managing Overlays): overlay-buffer returns nil for
 +      deleted overlays.
 +
 +2005-02-22  Kim F. Storm  <storm@cua.dk>
 +
 +      * minibuf.texi (Basic Completion): Allow symbols in addition to
 +      strings in try-completion and all-completions.
 +
 +2005-02-14  Lute Kamstra  <lute@gnu.org>
 +
 +      * elisp.texi (Top): Remove reference to deleted node.
 +
 +      * lists.texi (Lists): Remove reference to deleted node.
 +      (Cons Cells): Fix typo.
 +
 +      * loading.texi (Where Defined): Fix typo.
 +
 +2005-02-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * variables.texi (Creating Buffer-Local): change-major-mode-hook
 +      is useful for discarding some minor modes.
 +
 +      * symbols.texi (Symbol Components): Reorder examples.
 +
 +      * streams.texi (Input Functions): State standard-input default.
 +      (Output Variables): State standard-output default.
 +
 +      * objects.texi (Printed Representation): Clarify read syntax vs print.
 +      (Floating Point Type): Explain meaning better.
 +      (Symbol Type): Explain uniqueness better.
 +      (Cons Cell Type): Explain empty list sooner.  CAR and CDR later.
 +      List examples sooner.
 +      (Box Diagrams): New subnode broken out.
 +      Some examples moved from old Lists as Boxes node.
 +      (Dotted Pair Notation): Clarify intro.
 +      (Array Type): Clarify.
 +      (Type Predicates): Add hash-table-p.
 +
 +      * numbers.texi (Integer Basics): Clarify radix explanation.
 +      (Predicates on Numbers): Minor clarification.
 +      (Comparison of Numbers): Minor clarification.  Clarify eql.
 +      Typos in min, max.
 +      (Math Functions): Clarify overflow in expt.
 +
 +      * minibuf.texi (Text from Minibuffer): Minor clarification.
 +      Mention arrow keys.
 +
 +      * loading.texi (Autoload): defun's doc string overrides autoload's
 +      doc string.
 +      (Repeated Loading): Modernize "add to list" examples.
 +      (Where Defined): Finish updating table of load-history elts.
 +
 +      * lists.texi (List-related Predicates): Minor wording improvement.
 +      (Lists as Boxes): Node deleted.
 +      (Building Lists): Explain trivial cases of number-sequence.
 +
 +      * hash.texi (Hash Tables): Add desc to menu items.
 +      (Creating Hash): Expain "full" means "make larger",
 +      (Hash Access): Any object can be a key.
 +      State value of maphash.
 +
 +      * functions.texi (What Is a Function): Wording cleanup.
 +      (Function Documentation): Minor cleanup.
 +      Explain purpose of calling convention at end of doc string.
 +      (Function Names): Wording cleanup.
 +      (Calling Functions): Wording cleanup.
 +      Explain better how funcall calls the function.
 +      (Function Cells): Delete example of saving and redefining function.
 +
 +      * control.texi (Combining Conditions): Wording cleanup.
 +      (Iteration): dolist and dotimes bind VAR locally.
 +      (Cleanups): Xref to Atomic Changes.
 +
 +      * compile.texi (Byte Compilation): Delete 19.29 info.
 +      (Compilation Functions): Macros' difficulties don't affect defsubst.
 +      (Docs and Compilation): Delete 19.29 info.
 +
 +2005-02-10  Richard M. Stallman  <rms@gnu.org>
 +
 +      * objects.texi (Symbol Type): Minor correction.
 +
 +2005-02-06  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Example Major Modes): Fix typos.
 +
 +2005-02-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Margins): fill-nobreak-predicate can be one function.
 +
 +      * strings.texi (Modifying Strings): clear-string can make unibyte.
 +      (Formatting Strings): format gives error if values missing.
 +
 +      * positions.texi (Character Motion): Mention default arg
 +      for forward-char.  backward-char refers to forward-char.
 +      (Word Motion): Mention default arg for forward-word.
 +      (Buffer End Motion): Mention default arg for beginning-of-buffer.
 +      Simplify end-of-buffer.
 +      (Text Lines): Mention default arg for forward-line.
 +      (List Motion): Mention default arg for beginning/end-of-defun.
 +      (Skipping Characters): Minor fixes in explaining character-set.
 +
 +      * modes.texi (Major Mode Conventions): Mention "system abbrevs".
 +      Mode inheritance applies only when default-major-mode is nil.
 +      Clarifications.
 +      (Example Major Modes): Update Text mode and Lisp mode examples.
 +      (Minor Mode Conventions): Mention define-minor-mode at top.
 +      (Defining Minor Modes): In Hungry example, don't define C-M-DEL.
 +      (Mode Line Format): Update mode line face display info.
 +      (Properties in Mode): Mention effect of risky vars.
 +      (Imenu): Define imenu-add-to-menubar.
 +      (Font Lock Mode): Add descriptions to menu lines.
 +      (Faces for Font Lock): Add font-lock-doc-face.
 +
 +2005-02-05  Lute Kamstra  <lute@gnu.org>
 +
 +      * text.texi (Maintaining Undo): Remove obsolete function.
 +
 +2005-02-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frames.texi (Color Names): Add pointer to the X docs about RGB
 +      color specifications.  Improve indexing
 +      (Text Terminal Colors): Replace the description of RGB values by
 +      an xref to "Color Names".
 +
 +2005-02-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Basic Windows): Add cursor-in-non-selected-windows.
 +      Clarify.
 +      (Selecting Windows): Clarify save-selected-window.
 +      (Cyclic Window Ordering): Clarify walk-windows.
 +      (Window Point): Clarify.
 +      (Window Start): Add comment to example.
 +      (Resizing Windows): Add `interactive' specs in examples.
 +      Document fit-window-to-buffer.
 +
 +      * text.texi (User-Level Deletion): just-one-space takes numeric arg.
 +      (Undo, Maintaining Undo): Clarify last change.
 +      (Sorting): In sort-numeric-fields, explain about octal and hex.
 +      Mention sort-numeric-base.
 +      (Format Properties): Add xref for hard newlines.
 +
 +      * frames.texi (Window Frame Parameters): Explain pixel=char on tty.
 +      (Pop-Up Menus): Fix typo.
 +      (Color Names): Explain all types of color names.
 +      Explain color-values on B&W terminal.
 +      (Text Terminal Colors): Explain "rgb values" are lists.  Fix arg names.
 +
 +      * files.texi (File Locks): Not supported on MS systems.
 +      (Testing Accessibility): Clarify.
 +
 +      * edebug.texi (Printing in Edebug): Fix edebug-print-circle.
 +      (Coverage Testing): Fix typo.
 +
 +      * commands.texi (Misc Events): Remove stray space.
 +
 +      * buffers.texi (Buffer Names): Clarify generate-new-buffer-name.
 +      (Modification Time): Clarify when visited-file-modtime returns 0.
 +      (The Buffer List): Clarify bury-buffer.
 +      (Killing Buffers): Clarify.
 +      (Indirect Buffers): Add clone-indirect-buffer.
 +
 +2005-02-02  Matt Hodges  <MPHodges@member.fsf.org>
 +
 +      * edebug.texi (Printing in Edebug): Fix default value of
 +      edebug-print-circle.
 +      (Coverage Testing): Fix displayed frequency count data.
 +
 +2005-02-02  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * text.texi (Maintaining Undo): Add `undo-outer-limit'.
 +
 +2005-02-02  Kim F. Storm  <storm@cua.dk>
 +
 +      * text.texi (Undo) <buffer-undo-list>: Describe `apply' elements.
 +
 +2005-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * commands.texi (Misc Events): Describe the help-echo event.
 +
 +      * text.texi (Special Properties) <help-echo>: Use `pos'
 +      consistently in description of the help-echo property.
 +      Use @code{nil} instead of @var{nil}.
 +
 +      * display.texi (Overlay Properties): Fix the index entry for
 +      help-echo overlay property.
 +
 +      * customize.texi (Type Keywords): Uncomment the xref to the
 +      help-echo property documentation.
 +
 +2005-01-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * windows.texi (Window Start): Fix `pos-visible-in-window-p'
 +      return value.  Third element FULLY replaced by PARTIAL which
 +      specifies number of invisible pixels if row is only partially visible.
 +      (Textual Scrolling): Mention auto-window-vscroll.
 +      (Vertical Scrolling): New defvar auto-window-vscroll.
 +
 +2005-01-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * keymaps.texi (Changing Key Bindings): `suppress-keymap' now uses
 +      command remapping.
 +
 +2005-01-15  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Defining Images): Mention DATA-P arg of create-image.
 +
 +2005-01-14  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Accessing Events): Add WHOLE arg to posn-at-x-y.
 +
 +      * text.texi (Links and Mouse-1): Fix string and vector item.
 +
 +2005-01-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Active Keymaps): Rewrite the text, and update the
 +      descriptions of overriding-local-map and overriding-terminal-local-map.
 +
 +      * text.texi (Links and Mouse-1): Clarify text.
 +
 +2005-01-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * modes.texi (Emulating Mode Line): Update format-mode-line entry.
 +
 +2005-01-13  Francis Litterio  <franl@world.std.com>  (tiny change)
 +
 +      * keymaps.texi (Active Keymaps): Fix overriding-local-map description.
 +
 +2005-01-12  Kim F. Storm  <storm@cua.dk>
 +
 +      * text.texi (Links and Mouse-1): Rename section from Enabling
 +      Mouse-1 to Following Links.  Change xrefs.
 +      Add examples for define-button-type and define-widget.
 +
 +      * display.texi (Button Properties, Button Buffer Commands):
 +      Clarify mouse-1 and follow-link functionality.
 +
 +2005-01-12  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Enabling Mouse-1 to Follow Links): Redo prev. change.
 +
 +      * display.texi (Beeping): Fix Texinfo usage.
 +
 +      * modes.texi (Emulating Mode Line): Doc FACE arg in format-header-line.
 +
 +2005-01-11  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Button Properties, Button Buffer Commands):
 +      Mention mouse-1 binding.  Add follow-link keyword.
 +
 +      * text.texi (Text Properties): Add "Enable Mouse-1" to submenu.
 +      (Enabling Mouse-1 to Follow Links): New subsection.
 +
 +2005-01-06  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Minor change.
 +
 +      * os.texi (Timers): Clarify previous change.
 +
 +      * modes.texi (Emulating Mode Line): format-mode-line requires 1 arg.
 +
 +2005-01-01  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Face Attributes): Correct xref to renamed node.
 +
 +2005-01-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Face Attributes): Describe hex color specs.
 +
 +2004-12-31  Richard M. Stallman  <rms@gnu.org>
 +
 +      * os.texi (Timers): Update previous change.
 +
 +2004-12-30  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Line Height): Total line-height is now specified
 +      in line-height property of form (HEIGHT TOTAL).  Swap (FACE . RATIO)
 +      in cons cells.  (nil . RATIO) is relative to actual line height.
 +      Use line-height `t' instead of `0' to get minimum height.
 +
 +2004-12-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * os.texi (Timers): Discuss timers vs editing the buffer and undo.
 +
 +2004-12-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Quitting): Clarify value of with-local-quit.
 +
 +      * elisp.texi (Top): Fix previous change.
 +
 +      * loading.texi (Loading): Fix previous change.
 +
 +2004-12-27  Richard M. Stallman  <rms@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): Specify --force.
 +
 +      * buffers.texi (Killing Buffers): Add buffer-save-without-query.
 +
 +      * modes.texi (Emulating Mode Line): Document format's BUFFER arg.
 +
 +      * display.texi (Line Height): Further clarify.
 +
 +      * elisp.texi (Top): Update Loading submenu.
 +
 +      * loading.texi (Where Defined): New node.
 +      (Unloading): load-history moved to Where Defined.
 +
 +2004-12-21  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Event Input Misc): Add while-no-input.
 +
 +2004-12-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Line Height): Rewrite text for clarity.
 +
 +2004-12-11  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Display): Add node "Line Height" to menu.
 +      (Line Height): New node.  Move full description of line-spacing
 +      and line-height text properties here from text.texi.
 +      (Scroll Bars): Add vertical-scroll-bar variable.
 +
 +      * frames.texi (Window Frame Parameters): Remove line-height defvar.
 +
 +      * locals.texi (Standard Buffer-Local Variables): Fix xref for
 +      line-spacing and vertical-scroll-bar.
 +
 +      * text.texi (Special Properties): Just mention line-spacing and
 +      line-height here, add xref to new "Line Height" node.
 +
 +2004-12-09  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * frames.texi (Window Frame Parameters): New @defvar for `line-spacing'.
 +
 +      * locals.texi (Standard Buffer-Local Variables):
 +      Add @xref for `line-spacing'.
 +
 +2004-12-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * Makefile.in (maintainer-clean): Remove the info files
 +      in $(infodir) where they are created.
 +
 +2004-12-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Selecting Windows): get-lru-window and
 +      get-largest-window don't consider dedicated windows.
 +
 +      * text.texi (Undo): Document undo-in-progress.
 +
 +2004-11-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * locals.texi (Standard Buffer-Local Variables): Undo prev change.
 +      Remove a few vars that are not always buffer-local.
 +
 +2004-11-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * locals.texi (Standard Buffer-Local Variables): Comment out
 +      xref's to non-existent node `Yet to be written'.
 +
 +2004-11-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Synchronous Processes): Grammar fix.
 +
 +      * numbers.texi (Comparison of Numbers): Add eql.
 +
 +      * locals.texi (Standard Buffer-Local Variables): Add many vars.
 +
 +      * intro.texi (Printing Notation): Fix previous change.
 +
 +      * display.texi (Customizing Bitmaps): Move indicate-buffer-boundaries
 +      and default-indicate-buffer-boundaries from here.
 +      (Usual Display): To here.
 +      (Scroll Bars): Add scroll-bar-mode and scroll-bar-width.
 +      (Usual Display): Move tab-width up.
 +
 +      * customize.texi (Variable Definitions): Replace
 +      show-paren-mode example with tooltip-mode.
 +      (Simple Types, Composite Types, Defining New Types):
 +      Minor cleanups.
 +
 +2004-11-21  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * processes.texi (Synchronous Processes, Output from Processes):
 +      Markup fix.
 +
 +2004-11-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * positions.texi (Skipping Characters): skip-chars-forward
 +      now handles char classes.
 +
 +      * intro.texi (Printing Notation): Avoid confusion of `print'
 +      when explaining @print.
 +
 +      * macros.texi (Argument Evaluation): Fix 1st `for' expansion example.
 +
 +      * display.texi (Display Table Format): Minor fix.
 +
 +      * streams.texi (Output Functions): Fix print example.
 +
 +      * Makefile.in (elisp): New target.
 +      (dist): Depend on $(infodir)/elisp, not elisp.
 +      Copy the info files from $(infodir).
 +
 +      * minibuf.texi (Text from Minibuffer): Document KEEP-ALL arg in
 +      read-from-minibuffer.
 +
 +      * searching.texi (Regexp Search): Rename that to search-spaces-regexp.
 +
 +2004-11-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * searching.texi (Regexp Search): Add search-whitespace-regexp.
 +
 +2004-11-19  CHENG Gao  <chenggao@gmail.com>  (tiny change)
 +
 +      * tips.texi (Coding Conventions): Fix typo.
 +
 +2004-11-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Separate defvar and require
 +      methods to avoid warnings.  Use require only when there are many
 +      functions and variables from that package.
 +
 +      * minibuf.texi (Minibuffer Completion): When ignoring case,
 +      predicate must not be case-sensitive.
 +
 +      * debugging.texi (Function Debugging, Explicit Debug): Clarified.
 +      (Test Coverage): Don't talk about "splotches".  Clarified.
 +
 +2004-11-16  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * frames.texi (Window Frame Parameters): Fix typo.
 +
 +2004-11-15  Kim F. Storm  <storm@cua.dk>
 +
 +      * symbols.texi (Other Plists): Note that plist-get may signal error.
 +      Add safe-plist-get.
 +
 +2004-11-15  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * modes.texi (Font Lock Basics): Fix typo.
 +
 +2004-11-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Syntax Table Functions): Add syntax-after.
 +
 +2004-11-06  Lars Brinkhoff  <lars@nocrew.org>
 +
 +      * os.texi (Processor Run Time): New section documenting
 +      get-internal-run-time.
 +
 +2004-11-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as
 +      it nukes elisp-cover.texi.
 +      (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no
 +      elisp-0 etc.
 +
 +2004-11-05  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * commands.texi (Keyboard Macros): Document `append' return value
 +      of `defining-kbd-macro'.
 +
 +2004-11-01  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Interactive Call): Add called-interactively-p.
 +
 +2004-10-29  Simon Josefsson  <jas@extundo.com>
 +
 +      * minibuf.texi (Reading a Password): Revert.
 +
 +2004-10-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Display Feature Testing): Explain about "vendor".
 +
 +2004-10-27  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Interactive Codes): `N' uses numeric prefix,
 +      not raw.  Clarify `n'.
 +      (Interactive Call): Rewrite interactive-p, focusing on when
 +      and how to use it.
 +      (Misc Events): Clarify previous change.
 +
 +      * advice.texi (Simple Advice): Clarify what job the example does.
 +      (Around-Advice): Clarify ad-do-it.
 +      (Activation of Advice): An option of ad-default-compilation-action
 +      is `never', not `nil'.
 +
 +2004-10-26  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Interactive Codes): Add U code letter.
 +
 +2004-10-25  Simon Josefsson  <jas@extundo.com>
 +
 +      * minibuf.texi (Reading a Password): Add.
 +
 +2004-10-24  Jason Rumney  <jasonr@gnu.org>
 +
 +      * commands.texi (Misc Events): Remove mouse-wheel.  Add wheel-up
 +      and wheel-down.
 +
 +2004-10-24  Kai Grossjohann  <kai.grossjohann@gmx.net>
 +
 +      * processes.texi (Synchronous Processes): Document process-file.
 +
 +2004-10-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * text.texi (translate-region): Document that it accepts also a
 +      char-table.
 +
 +2004-10-22  David Ponce  <david@dponce.com>
 +
 +      * windows.texi (Resizing Windows): Document the `preserve-before'
 +      argument of the functions `enlarge-window' and `shrink-window'.
 +
 +2004-10-19  Jason Rumney  <jasonr@gnu.org>
 +
 +      * makefile.w32-in (elisp): Change order of arguments to makeinfo.
 +
 +2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * text.texi (Filling): Add anchor for definition of
 +      `sentence-end-double-space'.
 +
 +      * searching.texi (Regexp Example): Update description of how
 +      Emacs currently recognizes the end of a sentence.
 +      (Standard Regexps): Update definition of the variable
 +      `sentence-end'.  Add definition of the function `sentence-end'.
 +
 +2004-10-08  Paul Pogonyshev  <pogonyshev@gmx.net>
 +
 +      * display.texi (Progress): New node.
 +
 +2004-10-05  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
 +
 +2004-09-29  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Fringe Bitmaps): Use symbols rather than numbers
 +      to identify bitmaps.  Remove -fringe-bitmap suffix for standard
 +      fringe bitmap symbols, as they now have their own namespace.
 +      (Customizing Bitmaps) <define-fringe-bitmap>: Clarify bit ordering
 +      vs. pixels.  Signal error if no free bitmap slots.
 +      (Pixel Specification): Change IMAGE to @var{image}.
 +
 +2004-09-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Clarify line-spacing and line-height.
 +
 +      * searching.texi (Regexp Search): Add looking-back.
 +
 +2004-09-25  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi: Correct typos.
 +      (Image Descriptors): Correct xref's.
 +
 +2004-09-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Special Properties): Cleanups in `cursor'.
 +      Rewrites in `line-height' and `line-spacing'; exchange them.
 +
 +      * display.texi (Fringes): Rewrite previous change.
 +      (Fringe Bitmaps): Merge text from Display Fringe Bitmaps.  Rewrite.
 +      (Display Fringe Bitmaps): Node deleted, text moved.
 +      (Customizing Bitmaps): Split off from Fringe Bitmaps.  Rewrite.
 +      (Scroll Bars): Clarify set-window-scroll-bars.
 +      (Pointer Shape): Rewrite.
 +      (Specified Space): Clarify :align-to, etc.
 +      (Pixel Specification): Use @var.  Clarify new text.
 +      (Other Display Specs): Clarify `slice'.
 +      (Image Descriptors): Cleanups.
 +      (Showing Images): Cleanups.
 +
 +2004-09-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'.
 +
 +      * modes.texi: Various minor changes in addition to:
 +      (Major Mode Conventions): Final call to `run-mode-hooks' should
 +      not be inside the `delay-mode-hooks' form.
 +      (Mode Hooks): New node.
 +      (Hooks): Delete obsolete example.
 +      Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new
 +      node "Mode Hooks".
 +
 +2004-09-22  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi: Correct various typos.
 +      (Display): Rename node "Pointer Shapes" to "Pointer
 +      Shape".  (There is already a node called "Pointer Shapes" in
 +      frames.texi.)
 +      (Images): Remove non-existent node "Image Slices" from menu.
 +
 +2004-09-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * text.texi (Special Properties): Add `cursor', `pointer',
 +      `line-height', and `line-spacing' properties.
 +
 +      * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer
 +      Shapes' to menu.
 +      (Standard Faces): Doc fix for fringe face.
 +      (Fringes): Add `overflow-newline-into-fringe' and
 +      'indicate-buffer-boundaries'.
 +      (Fringe Bitmaps, Pointer Shapes): New nodes.
 +      (Display Property): Add 'Pixel Specification' and 'Display Fringe
 +      Bitmaps' to menu.
 +      (Specified Space): Describe pixel width and height.
 +      (Pixel Specification): New node.
 +      (Other Display Specs): Add `slice' property.
 +      (Display Fringe Bitmaps): New node.
 +      (Images): Add 'Image Slices' to menu.
 +      (Image Descriptors): Add `:pointer' and `:map' properties.
 +      (Showing Images): Add slice arg to `insert-image'.  Add
 +      'insert-sliced-image'.
 +
 +2004-09-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Key Sequence Input):
 +      Clarify downcasing in read-key-sequence.
 +
 +2004-09-08  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'.
 +
 +2004-09-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * locals.texi (Standard Buffer-Local Variables): Add
 +      `buffer-auto-save-file-format'.
 +      * internals.texi (Buffer Internals): Describe new
 +      auto_save_file_format field of the buffer structure.
 +      * files.texi (Format Conversion): `auto-save-file-format' has been
 +      renamed `buffer-auto-save-file-format'.
 +
 +2004-08-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be
 +      an integer or a marker.
 +      (Abbrev Expansion): Replace example for `pre-abbrev-expand-hook'.
 +
 +2004-08-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Major Mode Conventions): Discuss rebinding of
 +      standard key bindings.
 +
 +2004-08-18  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Accepting Output): Add `just-this-one' arg to
 +      `accept-process-output'.
 +      (Output from Processes): New var `process-adaptive-read-buffering'.
 +
 +2004-08-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * keymaps.texi: Various changes in addition to:
 +      (Keymap Terminology): `kbd' uses same syntax as Edit Macro mode.
 +      Give more varied examples for `kbd'.
 +      (Creating Keymaps): Char tables have slots for all characters
 +      without modifiers.
 +      (Active Keymaps): `overriding-local-map' and
 +      `overriding-terminal-local-map' also override text property and
 +      overlay keymaps.
 +      (Functions for Key Lookup): Mention OLP arg to `current-active-maps'.
 +      (Scanning Keymaps): `accessible-keymaps' uses `[]' instead of `""'
 +      to denote a prefix of no events.
 +      `map-keymap' includes parent's bindings _recursively_.
 +      Clarify and correct description of `where-is-internal'.
 +      Mention BUFFER-OR-NAME arg to `describe-bindings'.
 +      (Menu Example): For menus intended for use with the keyboard, the
 +      menu items should be bound to characters or real function keys.
 +
 +2004-08-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * objects.texi (Character Type): Reposition `@anchor' to prevent
 +      double space inside sentence in Info.
 +
 +      * hooks.texi (Standard Hooks): `disabled-command-hook' has been
 +      renamed to `disabled-command-function'.
 +      * commands.texi (Key Sequence Input): Remove unnecessary anchor.
 +      (Command Loop Info): Replace reference to it.
 +      (Disabling Commands): `disabled-command-hook' has been renamed to
 +      `disabled-command-function'.
 +
 +2004-08-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * os.texi (Translating Input): Only non-prefix bindings in
 +      `key-translation-map' override actual key bindings.  Warn about
 +      possible indirect effect of actual key bindings on non-prefix
 +      bindings in `key-translation-map'.
 +
 +2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * minibuf.texi (High-Level Completion): Add anchor for definition
 +      of `read-variable'.
 +
 +      * commands.texi: Various changes in addition to:
 +      (Using Interactive): Clarify description of `interactive-form'.
 +      (Interactive Call): Mention default for KEYS argument to
 +      `call-interactively'.
 +      (Command Loop Info): Clarify description of `this-command-keys'.
 +      Mention KEEP-RECORD argument to `clear-this-command-keys'.
 +      Value of `last-event-frame' can be `macro'.
 +      (Repeat Events): `double-click-fuzz' is also used to distinguish
 +      clicks and drags.
 +      (Classifying Events): Clarify descriptions of `event-modifiers'
 +      `event-basic-type' and `event-convert-list'.
 +      (Accessing Events): `posn-timestamp' takes POSITION argument.
 +      (Quoted Character Input): Clarify description of
 +      `read-quoted-char' and fix example.
 +      (Quitting): Add `with-local-quit'.
 +      (Disabling Commands): Correct and clarify descriptions of
 +      `enable-command' and `disable-command'.
 +      Mention what happens if `disabled-command-hook' is nil.
 +      (Keyboard Macros): Mention LOOPFUNC arg to `execute-kbd-macro'.
 +      Describe `executing-kbd-macro' instead of obsolete `executing-macro'.
 +
 +2004-07-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi: Various changes in addition to:
 +      (Creating Frames): Expand and clarify description of `make-frame'.
 +      (Window Frame Parameters): Either none or both of the `icon-left'
 +      and `icon-top' parameters must be specified.  Put descriptions of
 +      `menu-bar-lines' and `toolbar-lines' closer together and change
 +      them accordingly.
 +      (Frame Titles): `multiple-frames' is not guaranteed to be accurate
 +      except while processing `frame-title-format' or `icon-title-format'.
 +      (Deleting Frames): Correct description of `delete-frame'.
 +      Non-nil return values of `frame-live-p' are like those of `framep'.
 +      (Frames and Windows): Mention return value of
 +      `set-frame-selected-window'.
 +      (Visibility of Frames): Mention `force' argument to
 +      `make-frame-invisible'.  `frame-visible-p' returns t for all
 +      frames on text-only terminals.
 +      (Frame Configurations): Restoring a frame configuration does not
 +      restore deleted frames.
 +      (Window System Selections): `x-set-selection' returns DATA.
 +      (Resources): Add example.
 +      (Display Feature Testing): Clarify descriptions of
 +      `display-pixel-height', `display-pixel-width', `x-server-version'
 +      and `x-server-vendor'.
 +
 +      * windows.texi (Choosing Window): Add anchor.
 +      * minibuf.texi (Minibuffer Misc): Add anchor.
 +
 +2004-07-23  John Paul Wallington  <jpw@gnu.org>
 +
 +      * macros.texi (Defining Macros): Declaration keyword for setting
 +      Edebug spec is `debug' not `edebug'.
 +
 +2004-07-19  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * windows.texi: Various small changes in addition to:
 +      (Window Point): Mention return value of `set-window-point'.
 +      (Window Start): `pos-visible-in-window-p' disregards horizontal
 +      scrolling.  Explain return value if PARTIALLY is non-nil.
 +      (Vertical Scrolling): Mention PIXELS-P argument to `window-vscroll'
 +      and `set-window-vscroll'.
 +      (Size of Window): The argument WINDOW to `window-inside-edges',
 +      `window-pixel-edges' and `window-inside-pixel-edges' is optional.
 +      (Resizing Windows): Explain return value of
 +      `shrink-window-if-larger-than-buffer'.
 +      `window-size-fixed' automatically becomes buffer local when set.
 +      (Window Configurations): Explain return value of
 +      `set-window-configuration'.
 +
 +      * minibuf.texi (Minibuffer Misc): Add anchor for
 +      `minibuffer-scroll-window'.
 +
 +      * positions.texi (Text Lines): Add anchor for `count-lines'.
 +
 +2004-07-17  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Overlay Properties): Adding `evaporate' prop
 +      deletes empty overlay immediately.
 +
 +      * abbrevs.texi (Abbrev Expansion): Clarify pre-abbrev-expand-hook,
 +      fix example.
 +
 +2004-07-16  Jim Blandy  <jimb@redhat.com>
 +
 +      * searching.texi (Regexp Backslash): Document new \_< and \_>
 +      operators.
 +
 +2004-07-16  Juanma Barranquero  <lektu@terra.es>
 +
 +      * display.texi (Images): Fix Texinfo usage.
 +
 +2004-07-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * buffers.texi (Modification Time): `visited-file-modtime' now
 +      returns a list of two integers, instead of a cons.
 +
 +2004-07-13  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * windows.texi: Various changes in addition to:
 +      (Splitting Windows): Add `split-window-keep-point'.
 +
 +2004-07-09  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Input Focus): Minor fix.
 +
 +2004-07-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * frames.texi (Input Focus): Clarify descriptions of
 +      `select-frame-set-input-focus' and `select-frame'.
 +
 +2004-07-06  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * os.texi: Various small changes in addition to:
 +      (Killing Emacs): Expand and clarify description of
 +      `kill-emacs-query-functions' and `kill-emacs-hook'.
 +      (System Environment): Expand and clarify description of `getenv'
 +      and `setenv'.
 +      (Timers): Clarify description of `run-at-time'.
 +      (Translating Input): Correct description of
 +      `extra-keyboard-modifiers'.
 +      (Flow Control): Correct description of `enable-flow-control'.
 +
 +2004-07-06  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * os.texi: Update copyright.
 +      (Session Management): Grammar fix.
 +      Clarify which Emacs does the restarting.
 +      Use @samp for *scratch* buffer.
 +
 +2004-07-04  Alan Mackenzie  <acm@muc.de>
 +
 +      * frames.texi (Input Focus): Add documentation for
 +      `select-frame-set-input-focus'.  Replace refs to non-existent
 +      `switch-frame' with `select-frame'.  Minor corrections and tidying
 +      up of text-only terminal stuff.
 +
 +2004-07-02  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Saving Buffers): Cleanup write-contents-function.
 +      (Magic File Names): Cleanup file-remote-p.
 +
 +2004-07-02  Kai Grossjohann  <kai@emptydomain.de>
 +
 +      * files.texi (Magic File Names): `file-remote-p' returns an
 +      identifier of the remote system, not just t.
 +
 +2004-07-02  David Kastrup  <dak@gnu.org>
 +
 +      * searching.texi (Entire Match Data): Add explanation about new
 +      match-data behavior when @var{integers} is non-nil.
 +
 +2004-06-24  Richard M. Stallman  <rms@gnu.org>
 +
 +      * commands.texi (Misc Events): Describe usr1-signal, usr2-signal event.
 +
 +      * customize.texi (Variable Definitions): Note about doc strings
 +      and :set.
 +
 +      * keymaps.texi (Keymap Terminology): Document `kbd'.
 +      (Changing Key Bindings, Key Binding Commands): Use kbd in examples.
 +
 +      * display.texi (Invisible Text): Setting buffer-invisibility-spec
 +      makes it buffer-local.
 +
 +      * files.texi (Saving Buffers): Correct previous change.
 +
 +      * commands.texi (Accessing Events):
 +      Clarify posn-col-row and posn-actual-col-row.
 +
 +2004-06-24  David Ponce  <david.ponce@wanadoo.fr>
 +
 +      * commands.texi (Accessing Events): New functions
 +      posn-at-point and posn-at-x-y.  Add example to posn-x-y.
 +
 +2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi, files.texi, processes.texi, macros.texi, hash.texi:
 +      * frames.texi, buffers.texi, backups.texi, variables.texi:
 +      * loading.texi, eval.texi, functions.texi, control.texi:
 +      * symbols.texi, minibuf.texi: Reposition @anchor's.
 +
 +      * help.texi: Various small changes in addition to the following.
 +      (Describing Characters): Describe PREFIX argument to
 +      `key-description'.  Correct and clarify definition of
 +      `text-char-description'.  Describe NEED-VECTOR argument to
 +      `read-kbd-macro'.
 +      (Help Functions): Clarify definition of `apropos'.
 +
 +2004-06-23  Lars Hansen  <larsh@math.ku.dk>
 +
 +      * files.texi (Saving Buffers): Correct description of
 +      `write-contents-functions'.
 +
 +2004-06-21  Juanma Barranquero  <lektu@terra.es>
 +
 +      * display.texi (Images): Remove redundant @vindex directives.
 +      Rewrite `image-library-alist' doc in active voice.
 +
 +2004-06-14  Juanma Barranquero  <lektu@terra.es>
 +
 +      * display.texi (Images): Document new delayed library loading,
 +      variable `image-library-alist' and (existing but undocumented)
 +      function `image-type-available-p'.
 +
 +2004-06-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Minibuffer Completion): For INITIAL arg,
 +      refer the user to the Initial Input node.
 +      (Text from Minibuffer): Likewise.
 +      (Initial Input): New node.  Document this feature
 +      and say it is mostly deprecated.
 +
 +2004-05-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * loading.texi (Named Features): Clarify return value
 +      and meaning of NOERROR.
 +
 +      * variables.texi (File Local Variables): Minor cleanup.
 +
 +2004-05-30  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.texi (Magic File Names): Add `file-remote-p' as operation
 +      of file name handlers.
 +
 +2004-05-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Minor Mode Conventions): (-) has no special meaning
 +      as arg to a minor mode command.
 +
 +2004-05-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * syntax.texi (Syntax Class Table): Word syntax not just for English.
 +
 +      * streams.texi (Output Variables): Doc float-output-format.
 +
 +      * searching.texi (Regexp Special): Nested repetition can be infloop.
 +
 +      * eval.texi (Eval): Increasing max-lisp-eval-depth can cause
 +      real stack overflow.
 +
 +      * compile.texi: Minor cleanups.
 +
 +2004-05-22  Luc Teirlinck  <teirllm@dms.auburn.edu>
 +
 +      * lists.texi (Cons Cells): Explain dotted lists, true lists,
 +      circular lists.
 +      (List Elements): Explain handling of circular and dotted lists.
 +
 +2004-05-19  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * modes.texi (Search-based Fontification): Fix typo.
 +
 +2004-05-10  Juanma Barranquero  <lektu@terra.es>
 +
 +      * modes.texi (Mode Line Variables): Fix description of
 +      global-mode-string, which is now after which-func-mode, not the
 +      buffer name.
 +
 +2004-05-07  Lars Hansen  <larsh@math.ku.dk>
 +
 +      * modes.texi (Desktop Save Mode): Add.
 +      (Modes): Add menu entry Desktop Save Mode.
 +
 +      * hooks.texi: Add desktop-after-read-hook,
 +      desktop-no-desktop-file-hook and desktop-save-hook.
 +
 +      * locals.texi: Add desktop-save-buffer.
 +
 +2004-04-30  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * display.texi: emacs -> Emacs.
 +
 +2004-04-27  Matthew Mundell  <matt@mundell.ukfsn.org>
 +
 +      * files.texi (Changing Files): Document set-file-times.
 +
 +2004-04-23  Juanma Barranquero  <lektu@terra.es>
 +
 +      * makefile.w32-in: Add "-*- makefile -*-" mode tag.
 +
 +2004-04-18  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * tips.texi (Coding Conventions): defopt -> defcustom.
 +
 +2004-04-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * sequences.texi: Various clarifications.
 +
 +2004-04-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * buffers.texi (Read Only Buffers): Mention optional ARG to
 +      `toggle-read-only'.
 +
 +2004-04-14  Nick Roberts  <nick@nick.uklinux.net>
 +
 +      * windows.texi (Selecting Windows): Note that get-lru-window
 +      returns a full-width window if possible.
 +
 +2004-04-13  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * buffers.texi: Various changes in addition to:
 +      (Buffer File Name): Add `find-buffer-visiting'.
 +      (Buffer Modification): Mention optional ARG to `not-modified'.
 +      (Indirect Buffers): Mention optional CLONE argument to
 +      `make-indirect-buffer'.
 +
 +      * files.texi: Various changes in addition to:
 +      (Visiting Functions): `find-file-hook' is now a normal hook.
 +      (File Name Expansion): Explain difference between the way that
 +      `expand-file-name' and `file-truename' treat `..'.
 +      (Contents of Directories): Mention optional ID-FORMAT argument to
 +      `directory-files-and-attributes'.
 +      (Format Conversion): Mention new optional CONFIRM argument to
 +      `format-write-file'.
 +
 +2004-04-12  Miles Bader  <miles@gnu.org>
 +
 +      * macros.texi (Expansion): Add description of `macroexpand-all'.
 +
 +2004-04-05  Jesper Harder  <harder@ifa.au.dk>
 +
 +      * variables.texi (Variable Aliases): Mention
 +      cyclic-variable-indirection.
 +
 +      * errors.texi (Standard Errors): Ditto.
 +
 +2004-04-04  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * backups.texi: Various small changes in addition to:
 +      (Making Backups): Mention return value of `backup-buffer'.
 +      (Auto-Saving): Mention optional FORCE argument to
 +      `delete-auto-save-file-if-necessary'.
 +      (Reverting): Mention optional PRESERVE-MODES argument to
 +      `revert-buffer'.  Correct description of `revert-buffer-function'.
 +
 +2004-03-22  Juri Linkov  <juri@jurta.org>
 +
 +      * sequences.texi (Sequence Functions): Replace xref to `Vectors'
 +      with `Vector Functions'.
 +
 +      * text.texi (Sorting): Add missing quote.
 +
 +2004-03-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * intro.texi (Lisp History): Replace xref to `cl' manual with
 +      inforef.
 +
 +2004-03-12  Richard M. Stallman  <rms@gnu.org>
 +
 +      * intro.texi (Version Info): Add arg to emacs-version.
 +      (Lisp History): Change xref to CL manual.
 +
 +2004-03-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * minibuf.texi (Completion Commands): Add xref to Emacs manual
 +      for Partial Completion mode.
 +
 +2004-03-07  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * customize.texi: Fix typo.  Remove eol whitespace.
 +
 +2004-03-04  Richard M. Stallman  <rms@gnu.org>
 +
 +      * processes.texi: Fix typos.
 +
 +      * lists.texi (Building Lists): Minor clarification.
 +
 +      * hash.texi (Creating Hash): Correct the meaning of t for WEAK
 +      in make-hash-table.
 +
 +2004-02-29  Juanma Barranquero  <lektu@terra.es>
 +
 +      * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of
 +      rm, and ignore exit code.
 +
 +2004-02-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * display.texi (Defining Faces): Add description for min-colors.
 +      Update example.
 +
 +2004-02-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * abbrevs.texi: Various corrections and clarifications in addition
 +      to the following:
 +      (Abbrev Tables): Delete add-abbrev (as suggested by RMS).
 +
 +2004-02-22  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
 +
 +      * calendar.texi (Holiday Customizing): Quote arg of holiday-sexp.
 +
 +2004-02-21  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * text.texi: Various small changes in addition to the following:
 +      (User-Level Deletion): Mention optional BACKWARD-ONLY argument
 +      to delete-horizontal-space.
 +      (Kill Functions, Yanking, Low-Level Kill Ring): Clarify and correct
 +      description of yank-handler text property at various places.
 +
 +      * frames.texi (Window System Selections): Add anchor.
 +
 +      * syntax.texi (Syntax Table Functions): Clarify and correct
 +      descriptions of make-syntax-table and copy-syntax-table.
 +      (Motion and Syntax): Clarify SYNTAXES argument to
 +      skip-syntax-forward.
 +      (Parsing Expressions): Mention that the return value of
 +      parse-partial-sexp is currently a list of ten rather than nine
 +      elements.
 +      (Categories): Various corrections and clarifications.
 +
 +2004-02-17  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * markers.texi (Marker Insertion Types): Minor change.
 +
 +      * locals.texi (Standard Buffer-Local Variables):
 +      * commands.texi (Interactive Codes, Using Interactive):
 +      * functions.texi (Related Topics): Fix xrefs.
 +
 +2004-02-16  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Sets And Lists): Update description of delete-dups.
 +
 +2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
 +
 +      * keymaps.texi (Tool Bar): tool-bar-item => tool-bar-button.
 +
 +2004-02-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frames.texi (Parameter Access): frame-parameters arg is optional.
 +      modify-frame-parameters handles nil for FRAME.
 +      (Window Frame Parameters): menu-bar-lines and tool-bar-lines
 +      are all-or-nothing for certain toolkits.
 +      Mention parameter wait-for-wm.
 +      (Frames and Windows): In frame-first-window and frame-selected-window
 +      the arg is optional.
 +      (Input Focus): In redirect-frame-focus the second arg is optional.
 +      (Window System Selections): Mention selection type CLIPBOARD.
 +      Mention data-type UTF8_STRING.
 +      Mention numbering of cut buffers.
 +      (Resources): Describe x-resource-name.
 +
 +2004-02-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Buffers and Windows): Delete false table
 +      about all-frames.
 +
 +      * syntax.texi (Parsing Expressions): Delete old caveat
 +      about parse-sexp-ignore-comments.
 +
 +      * streams.texi (Output Variables): Add print-quoted.
 +
 +      * lists.texi (Building Lists): Minor cleanup.
 +
 +      * hash.texi (Creating Hash): Correct and clarify doc of WEAK values.
 +
 +      * display.texi (Overlays): Explain overlays use markers.
 +      (Managing Overlays): Explain front-advance and rear-advance
 +      in more detail.
 +
 +      * loading.texi (Unloading): Document unload-feature-special-hooks.
 +      Get rid of fns-NNN.el file.
 +
 +2004-02-16  Matthew Mundell  <matt@mundell.ukfsn.org>  (tiny change)
 +
 +      * help.texi (Describing Characters): Fix text-char-description
 +      example output.
 +
 +      * edebug.texi (Using Edebug): Fix example.
 +
 +      * debugging.texi (Internals of Debugger): Fix return value.
 +
 +      * files.texi (Changing Files): Fix argname.
 +
 +      * calendar.texi: Fix parens, and default values.
 +
 +      * display.texi, frames.texi, internals.texi, modes.texi: Minor fixes.
 +      * nonascii.texi, objects.texi, os.texi: Minor fixes.
 +      * searching.texi, text.texi, tips.texi, windows.text: Minor fixes.
 +
 +      * positions.texi (Text Lines): Don't add -1 in current-line.
 +
 +2004-02-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * compile.texi (Compiler Errors): if-boundp feature applies to cond.
 +
 +2004-02-16  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
 +
 +      * processes.texi (Low-Level Network): Fix a typo.
 +
 +2004-02-12  Kim F. Storm  <storm@cua.dk>
 +
 +      * display.texi (Fringes): Use consistent wording.
 +      Note that window-fringe's window arg is optional.
 +      (Scroll Bars): Use consistent wording.
 +
 +2004-02-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Comment Tips): Document the new conventions for
 +      commenting out code.
 +
 +2004-02-07  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * positions.texi (Text Lines): Added missing end defun.
 +
 +2004-02-07  Kim F. Storm  <storm@cua.dk>
 +
 +      * positions.texi (Text Lines): Add line-number-at-pos.
 +
 +2004-02-06  John Paul Wallington  <jpw@gnu.org>
 +
 +      * display.texi (Button Properties, Button Buffer Commands):
 +      mouse-2 invokes button, not down-mouse-1.
 +
 +2004-02-04  Jason Rumney  <jasonr@gnu.org>
 +
 +      * makefile.w32-in: Sync with Makefile.in changes.
 +
 +2004-02-03  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * minibuf.texi (Text from Minibuffer): Various corrections and
 +      clarifications.
 +      (Object from Minibuffer): Correct Lisp description of
 +      read-minibuffer.
 +      (Minibuffer History): Clarify description of cons values for
 +      HISTORY arguments.
 +      (Basic Completion): Various corrections and clarifications.  Add
 +      completion-regexp-list.
 +      (Minibuffer Completion): Correct and clarify description of
 +      completing-read.
 +      (Completion Commands): Mention Partial Completion mode.  Various
 +      other minor changes.
 +      (High-Level Completion): Various corrections and clarifications.
 +      (Reading File Names): Ditto.
 +      (Minibuffer Misc): Ditto.
 +
 +2004-01-26  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * strings.texi (Text Comparison): assoc-string also matches
 +      elements of alists that are strings instead of conses.
 +      (Formatting Strings): Standardize Texinfo usage.  Update index
 +      entries.
 +
 +2004-01-20  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Sets And Lists): Add delete-dups.
 +
 +2004-01-15  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * edebug.texi (Instrumenting Macro Calls): `declare' is not a
 +      special form.
 +      * macros.texi (Defining Macros): Update description of `declare',
 +      which now is a macro.
 +      (Wrong Time): Fix typos.
 +
 +2004-01-14  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * compile.texi (Compilation Functions): Expand descriptions of
 +      `compile-defun', `byte-compile-file', `byte-recompile-directory'
 +      and `batch-byte-compile'.  In particular, mention and describe
 +      all optional arguments.
 +      (Disassembly): Correct and clarify the description of `disassemble'.
 +
 +2004-01-11  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * searching.texi: Various small changes in addition to the
 +      following.
 +      (Regexp Example): Adapt to new value of `sentence-end'.
 +      (Regexp Functions): The PAREN argument to `regexp-opt' can be
 +      `words'.
 +      (Search and Replace): Add usage note for `perform-replace'.
 +      (Entire Match Data): Mention INTEGERS and REUSE arguments to
 +      `match-data'.
 +      (Standard Regexps): Update for new values of `paragraph-start'
 +      and `sentence-end'.
 +
 +2004-01-07  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * files.texi (Saving Buffers): Clarify descriptions of
 +      `write-contents-functions' and `before-save-hook'.
 +      Make the defvar's for `before-save-hook' and `after-save-hook'
 +      into defopt's.
 +
 +2004-01-07  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Click Events): Describe new image and
 +      width/height elements of click events.
 +      (Accessing Events): Add posn-string, posn-image, and
 +      posn-object-width-height.  Change posn-object to return either
 +      image or string object.
 +
 +2004-01-01  Simon Josefsson  <jas@extundo.com>
 +
 +      * hooks.texi (Standard Hooks): Add before-save-hook.
 +      * files.texi (Saving Buffers): Likewise.
 +
 +2004-01-03  Richard M. Stallman  <rms@gnu.org>
 +
 +      * frames.texi (Frames and Windows): Delete frame-root-window.
 +
 +2004-01-03  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * eval.texi, hash.texi, help.texi, symbols.texi: Add anchors.
 +
 +      * functions.texi: Various small changes in addition to the
 +      following.
 +      (What Is a Function): `functionp' returns nil for macros.  Clarify
 +      behavior of this and following functions for symbol arguments.
 +      (Function Documentation): Add `\' in front of (fn @var{arglist})
 +      and explain why.
 +      (Defining Functions): Mention DOCSTRING argument to `defalias'.
 +      Add anchor.
 +      (Mapping Functions): Add anchor.  Unquote nil in mapcar* example.
 +
 +2004-01-01  Miles Bader  <miles@gnu.org>
 +
 +      * display.texi (Buttons): New section.
 +
 +2003-12-31  Andreas Schwab  <schwab@suse.de>
 +
 +      * numbers.texi (Math Functions): sqrt reports a domain-error
 +      error.
 +      (Float Basics): Use `(/ 0.0 0.0)' instead of `(sqrt -1.0)'.
 +
 +2003-12-30  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Documentation Tips): Update item on hyperlinks in
 +      documentation strings.
 +
 +      * errors.texi (Standard Errors): Various small corrections and
 +      additions.
 +
 +      * control.texi: Various small changes in addition to the
 +      following.
 +      (Signaling Errors): Provide some more details on how `signal'
 +      constructs the error message.  Add anchor to the definition of
 +      `signal'.
 +      (Error Symbols): Describe special treatment of `quit'.
 +      (Cleanups): Rename BODY argument of `unwind-protect' to BODY-FORM
 +      to emphasize that it has to be a single form.
 +
 +      * buffers.texi: Add anchor.
 +
 +2003-12-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Choosing Window): Add same-window-p, special-display-p.
 +      (Window Configurations): Add window-configuration-frame.
 +
 +      * variables.texi (Creating Buffer-Local): Add local-variable-if-set-p.
 +
 +      * text.texi (Examining Properties): Add get-char-property-and-overlay.
 +      Change arg name in get-char-property.
 +      (Special Properties): Update handling of keymap property.
 +
 +      * strings.texi (Modifying Strings): Add clear-string.
 +      (Text Comparison): Add assoc-string and remove
 +      assoc-ignore-case, assoc-ignore-representation.
 +
 +      * os.texi (Time of Day): Add set-time-zone-rule.
 +
 +      * numbers.texi (Math Functions): asin, acos, log, log10
 +      report domain-error errors.
 +
 +      * nonascii.texi (Converting Representations):
 +      Add multibyte-char-to-unibyte and unibyte-char-to-multibyte.
 +      (Encoding and I/O): Add file-name-coding-system.
 +
 +      * modes.texi (Search-based Fontification): Explain that
 +      face specs are symbols with face names as values.
 +
 +      * minibuf.texi (Minibuffer Misc): Add set-minibuffer-window.
 +
 +      * lists.texi (Building Lists): remq moved elsewhere.
 +      (Sets And Lists): remq moved here.
 +      (Association Lists): Refer to assoc-string.
 +
 +      * internals.texi (Garbage Collection): Add memory-use-counts.
 +
 +      * frames.texi (Frames and Windows): Add set-frame-selected-window
 +      and frame-root-window.
 +
 +      * files.texi (Contents of Directories):
 +      Add directory-files-and-attributes.
 +
 +      * display.texi (Refresh Screen): Add force-window-update.
 +      (Invisible Text): Explain about moving point out of invis text.
 +      (Overlay Properties): Add overlay-properties.
 +      (Managing Overlays): Add overlayp.
 +      (GIF Images): Invalid image number displays a hollow box.
 +
 +      * buffers.texi (Buffer Modification): Add restore-buffer-modified-p.
 +      (Killing Buffers): Add buffer-live-p.
 +
 +2003-12-25  Markus Rost  <rost@mathematik.uni-bielefeld.de>
 +
 +      * display.texi (Fringes): Fix typo "set-buffer-window".
 +
 +2003-12-24  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi, eval.texi, help.texi, internals.texi, loading.texi:
 +      * nonascii.texi, processes.texi, tips.texi, variables.texi:
 +      Add or change various xrefs and anchors.
 +
 +      * commands.texi: Replace all occurrences of @acronym{CAR} with
 +      @sc{car}, for consistency with the rest of the Elisp manual.
 +      `car' and `cdr' are historically acronyms, but are no longer
 +      widely thought of as such.
 +
 +      * internals.texi (Pure Storage): Mention that `purecopy' does not
 +      copy text properties.
 +      (Object Internals): Now 29 bits are used (in most implementations)
 +      to address Lisp objects.
 +
 +      * variables.texi (Variables with Restricted Values): New node.
 +
 +      * objects.texi (Lisp Data Types): Mention that certain variables
 +      can only take on a restricted set of values and add an xref to
 +      the new node "Variables with Restricted Values".
 +
 +      * eval.texi (Function Indirection): Describe the errors that
 +      `indirect-function' can signal.
 +      (Eval): Clarify the descriptions of `eval-region' and `values'.
 +      Describe `eval-buffer' instead of `eval-current-buffer' and
 +      mention `eval-current-buffer' as an alias for `current-buffer'.
 +      Correct the description and mention all optional arguments.
 +
 +      * nonascii.texi: Various small changes in addition to the
 +      following.
 +      (Converting Representations): Clarify behavior of
 +      `string-make-multibyte' and `string-to-multibyte' for unibyte all
 +      ASCII arguments.
 +      (Character Sets): Document the variable `charset-list' and adapt
 +      the definition of the function `charset-list' accordingly.
 +      (Translation of Characters): Clarify use of generic characters in
 +      `make-translation-table'.  Clarify and correct the description of
 +      the use of translation tables in encoding and decoding.
 +      (User-Chosen Coding Systems): Correct and clarify the description
 +      of `select-safe-coding-system'.
 +      (Default Coding Systems): Clarify description of
 +      `file-coding-system-alist'.
 +
 +2003-11-30  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * strings.texi (Text Comparison): Correctly describe when two
 +      strings are `equal'.  Combine and clarify descriptions of
 +      `assoc-ignore-case' and `assoc-ignore-representation'.
 +
 +      * objects.texi (Non-ASCII in Strings): Clarify description of
 +      when a string is unibyte or multibyte.
 +      (Bool-Vector Type): Update examples.
 +      (Equality Predicates): Correctly describe when two strings are
 +      `equal'.
 +
 +2003-11-29  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * lists.texi (Building Lists): `append' no longer accepts integer
 +      arguments.  Update the description of `number-sequence' to reflect
 +      recent changes.
 +      (Sets And Lists): Describe `member-ignore-case' after `member'.
 +
 +2003-11-27  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Click Events): Click object may be an images.
 +      Describe (dx . dy) element of click positions.
 +      (Accessing Events): Remove duplicate posn-timestamp.
 +      New functions posn-object and posn-object-x-y.
 +
 +2003-11-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * commands.texi (Click Events): Describe enhancements to event
 +      position lists, including new text-pos and (col . row) items.
 +      Mention left-fringe and right-fringe area events.
 +      (Accessing Events): New functions posn-area and
 +      posn-actual-col-row.  Mention posn-timestamp.  Mention that
 +      posn-point in non-text area still returns buffer position.
 +      Clarify posn-col-row.
 +
 +2003-11-21  Lars Hansen  <larsh@math.ku.dk>
 +
 +      * files.texi (File Attributes): Describe new parameter ID-FORMAT.
 +      * anti.texi (File Attributes): Describe removed parameter
 +      ID-FORMAT.
 +
 +2003-11-20  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * positions.texi (Positions): Mention that, if a marker is used as
 +      a position, its buffer is ignored.
 +
 +      * markers.texi (Overview of Markers): Mention it here too.
 +
 +2003-11-12  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * numbers.texi (Numeric Conversions): Not just `floor', but also
 +      `truncate', `ceiling' and `round' accept optional argument DIVISOR.
 +
 +2003-11-10  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * markers.texi (Creating Markers): Specify insertion type of
 +      created markers.  Add xref to `Marker Insertion Types'.
 +      Second argument to `copy-marker' is optional.
 +      (Marker Insertion Types): Mention that most markers are created
 +      with insertion type nil.
 +      (The Mark): Correctly describe when `mark' signals an error.
 +      (The Region): Correctly describe when `region-beginning' and
 +      `region-end' signal an error.
 +
 +2003-11-08  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * hash.texi (Creating Hash): Clarify description of `eql'.
 +      `makehash' is obsolete.
 +      (Hash Access): Add Common Lisp notes for `remhash' and `clrhash'.
 +
 +      * positions.texi (Point): Change description of `buffer-end', so
 +      that it is also correct for floating point arguments.
 +      (List Motion): Correct argument lists of `beginning-of-defun' and
 +      `end-of-defun'.
 +      (Excursions): Add xref to `Marker Insertion Types'.
 +      (Narrowing): Argument to `narrow-to-page' is optional.
 +
 +2003-11-06  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * streams.texi (Output Streams): Clarify behavior of point for
 +      marker output streams.
 +
 +2003-11-04  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * variables.texi (Defining Variables): Second argument to
 +      `defconst' is not optional.
 +      (Setting Variables): Mention optional argument APPEND to
 +      `add-to-list'.
 +      (Creating Buffer-Local): Expand description of
 +      `make-variable-buffer-local'.
 +      (Frame-Local Variables): Expand description of
 +      `make-variable-frame-local'.
 +      (Variable Aliases): Correct description of optional argument
 +      DOCSTRING to `defvaralias'.  Mention return value of
 +      `defvaralias'.
 +      (File Local Variables): Add xref to `File variables' in Emacs
 +      Manual.  Correct description of `hack-local-variables'.  Mention
 +      `safe-local-variable' property.  Mention optional second argument
 +      to `risky-local-variable-p'.
 +
 +2003-11-03  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * symbols.texi (Symbol Plists): Mention return value of `setplist'.
 +
 +2003-11-02  Jesper Harder  <harder@ifa.au.dk>  (tiny change)
 +
 +      * lispref/anti.texi, lispref/backups.texi, lispref/commands.texi
 +      lispref/customize.texi, lispref/display.texi, lispref/files.texi,
 +      lispref/internals.texi, lispref/keymaps.texi, lispref/loading.texi,
 +      lispref/modes.texi, lispref/nonascii.texi, lispref/numbers.texi,
 +      lispref/objects.texi, lispref/os.texi, lispref/positions.texi,
 +      lispref/processes.texi, lispref/searching.texi,
 +      lispref/sequences.texi, lispref/streams.texi, lispref/strings.texi,
 +      lispref/syntax.texi, lispref/text.texi: Replace @sc{foo} with
 +      @acronym{FOO}.
 +
 +2003-10-27  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * strings.texi (Creating Strings): Argument START to `substring'
 +      can not be `nil'.  Expand description of
 +      `substring-no-properties'.  Correct description of `split-string',
 +      especially with respect to empty matches.  Prevent very bad line
 +      break in definition of `split-string-default-separators'.
 +      (Text Comparison): `string=' and `string<' also accept symbols as
 +      arguments.
 +      (String Conversion): More completely describe argument BASE in
 +      `string-to-number'.
 +      (Formatting Strings): `%s' and `%S' in `format' do require
 +      corresponding object.  Clarify behavior of numeric prefix after
 +      `%' in `format'.
 +      (Case Conversion): The argument to `upcase-initials' can be a
 +      character.
 +
 +2003-10-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * display.texi (Fontsets): Fix texinfo usage.
 +
 +2003-10-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * display.texi (Fontsets): Add description of the function
 +      set-fontset-font.
 +
 +2003-10-23  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * display.texi (Temporary Displays): Add xref to `Documentation
 +      Tips'.
 +
 +      * functions.texi (Function Safety): Use inforef instead of pxref
 +      for SES.
 +
 +2003-10-23  Andreas Schwab  <schwab@suse.de>
 +
 +      * Makefile.in (TEX, texinputdir): Don't define.
 +      (TEXI2DVI): Define.
 +      (srcs): Remove $(srcdir)/index.perm and $(srcdir)/index.unperm,
 +      add $(srcdir)/index.texi.
 +      ($(infodir)/elisp): Remove index.texi dependency.
 +      (elisp.dvi): Likewise.  Use $(TEXI2DVI).
 +      (index.texi): Remove target.
 +      (dist): Don't link $(srcdir)/permute-index.
 +      (clean): Don't remove index.texi.
 +
 +      * permute-index, index.perm: Remove.
 +      * index.texi: Rename from index.unperm.
 +
 +2003-10-22  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Documentation Tips): Document new behavior for face
 +      and variable hyperlinks in Help mode.
 +
 +2003-10-21  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * objects.texi (Integer Type): Update for extra bit of integer range.
 +      (Character Type): Ditto.
 +
 +2003-10-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * numbers.texi (Integer Basics): Add index entries for reading
 +      numbers in hex, octal, and binary.
 +
 +2003-10-16  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Mode Line Format): Mention force-mode-line-update's
 +      argument.
 +
 +2003-10-13  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * windows.texi (Choosing Window): Fix typo.
 +      * edebug.texi (Edebug Execution Modes): Fix typo.
 +
 +2003-10-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * windows.texi (Basic Windows): A window has fringe settings,
 +      display margins and scroll-bar settings.
 +      (Splitting Windows): Doc split-window return value.
 +      Clean up one-window-p.
 +      (Selecting Windows): Fix typo.
 +      (Cyclic Window Ordering): Explain frame as ALL-FRAMES in next-window.
 +      (Buffers and Windows): In set-window-buffer, explain effect
 +      on fringe settings and scroll bar settings.
 +      (Displaying Buffers): In pop-to-buffer, explain nil as buffer arg.
 +      (Choosing Window): Use defopt for pop-up-frame-function.
 +      For special-display-buffer-names, explain same-window and same-frame.
 +      Clarify window-dedicated-p return value.
 +      (Textual Scrolling): scroll-up and scroll-down can get an error.
 +      (Horizontal Scrolling): Clarify auto-hscroll-mode.
 +      Clarify set-window-hscroll.
 +      (Size of Window): Don't mention tool bar in window-height.
 +      (Coordinates and Windows): Explain what coordinates-in-window-p
 +      returns for fringes and display margins.
 +      (Window Configurations): Explain saving fringes, etc.
 +
 +      * tips.texi (Library Headers): Clean up Documentation.
 +
 +      * syntax.texi (Parsing Expressions): Clean up forward-comment
 +      and parse-sexp-lookup-properties.
 +
 +      * sequences.texi (Sequence Functions): sequencep accepts bool-vectors.
 +
 +      * os.texi (System Environment): Clean up text for load-average errors.
 +
 +      * modes.texi (Hooks): Don't explain local hook details at front.
 +      Clarify run-hooks and run-hook-with-args a little.
 +      Clean up add-hook and remove-hook.
 +
 +      * edebug.texi (Edebug Execution Modes): Clarify t.
 +      Document edebug-sit-for-seconds.
 +      (Coverage Testing): Document C-x X = and =.
 +      (Instrumenting Macro Calls): Fix typo.
 +      (Specification List): Don't index the specification keywords.
 +
 +2003-10-10  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Network): Introduce make-network-process.
 +
 +2003-10-09  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * tips.texi (Library Headers): Fix typo.
 +
 +2003-10-07  Juri Linkov  <juri@jurta.org>
 +
 +      * modes.texi (Imenu): Mention imenu-create-index-function's
 +      default value.  Explain submenus better.
 +
 +2003-10-07  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Faces for Font Lock): Fix typo.
 +      (Hooks): Explain how buffer-local hook variables can refer to
 +      global hook variables.
 +      Various minor clarifications.
 +
 +2003-10-06  Lute Kamstra  <lute@gnu.org>
 +
 +      * tips.texi (Coding Conventions): Mention naming conventions for
 +      hooks.
 +
 +2003-10-05  Luc Teirlinck  <teirllm@auburn.edu>
 +
 +      * loading.texi (Library Search): Correct default value of
 +      load-suffixes.
 +      (Named Features): Fix typo.
 +
 +2003-10-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * loading.texi (Named Features): In `provide',
 +      say how to test for subfeatures.
 +      (Unloading): In unload-feature, use new var name
 +      unload-feature-special-hooks.
 +
 +2003-10-03  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Major Mode Conventions): Mention third way to set up
 +      Imenu.
 +      (Imenu): A number of small fixes.
 +      Delete documentation of internal variable imenu--index-alist.
 +      Document the return value format of imenu-create-index-function
 +      functions.
 +
 +2003-09-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * processes.texi (Network): Say what stopped datagram connections do.
 +
 +      * lists.texi (Association Lists): Clarify `assq-delete-all'.
 +
 +      * display.texi (Overlay Properties): Clarify `evaporate' property.
 +
 +2003-09-29  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Mode Line Data): Explain when symbols in mode-line
 +      constructs should be marked as risky.
 +      Change cons cell into proper list.
 +      (Mode Line Variables): Change cons cell into proper list.
 +
 +2003-09-26  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (Mode Line Data): Document the :propertize construct.
 +      (Mode Line Variables): Reorder the descriptions of the variables
 +      to match their order in the default mode-line-format.
 +      Describe the new variables mode-line-position and mode-line-modes.
 +      Update the default values of mode-line-frame-identification,
 +      minor-mode-alist, and default-mode-line-format.
 +      (Properties in Mode): Mention the :propertize construct.
 +
 +2003-09-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * buffers.texi, commands.texi, debugging.texi, eval.texi:
 +      * loading.texi, minibuf.texi, text.texi, variables.texi:
 +      Avoid @strong{Note:}.
 +
 +2003-09-26  Richard M. Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi (Remapping Commands): Fix typo.
 +
 +2003-09-23  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * processes.texi (Low-Level Network): Fix typo.
 +
 +2003-09-23  Kim F. Storm  <storm@cua.dk>
 +
 +      * processes.texi (Network, Network Servers): Fix typos.
 +      (Low-Level Network): Add timeout value for :server keyword.
 +      Add new option keywords to make-network-process.
 +      Add set-network-process-options.
 +      Explain how to test availability of network options.
 +
 +2003-09-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Motion by Indent): Arg to
 +      backward-to-indentation and forward-to-indentation is optional.
 +
 +      * strings.texi (Creating Strings): Add substring-no-properties.
 +
 +      * processes.texi
 +      (Process Information): Add list-processes arg QUERY-ONLY.
 +      Delete process-contact from here.
 +      Add new status values for process-status.
 +      Add process-get, process-put, process-plist, set-process-plist.
 +      (Synchronous Processes): Add call-process-shell-command.
 +      (Signals to Processes): signal-process allows process objects.
 +      (Network): Complete rewrite.
 +      (Network Servers, Datagrams, Low-Level Network): New nodes.
 +
 +      * positions.texi (Word Motion): forward-word, backward-word
 +      arg is optional.  Reword.
 +
 +      * abbrevs.texi (Defining Abbrevs): Index no-self-insert.
 +
 +      * variables.texi (Creating Buffer-Local):
 +      Delete duplicate definition of buffer-local-value.
 +      (File Local Variables): Explain about discarding text props.
 +
 +2003-09-11  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Intro to Minibuffers): Explain that the minibuffer
 +      changes variables that record input events.
 +      (Minibuffer Misc): Add minibuffer-selected-window.
 +
 +      * lists.texi (Building Lists): Add copy-tree.
 +
 +      * display.texi (Fontsets): Add char-displayable-p.
 +      (Scroll Bars): New node.
 +
 +2003-09-08  Lute Kamstra  <lute@gnu.org>
 +
 +      * modes.texi (%-Constructs): Document new `%i' and `%I'
 +      constructs.
 +
 +2003-09-03  Peter Runestig  <peter@runestig.com>
 +
 +      * makefile.w32-in: New file.
 +
 +2003-08-29  Richard M. Stallman  <rms@gnu.org>
 +
 +      * display.texi (Overlay Properties): Clarify how priorities
 +      affect use of the properties.
 +
 +2003-08-19  Luc Teirlinck  <teirllm@mail.auburn.edu>
 +
 +      * customize.texi (Type Keywords): Correct the description of
 +      `:help-echo' in the case where `motion-doc' is a function.
 +
 +2003-08-14  John Paul Wallington  <jpw@gnu.org>
 +
 +      * modes.texi (Emulating Mode Line): Subsection, not section.
 +
 +2003-08-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi (Top): Update subnode lists in menu.
 +
 +      * text.texi (Insertion): Add insert-buffer-substring-no-properties.
 +      (Kill Functions): kill-region has new arg yank-handler.
 +      (Yanking): New node.
 +      (Yank Commands): Add yank-undo-function.
 +      (Low-Level Kill Ring):
 +      kill-new and kill-append have new arg yank-handler.
 +      (Changing Properties): Add remove-list-of-text-properties.
 +      (Atomic Changes): New node.
 +
 +      * symbols.texi (Other Plists): Add lax-plist-get, lax-plist-put.
 +
 +      * streams.texi (Output Variables): Add eval-expression-print-length
 +      and eval-expression-print-level.
 +
 +      * os.texi (Time Conversion): For encode-time, explain limits on year.
 +
 +      * objects.texi (Character Type): Define anchor "modifier bits".
 +
 +      * modes.texi (Emulating Mode Line): New node.
 +      (Search-based Fontification): Font Lock uses font-lock-face property.
 +      (Other Font Lock Variables): Likewise.
 +
 +      * keymaps.texi (Format of Keymaps): Keymaps contain char tables,
 +      not vectors.
 +      (Active Keymaps): Add emulation-mode-map-alists.
 +      (Functions for Key Lookup): key-binding has new arg no-remap.
 +      (Remapping Commands): New node.
 +      (Scanning Keymaps): where-is-internal has new arg no-remap.
 +      (Tool Bar): Add tool-bar-local-item-from-menu.
 +      Clarify when to use tool-bar-add-item-from-menu.
 +
 +      * commands.texi (Interactive Call): commandp has new arg.
 +      (Command Loop Info): Add this-original-command.
 +
 +2003-08-06  John Paul Wallington  <jpw@gnu.org>
 +
 +      * compile.texi (Compiler Errors): Say `@end defmac' after `@defmac'.
 +
 +      * display.texi (Warning Basics): Fix typo.
 +      (Fringes): Add closing curly bracket and fix typo.
 +
 +      * elisp.texi (Top): Fix typo.
 +
 +2003-08-05  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi: Update lists of subnodes.
 +
 +      * windows.texi (Buffers and Windows): set-window-buffer has new arg.
 +
 +      * variables.texi (Local Variables): Use lc for example variable names.
 +
 +      * tips.texi (Library Headers): Explain where to put -*-.
 +
 +      * strings.texi (Creating Strings): Fix xref for vconcat.
 +
 +      * sequences.texi (Vector Functions):
 +      vconcat no longer allows integer args.
 +
 +      * 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'
 +      (Indenting Macros): New node.
 +
 +      * frames.texi (Parameter Access): Add modify-all-frames-parameters.
 +      (Window Frame Parameters): Make separate table of parameters
 +      that are coupled with specific face attributes.
 +      (Deleting Frames): delete-frame-hooks renamed to
 +      delete-frame-functions.
 +
 +      * files.texi (Magic File Names): Add file-remote-p.
 +      Clarify file-local-copy.
 +
 +      * edebug.texi (Instrumenting Macro Calls): Don't define `declare'
 +      here; instead xref Defining Macros.
 +
 +      * display.texi (Warnings): New node, and subnodes.
 +      (Fringes): New node.
 +
 +      * debugging.texi (Test Coverage): New node.
 +
 +      * compile.texi (Compiler Errors): Explain with-no-warnings
 +      and other ways to suppress warnings.
 +
 +      * commands.texi (Interactive Call): Minor clarification.
 +
 +      * buffers.texi (Buffer File Name): set-visited-file-name
 +      renames the buffer too.
 +
 +      * abbrevs.texi (Abbrev Tables): Add copy-abbrev-table.
 +
 +2003-07-24  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * abbrevs.texi (Abbrev Expansion): Use \s syntax in example.
 +
 +2003-07-22  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * internals.texi (Garbage Collection): Fix previous change.
 +
 +2003-07-22  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Truenames): Add LIMIT arg to file-chase-links.
 +
 +      * display.texi (Width): Use \s syntax in example.
 +      (Font Selection): Add face-font-rescale-alist.
 +
 +      * modes.texi (Imenu): Add xref to Emacs Manual node on Imenu.
 +      Remove spurious indent in example.
 +
 +      * lists.texi (Building Lists): Add number-sequence.
 +
 +      * internals.texi (Garbage Collection): Add gcs-done, gc-elapsed.
 +
 +      * functions.texi (Function Documentation): Explain how to
 +      show calling convention explicitly in the doc string.
 +
 +      * windows.texi (Selecting Windows): save-selected-window saves
 +      selected window of each frame.
 +      (Window Configurations): Minor change.
 +
 +      * syntax.texi (Syntax Table Functions): Use \s syntax in examples.
 +
 +      * streams.texi (Output Variables): Add print-continuous-numbering
 +      and print-number-table.
 +
 +      * processes.texi (Decoding Output): New node.
 +
 +      * os.texi (Time Conversion): decode-time arg is optional.
 +
 +      * objects.texi (Character Type): Don't use space as example for \.
 +      Make list of char names and \-sequences correspond.
 +      Explain that \s is not used in strings.  `\ ' needs space after.
 +
 +      * nonascii.texi (Converting Representations): Add string-to-multibyte.
 +      (Translation of Characters): Add translation-table-for-input.
 +      (Default Coding Systems): Add auto-coding-functions.
 +      (Explicit Encoding): Add decode-coding-inserted-region.
 +      (Locales): Add locale-info.
 +
 +      * minibuf.texi (Basic Completion): Describe test-completion.
 +      Collections can be lists of strings.
 +      Clean up lazy-completion-table.
 +      (Programmed Completion): Mention test-completion.
 +      Clarify why lambda expressions are not accepted.
 +      (Minibuffer Misc): Describe minibufferp.
 +
 +2003-07-14  Richard M. Stallman  <rms@gnu.org>
 +
 +      * buffers.texi (Killing Buffers): kill-buffer-hook is perm local.
 +
 +      * windows.texi (Selecting Windows): New arg to select-window.
 +      (Selecting Windows): Add with-selected-window.
 +      (Size of Window): Add window-inside-edges, etc.
 +
 +      * internals.texi (Garbage Collection): Add post-gc-hook.
 +
 +      * processes.texi (Subprocess Creation): Add exec-suffixes.
 +
 +      * keymaps.texi (Functions for Key Lookup): Add current-active-maps.
 +      (Scanning Keymaps): Add map-keymaps.
 +      (Defining Menus): Add keymap-prompt.
 +
 +      * numbers.texi (Integer Basics): Add most-positive-fixnum,
 +      most-negative-fixnum.
 +
 +      * compile.texi (Byte Compilation): Explain no-byte-compile
 +      (Compiler Errors): New node.
 +
 +      * os.texi (User Identification): user-uid, user-real-uid
 +      can return float.
 +
 +      * modes.texi (Major Mode Conventions): Explain about run-mode-hooks
 +      and about derived modes.
 +      (Minor Modes): Add minor-mode-list.
 +      (Defining Minor Modes): Keyword args for define-minor-mode.
 +      (Search-based Fontification): Explain managing other properties.
 +      (Other Font Lock Variables): Add font-lock-extra-managed-props.
 +      (Faces for Font Lock): Add font-locl-preprocessor-face.
 +      (Hooks): Add run-mode-hooks and delay-mode-hooks.
 +
 +      * variables.texi (Creating Buffer-Local): Add buffer-local-value.
 +      (Variable Aliases): Clarify defvaralias.
 +
 +      * loading.texi (Library Search): Add load-suffixes.
 +
 +      * minibuf.texi (Basic Completion): Add lazy-completion-table.
 +      (Programmed Completion): Add dynamic-completion-table.
 +
 +      * files.texi (Changing Files): copy-file allows dir as NEWNAME.
 +      (Magic File Names): Specify precedence order of handlers.
 +
 +      * commands.texi (Command Overview): Emacs server runs pre-command-hook
 +      and post-command-hook.
 +      (Waiting): New calling convention for sit-for.
 +
 +      * text.texi (Special Properties): local-map and keymap properties
 +      apply based on their stickiness.
 +
 +2003-07-07  Richard M. Stallman  <rms@gnu.org>
 +
 +      * modes.texi (Minor Mode Conventions): Specify only some kinds
 +      of list values as args to minor modes.
 +
 +      * files.texi (File Name Expansion): Warn about iterative use
 +      of substitute-in-file-name.
 +
 +      * advice.texi (Activation of Advice): Clean up previous change.
 +
 +2003-07-06  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * advice.texi (Activation of Advice): Note that ad-start-advice is
 +      turned on by default.
 +
 +2003-06-30  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Buffer Contents): Document current-word.
 +      (Change Hooks): Not called for *Messages*.
 +
 +      * functions.texi (Defining Functions): Explain about redefining
 +      primitives.
 +      (Function Safety): Renamed.  Minor changes.
 +      Comment out the detailed criteria for what is safe.
 +
 +2003-06-22  Andreas Schwab  <schwab@suse.de>
 +
 +      * objects.texi (Symbol Type): Fix description of examples.
 +
 +2003-06-16  Andreas Schwab  <schwab@suse.de>
 +
 +      * hash.texi (Creating Hash): Fix description of :weakness.
 +
 +2003-06-13  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
 +
 +      * files.texi (Changing Files): copy-file copies file modes, too.
 +
 +2003-05-28  Richard M. Stallman  <rms@gnu.org>
 +
 +      * strings.texi (Creating Strings): Clarify split-string.
 +
 +2003-05-22  Stephen J. Turnbull  <stephen@xemacs.org>
 +
 +      * strings.texi (Creating Strings): Update split-string specification
 +      and examples.
 +
 +2003-05-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * elisp.texi: Correct invariant section names.
 +
 +2003-04-20  Richard M. Stallman  <rms@gnu.org>
 +
 +      * os.texi (Timers): Explain about timers and quitting.
 +
 +2003-04-19  Richard M. Stallman  <rms@gnu.org>
 +
 +      * internals.texi (Writing Emacs Primitives): Strings are
 +      no longer special for GCPROs.  Mention GCPRO5, GCPRO6.
 +      Explain GCPRO convention for varargs function args.
 +
 +2003-04-16  Richard M. Stallman  <rms@gnu.org>
 +
 +      * minibuf.texi (Minibuffer Misc): Document fn minibuffer-message.
 +
 +2003-04-08  Richard M. Stallman  <rms@gnu.org>
 +
 +      * files.texi (Kinds of Files): Correct return value of file-symlink-p.
 +
 +2003-02-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * objects.texi (Character Type): New \s escape for space.
 +
 +2003-01-31  Joe Buehler  <jhpb@draco.hekimian.com>
 +
 +      * os.texi (System Environment): Added cygwin system-type.
 +
 +2003-01-25  Richard M. Stallman  <rms@gnu.org>
 +
 +      * keymaps.texi: Document that a symbol can act as a keymap.
 +
 +2003-01-13  Richard M. Stallman  <rms@gnu.org>
 +
 +      * text.texi (Changing Properties): Say string indices are origin-0.
 +
 +      * positions.texi (Screen Lines) <compute-motion>:
 +      Correct order of elts in return value.
 +
 +      * keymaps.texi (Changing Key Bindings) <define-key>: Mention
 +      how to define a default binding.
 +
 +2002-12-07  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * loading.texi (Unloading): Fix recent change for load-history.
 +
 +      * customize.texi (Simple Types): Clarify description of custom
 +      type 'number.  Describe new custom type 'float.
 +
 +2002-12-04  Markus Rost  <rost@math.ohio-state.edu>
 +
 +      * variables.texi (File Local Variables): Fix typo.
 +
 +2002-10-23  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@uni-duisburg.de>
 +
 +      From Michael Albinus <Michael.Albinus@alcatel.de>.
 +
 +      * README: Target for Info file is `make info'.
 +
 +      * files.texi (File Name Components): Fixed typos in
 +      `file-name-sans-extension'.
 +      (Magic File Names): Complete list of operations for magic file
 +      name handlers.
 +
 +2002-09-16  Jonathan Yavner  <jyavner@engineer.com>
 +
 +      * variables.texi (File Local Variables): New function
 +      risky-local-variable-p.
 +
 +2002-09-15  Jonathan Yavner  <jyavner@engineer.com>
 +
 +      * functions.texi (Function safety): New node about unsafep.
 +
 +2002-08-05  Per Abrahamsen  <abraham@dina.kvl.dk>
 +
 +      * customize.texi (Splicing into Lists): Fixed example.
 +      Reported by Fabrice Bauzac <fabrice.bauzac@wanadoo.fr>
 +
 +2002-06-17  Juanma Barranquero  <lektu@terra.es>
 +
 +      * frames.texi (Display Feature Testing): Fix typo.
 +
 +2002-06-12  Andreas Schwab  <schwab@suse.de>
 +
 +      * frames.texi (Initial Parameters, Resources): Fix references to
 +      the Emacs manual.
 +
 +2002-05-13  Kim F. Storm  <storm@cua.dk>
 +
 +      * variables.texi (Intro to Buffer-Local): Updated warning and
 +      example relating to changing buffer inside let.
 +
 +2002-03-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * os.texi (Session Management): New node about X Session management.
 +
 +2002-01-18  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * elisp.texi (VERSION): Set to 2.9.  Update the version of Emacs
 +      to which the manual corresponds, and the copyright years.
 +
 +      * Makefile.in (VERSION): Set to 2.9.
 +
 +2001-11-29  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * elisp.texi: Change the category in @dircategory to "Emacs", to
 +      make it consistent with info/dir.
 +
 +2001-11-25  Miles Bader  <miles@gnu.org>
 +
 +      * text.texi (Fields): Describe new `limit' arg in
 +      field-beginning/field-end.
 +
 +2001-11-17  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * permute-index: Don't depend on csh-specific features.  Replace
 +      the interpreter name with /bin/sh.
 +
 +      * two-volume-cross-refs.txt: New file.
 +      * two.el: New file.
 +      * spellfile: New file.
 +
 +2001-11-16  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * permute-index: New file.
 +
 +      * vol1.texi, vol2.texi: Renamed from elisp-vol1.texi and
 +      elisp-vol2.texi, respectively, to avoid file-name clashes in DOS
 +      8+3 restricted namespace.
 +
 +      * Makefile.in (infodir): Define relative to $(srcdir).
 +      ($(infodir)/elisp): Don't chdir into $(srcdir), but add it to the
 +      include directories list via -I switch to makeinfo.
 +      (index.texi): Use cp if both hard and symbolic links fail.
 +
 +2001-11-10  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * Makefile.in (distclean): Add.
 +
 +      The following changes make ELisp manual part of the Emacs
 +      distribution:
 +
 +      * Makefile.in: Add Copyright notice.
 +      (prefix): Remove.
 +      (infodir): Change value to "../info".
 +      (VPATH): New variable.
 +      (MAKE): Don't define.
 +      (texmacrodir): Don't define.
 +      (texinputdir): Append the existing value of TEXINPUTS.
 +      ($(infodir)/elisp): Instead of just "elisp".  Reformat the
 +      command to be compatible with man/Makefile.in, and to put the
 +      output into ../info.
 +      (info): Add target.
 +      (installall): Target removed.
 +
 +2001-10-31  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
 +
 +      * tips.texi (Coding Conventions): Fix typo.
 +
 +2001-10-23  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Makefile.in (srcs): Add gpl.texi and doclicense.texi.
 +
 +2001-10-22  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * files.texi (File Name Components): Update the description of
 +      file-name-sans-extension and file-name-extension, as they now
 +      ignore leading dots.
 +
 +2001-10-20  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * (Version 21.1 released.)
 +
 +2001-10-19  Miles Bader  <miles@gnu.org>
 +
 +      * positions.texi (Text Lines): Describe behavior of
 +      `beginning-of-line'/`end-of-line' in the presence of field properties.
 +
 +2001-10-17  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Makefile.in (VERSION): Set to 2.8.
 +      (manual): Use `manual-21'.
 +
 +      * elisp.texi (VERSION): Add and use it where the version
 +      number was used.  Set it to 2.8.
 +
 +      * intro.texi: Likewise.
 +
 +2001-10-13  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * files.texi (File Name Completion): Document the significance of
 +      a trailing slash in elements of completion-ignored-extensions.
 +
 +2001-10-06  Miles Bader  <miles@gnu.org>
 +
 +      * variables.texi (Variable Aliases): It's `@defmac', not `@defmacro'.
 +
 +2001-10-04  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * variables.texi (Variable Aliases): New node.
 +
 +2001-10-04  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Branch for 21.1.
 +
 +2001-10-02  Miles Bader  <miles@gnu.org>
 +
 +      * minibuf.texi (Minibuffer Misc): Add entries for
 +      `minibuffer-contents', `minibuffer-contents-no-properties', and
 +      `delete-minibuffer-contents'.
 +      Correct description for `minibuffer-prompt-end'.
 +
 +      * text.texi (Property Search): Correct descriptions of
 +      `next-char-property-change' and `previous-char-property-change'.
 +      Add entries for `next-single-char-property-change' and
 +      `previous-single-char-property-change'.
 +      Make operand names a bit more consistent.
 +
 +2001-09-30  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * frames.texi (Finding All Frames): Document that next-frame and
 +      previous-frame are local to current terminal.
 +
 +2001-09-26  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * keymaps.texi (Creating Keymaps): Fix the description of the
 +      result of make-keymap.
 +
 +2001-09-23  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * display.texi (Font Lookup, Attribute Functions)
 +      (Image Descriptors): Add cross-references to the definition of
 +      selected frame.
 +
 +      * buffers.texi (The Buffer List): Add cross-references to the
 +      definition of selected frame.
 +
 +      * frames.texi (Input Focus): Clarify which frame is _the_ selected
 +      frame at any given time.
 +      (Multiple Displays, Size and Position): Add a cross-reference to
 +      the definition of the selected frame.
 +
 +2001-09-08  Eli Zaretskii  <eliz@is.elta.co.il>
 +
 +      * strings.texi (String Conversion) <string-to-number>: Document
 +      that a float is returned for integers that are too large.
 +
 +      * frames.texi (Mouse Position): Document mouse-position-function.
 +      (Display Feature Testing): Document display-images-p.
 +      (Window Frame Parameters): Document the cursor-type variable.
 +
 +      * numbers.texi (Integer Basics): Document CL style read syntax for
 +      integers in bases other than 10.
 +
 +      * positions.texi (List Motion): Document
 +      open-paren-in-column-0-is-defun-start.
 +
 +      * lists.texi (Sets And Lists): Document member-ignore-case.
 +
 +      * internals.texi (Garbage Collection): Document the used and free
 +      strings report.
 +      (Memory Usage): Document strings-consed.
 +
 +      * os.texi (Time of Day): Document float-time.
 +      (Recording Input): Document that clear-this-command-keys clears
 +      the vector to be returned by recent-keys.
 +
 +      * keymaps.texi (Scanning Keymaps) <where-is-internal>: The
 +      argument keymap can be a list.
 +
 +      * nonascii.texi (User-Chosen Coding Systems)
 +      <select-safe-coding-system>: Document the new argument
 +      accept-default-p and the variable
 +      select-safe-coding-system-accept-default-p.  Tell what happens if
 +      buffer-file-coding-system is undecided.
 +      (Default Coding Systems): Document auto-coding-regexp-alist.
 +
 +      * display.texi (The Echo Area) <message>: Document
 +      message-truncate-lines.
 +      (Glyphs): Document that the glyph table is unused on windowed
 +      displays.
 +
 +      * help.texi (Describing Characters) <single-key-description>:
 +      Document the new argument no-angles.
 +      (Accessing Documentation) <documentation-property>: Document that
 +      a non-string property is evaluated.
 +      <documentation>: Document that the function-documentation property
 +      is looked for.
 +
 +      * windows.texi (Selecting Windows): Document some-window.
 +
 +      * text.texi (MD5 Checksum): New node, documents the md5 primitive.
 +
 +      * hooks.texi (Standard Hooks): Add kbd-macro-termination-hook and
 +      apropos-mode-hook.
 +
 +      * commands.texi (Using Interactive): Document interactive-form.
 +      (Keyboard Macros): Document kbd-macro-termination-hook.
 +      (Command Loop Info): Document that clear-this-command-keys clears
 +      the vector to be returned by recent-keys.
 +
 +2001-09-04  Werner LEMBERG  <wl@gnu.org>
 +
 +      * Makefile.in (srcdir, texinputdir): New variables.
 +      (srcs, index.texi, install): Use $(srcdir).
 +      (.PHONY): Remove elisp.dvi.
 +      (elisp): Use -I switch for makeinfo.
 +      (elisp.dvi): Use $(srcdir) and $(texinputdir).
 +      (installall, dist): Use $(srcdir).
 +      Fix path to texinfo.tex.
 +      (maintainer-clean): Add elisp.dvi and elisp.oaux.
 +
 +2001-08-30  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * display.texi (Conditional Display): Adjust to API change.
 +
 +      * configure: New file.
 +
 +2001-07-30  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * commands.texi (Repeat Events): Add description of
 +      double-click-fuzz.
 +
 +2001-05-08  Stefan Monnier  <monnier@cs.yale.edu>
 +
 +      * syntax.texi (Syntax Class Table): Add the missing designator for
 +      comment and string fences.
 +      (Syntax Properties): Add a xref to syntax table internals.
 +      (Syntax Table Internals): Document string-to-syntax.
 +
 +2001-05-07  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * Makefile.in (install): Use install-info command line options
 +      like in Emacs' Makefile.in.
 +
 +2000-12-09  Miles Bader  <miles@gnu.org>
 +
 +      * windows.texi (Window Start): Update documentation for
 +      `pos-visible-in-window-p'.
 +
 +2000-11-12  Stefan Monnier  <monnier@cs.yale.edu>
 +
 +      * lists.texi (Building Lists): Add footnote to explain how to add
 +      to the end of a list.
 +
 +2000-10-25  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * files.texi (Visiting Functions): Typos.
 +
 +2000-10-25  Kenichi Handa  <handa@etl.go.jp>
 +
 +      * files.texi (Visiting Functions): Return value of
 +      find-file-noselect may be a list of buffers if wildcards are used.
 +
 +2000-10-24  Miles Bader  <miles@lsi.nec.co.jp>
 +
 +      * display.texi (Defining Faces): Document `graphic' display type
 +      in face specs.
 +
 +2000-10-18  Kai Grossjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 +
 +      * hooks.texi (Standard Hooks): Replace obsolete
 +      `after-make-frame-hook' with `after-make-frame-functions'.
 +
 +      * frames.texi (Creating Frames): Ditto.
 +
 +      * variables.texi (Future Local Variables): Ditto.
 +
 +2000-10-16  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * display.texi (Other Image Types): Add description of :foreground
 +      and :background properties of mono PBM images.
 +
 +2000-08-17  Werner LEMBERG  <wl@gnu.org>
 +
 +      * .cvsignore: New file.
 +
 +2000-01-05  Gerd Moellmann  <gerd@gnu.org>
 +
 +      * tindex.pl: New script.
 +
 +1999-12-03  Dave Love  <fx@gnu.org>
 +
 +      * Makefile.in (MAKEINFO): New parameter.
 +
 +1999-09-17  Richard Stallman  <rms@gnu.org>
 +
 +      * Makefile.in (srcs): Add hash.texi.
 +      (VERSION): Update to 20.6.
 +
 +1999-09-13  Richard Stallman  <rms@gnu.org>
 +
 +      * Makefile.in (index.texi): If cannot make a symlink, make a hard link.
 +
 +1998-08-29  Karl Heuer  <kwzh@gnu.org>
 +
 +      * configure.in: New file.
 +      * Makefile.in: Renamed from Makefile.
 +      (prefix, infodir): Use value obtained from configure.
 +      (emacslibdir): Obsolete variable deleted.
 +      (dist): Distribute configure.in, configure, Makefile.in.
 +
 +1998-06-12  Richard Stallman  <rms@psilocin.ai.mit.edu>
 +
 +      * Makefile (INSTALL_INFO): New variable.
 +      (install): Run install-info.
 +
 +1998-05-09  Richard Stallman  <rms@psilocin.ai.mit.edu>
 +
 +      * Makefile (elisp.dvi): Add missing backslash.
 +
 +1998-05-02  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile (elisp.dvi): Don't depend on texindex or on elisp.tps.
 +      Run texindex without `./'.  Always run texindex on elisp.tp.
 +      (elisp.tps): Target deleted.
 +
 +1998-04-05  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile (srcs): Add nonascii.texi and customize.texi.
 +      (dist): Start by deleting `temp'.
 +
 +1998-02-17  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile (makeinfo, texindex): Targets deleted.
 +      (makeinfo.o, texindex.o): Targets deleted.
 +      (clean, dist): Don't do anything with them or with getopt*.
 +
 +1998-01-30  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile (SHELL): Defined.
 +
 +1998-01-27  Richard Stallman  <rms@psilocin.gnu.org>
 +
 +      * Makefile (elisp.tps): New target.
 +      (elisp.dvi): Depend on elisp.tps.
 +
 +Wed Apr  3 15:24:25 1996  Karl Heuer  <kwzh@gnu.ai.mit.edu>
 +
 +      * README: Update phone number.
 +
 +      * Makefile (elisp): Make this be the default target.
 +      Depend on makeinfo.c instead of makeinfo.
 +      (install): Don't depend on elisp.dvi, since we don't install that.
 +      Use mkinstalldirs.
 +      (dist): Add mkinstalldirs.
 +
 +Mon Jun 19 14:35:26 1995  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
 +
 +      * Makefile (VERSION): Update version number.
 +      (maintainer-clean): Renamed from realclean.
 +
 +Wed Jun  7 17:04:59 1995  Karl Heuer  <kwzh@nutrimat.gnu.ai.mit.edu>
 +
 +      * Makefile (realclean): New target.
 +      (elisp): Remove any old elisp-* files first.
 +
 +Tue Nov 23 19:59:40 1993  Noah Friedman  (friedman@nutrimat.gnu.ai.mit.edu)
 +
 +      * Makefile (VERSION): New variable.
 +      (dist): Make packaged directory name `elisp-manual-19-$(VERSION)'.
 +      Compressed file suffix should be `.gz', not `.z'.
 +
 +Mon Nov 22 15:06:19 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (elisp): Depend on makeinfo.
 +
 +Fri Nov 19 02:29:33 1993  Noah Friedman  (friedman@gnu.ai.mit.edu)
 +
 +      * Makefile (srcs): Add anti.texi.
 +
 +Fri May 28 18:04:53 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (infodir, prefix): New vars.
 +      (install): Use infodir.
 +      (emacsinfodir): Deleted.
 +
 +Thu May 27 02:11:25 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (srcs): Add calendar.texi.
 +
 +      * Makefile (dist): Copy texindex.c and makeinfo.c.
 +      Limit elisp-* files to those with one or two digits.
 +
 +Sun May 16 17:58:21 1993  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Makefile (dist): Changed to use Gzip instead of compress.
 +
 +Fri Apr 23 01:05:23 1993  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
 +
 +      * loading.texi (Unloading): define-function changed back to
 +      defalias.  It may not stay this way, but at least it's
 +      consistent with the known-good version of the code patch.
 +
 +Fri Mar 26 21:14:54 1993  Eric S. Raymond  (eric@geech.gnu.ai.mit.edu)
 +
 +      * modes.texi (Hooks): Document new optional arg of add-hook.
 +
 +Wed Mar 17 08:48:24 1993  Eric S. Raymond  (eric@mole.gnu.ai.mit.edu)
 +
 +      * variables.texi: Document nil initial value of buffer-local variables.
 +
 +      * tips.texi: Add new section on standard library headers.
 +
 +Sat Feb 27 18:00:25 1993  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Makefile (srcs): Add frame.texi to the list of sources.
 +
 +Tue Feb 23 10:50:25 1993  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Makefile (dist): Don't bother excluding autosave files; they'll
 +      never make it into the temp directory anyway, and the hash marks
 +      in the name are problematic for make and the Bourne shell.
 +      (srcs):
 +
 +Fri Feb 12 16:54:38 1993  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 +
 +      * Makefile (dist): Don't include backup files or autosave files in
 +      the distribution tar file.
 +
 +Tue Nov 26 21:10:34 1991  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 +
 +      * Makefile (srcs): Added index.perm.
 +      (elisp.dvi): Remove erroneous shell comment.
 +      Expect output of permute-index in permuted.fns.
 +      Save old elisp.aux in elisp.oaux.
 +      (clean): Added index.texi to be deleted.
 +
 +Sat Aug 11 17:39:10 1990  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 +
 +      * Makefile (elisp.dvi, index.texi): Use shell if instead of ifdef.
 +
 +Tue Jun 26 09:57:26 1990  David Lawrence  (tale@geech)
 +
 +      * files.texi: Noted that completion-ignored-extensions is ignored
 +      when making *Completions*.
 +
 +Fri Jun  8 16:44:44 EDT 1990 Jay Fenlason (hack@ai.mit.edu)
 +
 +      * Makefile  make dist now depends on elisp.dvi, since it tries
 +      to include it in the dist file.
 +
 +Wed Mar 28 22:57:35 1990  Jim Kingdon  (kingdon@mole.ai.mit.edu)
 +
 +      * functions.texinfo (Mapping Functions): Add missing quote
 +
 +Mon Jun 19 18:09:24 1989  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 +
 +      * texinfo.tex (frenchspacing): Use decimal codes for char to be set.
 +      (defunargs): Turn off \hyphenchar of \sl font temporarily.
 +
 +Wed May 10 18:01:17 1989  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
 +
 +      * @result{}, @expansion{}, @print{}, @quiv{}, @point{},
 +      and @error{} are the terms now being used.  The files in the
 +      directory have been changed to reflect this.
 +
 +      * All instances of @indentedresultt{} have been changed to
 +      `     @result{}', using 5 spaces at the begining of the line.
 +
 +Mon Apr 24 21:02:55 1989  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
 +
 +      * @result{}, @expandsto{}, @prints{}, @quiv{}, @error{}, and the
 +      experimental @indentedresult{}, @indentedexpandsto{} are part of
 +      the texinfo.tex in this directory.  These TeX macros are not
 +      stable yet.
 +
 +Mon Apr 17 18:56:50 1989  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
 +
 +      * texinfo.tex: Temporarily added
 +              \let\result=\dblarrow
 +              \def\error{{\it ERROR} \longdblarrow}
 +      We need to do this better soon.
 +
 +Tue Apr 11 12:23:28 1989  Robert J. Chassell  (bob@rice-chex.ai.mit.edu)
 +
 +      * Applied Karl Berry's patches to *.texinfo files, but not to
 +      texinfo.tex; those diffs are in `berry-texinfo-tex-diffs'.  (Karl's
 +      new title page format is also not applied, since it requires
 +      texinfo.tex changes.)
 +
 +      * Cleaned up `Makefile' and defined the `emacslibdir' directory
 +      for the Project GNU development environment.
 +
 +;; Local Variables:
 +;; coding: iso-2022-7bit
 +;; add-log-time-zone-rule: t
 +;; End:
 +
 +    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 +      2005, 2006, 2007 Free Software Foundation, Inc.
 +
 +  This file is part of GNU Emacs.
 +
 +  GNU Emacs is free software; you can redistribute it and/or modify
 +  it under the terms of the GNU General Public License as published by
 +  the Free Software Foundation; either version 3, or (at your option)
 +  any later version.
 +
 +  GNU Emacs is distributed in the hope that it will be useful,
 +  but WITHOUT ANY WARRANTY; without even the implied warranty of
 +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +  GNU General Public License for more details.
 +
 +  You should have received a copy of the GNU General Public License
 +  along with GNU Emacs; see the file COPYING.  If not, write to the
 +  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 +  Boston, MA 02110-1301, USA.
 +
 +;;; arch-tag: 985ae0ce-df29-475b-b3f8-4bbcbf6f7fda
index aaad7ca82a7e28c15e028ef0b40d093f90a6a9c9,0000000000000000000000000000000000000000..cdd627f6b52127188f10bc01e8a0d4a2b841ee5a
mode 100644,000000..100644
--- /dev/null
@@@ -1,3298 -1,0 +1,3316 @@@
- @defun interactive-p
- This function returns @code{t} if the containing function (the one
- whose code includes the call to @code{interactive-p}) was called in
- direct response to user input.  This means that it was called with the
- function @code{call-interactively}, and that a keyboard macro is
- not running, and that Emacs is not running in batch mode.
 +@c -*-texinfo-*-
 +@c This is part of the GNU Emacs Lisp Reference Manual.
 +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
 +@c   2003, 2004, 2005, 2006, 2007  Free Software Foundation, Inc.
 +@c See the file elisp.texi for copying conditions.
 +@setfilename ../../info/commands
 +@node Command Loop, Keymaps, Minibuffers, Top
 +@chapter Command Loop
 +@cindex editor command loop
 +@cindex command loop
 +
 +  When you run Emacs, it enters the @dfn{editor command loop} almost
 +immediately.  This loop reads key sequences, executes their definitions,
 +and displays the results.  In this chapter, we describe how these things
 +are done, and the subroutines that allow Lisp programs to do them.
 +
 +@menu
 +* Command Overview::    How the command loop reads commands.
 +* Defining Commands::   Specifying how a function should read arguments.
 +* Interactive Call::    Calling a command, so that it will read arguments.
++* Distinguish Interactive::     Making a command distinguish interactive calls.
 +* Command Loop Info::   Variables set by the command loop for you to examine.
 +* Adjusting Point::     Adjustment of point after a command.
 +* Input Events::      What input looks like when you read it.
 +* Reading Input::       How to read input events from the keyboard or mouse.
 +* Special Events::      Events processed immediately and individually.
 +* Waiting::             Waiting for user input or elapsed time.
 +* Quitting::            How @kbd{C-g} works.  How to catch or defer quitting.
 +* Prefix Command Arguments::    How the commands to set prefix args work.
 +* Recursive Editing::   Entering a recursive edit,
 +                          and why you usually shouldn't.
 +* Disabling Commands::  How the command loop handles disabled commands.
 +* Command History::     How the command history is set up, and how accessed.
 +* Keyboard Macros::     How keyboard macros are implemented.
 +@end menu
 +
 +@node Command Overview
 +@section Command Loop Overview
 +
 +  The first thing the command loop must do is read a key sequence, which
 +is a sequence of events that translates into a command.  It does this by
 +calling the function @code{read-key-sequence}.  Your Lisp code can also
 +call this function (@pxref{Key Sequence Input}).  Lisp programs can also
 +do input at a lower level with @code{read-event} (@pxref{Reading One
 +Event}) or discard pending input with @code{discard-input}
 +(@pxref{Event Input Misc}).
 +
 +  The key sequence is translated into a command through the currently
 +active keymaps.  @xref{Key Lookup}, for information on how this is done.
 +The result should be a keyboard macro or an interactively callable
 +function.  If the key is @kbd{M-x}, then it reads the name of another
 +command, which it then calls.  This is done by the command
 +@code{execute-extended-command} (@pxref{Interactive Call}).
 +
 +  To execute a command requires first reading the arguments for it.
 +This is done by calling @code{command-execute} (@pxref{Interactive
 +Call}).  For commands written in Lisp, the @code{interactive}
 +specification says how to read the arguments.  This may use the prefix
 +argument (@pxref{Prefix Command Arguments}) or may read with prompting
 +in the minibuffer (@pxref{Minibuffers}).  For example, the command
 +@code{find-file} has an @code{interactive} specification which says to
 +read a file name using the minibuffer.  The command's function body does
 +not use the minibuffer; if you call this command from Lisp code as a
 +function, you must supply the file name string as an ordinary Lisp
 +function argument.
 +
 +  If the command is a string or vector (i.e., a keyboard macro) then
 +@code{execute-kbd-macro} is used to execute it.  You can call this
 +function yourself (@pxref{Keyboard Macros}).
 +
 +  To terminate the execution of a running command, type @kbd{C-g}.  This
 +character causes @dfn{quitting} (@pxref{Quitting}).
 +
 +@defvar pre-command-hook
 +The editor command loop runs this normal hook before each command.  At
 +that time, @code{this-command} contains the command that is about to
 +run, and @code{last-command} describes the previous command.
 +@xref{Command Loop Info}.
 +@end defvar
 +
 +@defvar post-command-hook
 +The editor command loop runs this normal hook after each command
 +(including commands terminated prematurely by quitting or by errors),
 +and also when the command loop is first entered.  At that time,
 +@code{this-command} refers to the command that just ran, and
 +@code{last-command} refers to the command before that.
 +@end defvar
 +
 +  Quitting is suppressed while running @code{pre-command-hook} and
 +@code{post-command-hook}.  If an error happens while executing one of
 +these hooks, it terminates execution of the hook, and clears the hook
 +variable to @code{nil} so as to prevent an infinite loop of errors.
 +
 +  A request coming into the Emacs server (@pxref{Emacs Server,,,
 +emacs, The GNU Emacs Manual}) runs these two hooks just as a keyboard
 +command does.
 +
 +@node Defining Commands
 +@section Defining Commands
 +@cindex defining commands
 +@cindex commands, defining
 +@cindex functions, making them interactive
 +@cindex interactive function
 +
 +  A Lisp function becomes a command when its body contains, at top
 +level, a form that calls the special form @code{interactive}.  This
 +form does nothing when actually executed, but its presence serves as a
 +flag to indicate that interactive calling is permitted.  Its argument
 +controls the reading of arguments for an interactive call.
 +
 +@menu
 +* Using Interactive::     General rules for @code{interactive}.
 +* Interactive Codes::     The standard letter-codes for reading arguments
 +                             in various ways.
 +* Interactive Examples::  Examples of how to read interactive arguments.
 +@end menu
 +
 +@node Using Interactive
 +@subsection Using @code{interactive}
 +@cindex arguments, interactive entry
 +
 +  This section describes how to write the @code{interactive} form that
 +makes a Lisp function an interactively-callable command, and how to
 +examine a command's @code{interactive} form.
 +
 +@defspec interactive arg-descriptor
 +This special form declares that the function in which it appears is a
 +command, and that it may therefore be called interactively (via
 +@kbd{M-x} or by entering a key sequence bound to it).  The argument
 +@var{arg-descriptor} declares how to compute the arguments to the
 +command when the command is called interactively.
 +
 +A command may be called from Lisp programs like any other function, but
 +then the caller supplies the arguments and @var{arg-descriptor} has no
 +effect.
 +
 +The @code{interactive} form has its effect because the command loop
 +(actually, its subroutine @code{call-interactively}) scans through the
 +function definition looking for it, before calling the function.  Once
 +the function is called, all its body forms including the
 +@code{interactive} form are executed, but at this time
 +@code{interactive} simply returns @code{nil} without even evaluating its
 +argument.
 +@end defspec
 +
 +There are three possibilities for the argument @var{arg-descriptor}:
 +
 +@itemize @bullet
 +@item
 +It may be omitted or @code{nil}; then the command is called with no
 +arguments.  This leads quickly to an error if the command requires one
 +or more arguments.
 +
 +@item
 +It may be a string; then its contents should consist of a code character
 +followed by a prompt (which some code characters use and some ignore).
 +The prompt ends either with the end of the string or with a newline.
 +Here is a simple example:
 +
 +@smallexample
 +(interactive "bFrobnicate buffer: ")
 +@end smallexample
 +
 +@noindent
 +The code letter @samp{b} says to read the name of an existing buffer,
 +with completion.  The buffer name is the sole argument passed to the
 +command.  The rest of the string is a prompt.
 +
 +If there is a newline character in the string, it terminates the prompt.
 +If the string does not end there, then the rest of the string should
 +contain another code character and prompt, specifying another argument.
 +You can specify any number of arguments in this way.
 +
 +@c Emacs 19 feature
 +The prompt string can use @samp{%} to include previous argument values
 +(starting with the first argument) in the prompt.  This is done using
 +@code{format} (@pxref{Formatting Strings}).  For example, here is how
 +you could read the name of an existing buffer followed by a new name to
 +give to that buffer:
 +
 +@smallexample
 +@group
 +(interactive "bBuffer to rename: \nsRename buffer %s to: ")
 +@end group
 +@end smallexample
 +
 +@cindex @samp{*} in @code{interactive}
 +@cindex read-only buffers in interactive
 +If the first character in the string is @samp{*}, then an error is
 +signaled if the buffer is read-only.
 +
 +@cindex @samp{@@} in @code{interactive}
 +@c Emacs 19 feature
 +If the first character in the string is @samp{@@}, and if the key
 +sequence used to invoke the command includes any mouse events, then
 +the window associated with the first of those events is selected
 +before the command is run.
 +
 +You can use @samp{*} and @samp{@@} together; the order does not matter.
 +Actual reading of arguments is controlled by the rest of the prompt
 +string (starting with the first character that is not @samp{*} or
 +@samp{@@}).
 +
 +@item
 +It may be a Lisp expression that is not a string; then it should be a
 +form that is evaluated to get a list of arguments to pass to the
 +command.  Usually this form will call various functions to read input
 +from the user, most often through the minibuffer (@pxref{Minibuffers})
 +or directly from the keyboard (@pxref{Reading Input}).
 +
 +Providing point or the mark as an argument value is also common, but
 +if you do this @emph{and} read input (whether using the minibuffer or
 +not), be sure to get the integer values of point or the mark after
 +reading.  The current buffer may be receiving subprocess output; if
 +subprocess output arrives while the command is waiting for input, it
 +could relocate point and the mark.
 +
 +Here's an example of what @emph{not} to do:
 +
 +@smallexample
 +(interactive
 + (list (region-beginning) (region-end)
 +       (read-string "Foo: " nil 'my-history)))
 +@end smallexample
 +
 +@noindent
 +Here's how to avoid the problem, by examining point and the mark after
 +reading the keyboard input:
 +
 +@smallexample
 +(interactive
 + (let ((string (read-string "Foo: " nil 'my-history)))
 +   (list (region-beginning) (region-end) string)))
 +@end smallexample
 +
 +@strong{Warning:} the argument values should not include any data
 +types that can't be printed and then read.  Some facilities save
 +@code{command-history} in a file to be read in the subsequent
 +sessions; if a command's arguments contain a data type that prints
 +using @samp{#<@dots{}>} syntax, those facilities won't work.
 +
 +There are, however, a few exceptions: it is ok to use a limited set of
 +expressions such as @code{(point)}, @code{(mark)},
 +@code{(region-beginning)}, and @code{(region-end)}, because Emacs
 +recognizes them specially and puts the expression (rather than its
 +value) into the command history.  To see whether the expression you
 +wrote is one of these exceptions, run the command, then examine
 +@code{(car command-history)}.
 +@end itemize
 +
 +@cindex examining the @code{interactive} form
 +@defun interactive-form function
 +This function returns the @code{interactive} form of @var{function}.
 +If @var{function} is an interactively callable function
 +(@pxref{Interactive Call}), the value is the command's
 +@code{interactive} form @code{(interactive @var{spec})}, which
 +specifies how to compute its arguments.  Otherwise, the value is
 +@code{nil}.  If @var{function} is a symbol, its function definition is
 +used.
 +@end defun
 +
 +@node Interactive Codes
 +@comment  node-name,  next,  previous,  up
 +@subsection Code Characters for @code{interactive}
 +@cindex interactive code description
 +@cindex description for interactive codes
 +@cindex codes, interactive, description of
 +@cindex characters for interactive codes
 +
 +  The code character descriptions below contain a number of key words,
 +defined here as follows:
 +
 +@table @b
 +@item Completion
 +@cindex interactive completion
 +Provide completion.  @key{TAB}, @key{SPC}, and @key{RET} perform name
 +completion because the argument is read using @code{completing-read}
 +(@pxref{Completion}).  @kbd{?} displays a list of possible completions.
 +
 +@item Existing
 +Require the name of an existing object.  An invalid name is not
 +accepted; the commands to exit the minibuffer do not exit if the current
 +input is not valid.
 +
 +@item Default
 +@cindex default argument string
 +A default value of some sort is used if the user enters no text in the
 +minibuffer.  The default depends on the code character.
 +
 +@item No I/O
 +This code letter computes an argument without reading any input.
 +Therefore, it does not use a prompt string, and any prompt string you
 +supply is ignored.
 +
 +Even though the code letter doesn't use a prompt string, you must follow
 +it with a newline if it is not the last code character in the string.
 +
 +@item Prompt
 +A prompt immediately follows the code character.  The prompt ends either
 +with the end of the string or with a newline.
 +
 +@item Special
 +This code character is meaningful only at the beginning of the
 +interactive string, and it does not look for a prompt or a newline.
 +It is a single, isolated character.
 +@end table
 +
 +@cindex reading interactive arguments
 +  Here are the code character descriptions for use with @code{interactive}:
 +
 +@table @samp
 +@item *
 +Signal an error if the current buffer is read-only.  Special.
 +
 +@item @@
 +Select the window mentioned in the first mouse event in the key
 +sequence that invoked this command.  Special.
 +
 +@item a
 +A function name (i.e., a symbol satisfying @code{fboundp}).  Existing,
 +Completion, Prompt.
 +
 +@item b
 +The name of an existing buffer.  By default, uses the name of the
 +current buffer (@pxref{Buffers}).  Existing, Completion, Default,
 +Prompt.
 +
 +@item B
 +A buffer name.  The buffer need not exist.  By default, uses the name of
 +a recently used buffer other than the current buffer.  Completion,
 +Default, Prompt.
 +
 +@item c
 +A character.  The cursor does not move into the echo area.  Prompt.
 +
 +@item C
 +A command name (i.e., a symbol satisfying @code{commandp}).  Existing,
 +Completion, Prompt.
 +
 +@item d
 +@cindex position argument
 +The position of point, as an integer (@pxref{Point}).  No I/O.
 +
 +@item D
 +A directory name.  The default is the current default directory of the
 +current buffer, @code{default-directory} (@pxref{File Name Expansion}).
 +Existing, Completion, Default, Prompt.
 +
 +@item e
 +The first or next mouse event in the key sequence that invoked the command.
 +More precisely, @samp{e} gets events that are lists, so you can look at
 +the data in the lists.  @xref{Input Events}.  No I/O.
 +
 +You can use @samp{e} more than once in a single command's interactive
 +specification.  If the key sequence that invoked the command has
 +@var{n} events that are lists, the @var{n}th @samp{e} provides the
 +@var{n}th such event.  Events that are not lists, such as function keys
 +and @acronym{ASCII} characters, do not count where @samp{e} is concerned.
 +
 +@item f
 +A file name of an existing file (@pxref{File Names}).  The default
 +directory is @code{default-directory}.  Existing, Completion, Default,
 +Prompt.
 +
 +@item F
 +A file name.  The file need not exist.  Completion, Default, Prompt.
 +
 +@item G
 +A file name.  The file need not exist.  If the user enters just a
 +directory name, then the value is just that directory name, with no
 +file name within the directory added.  Completion, Default, Prompt.
 +
 +@item i
 +An irrelevant argument.  This code always supplies @code{nil} as
 +the argument's value.  No I/O.
 +
 +@item k
 +A key sequence (@pxref{Key Sequences}).  This keeps reading events
 +until a command (or undefined command) is found in the current key
 +maps.  The key sequence argument is represented as a string or vector.
 +The cursor does not move into the echo area.  Prompt.
 +
 +If @samp{k} reads a key sequence that ends with a down-event, it also
 +reads and discards the following up-event.  You can get access to that
 +up-event with the @samp{U} code character.
 +
 +This kind of input is used by commands such as @code{describe-key} and
 +@code{global-set-key}.
 +
 +@item K
 +A key sequence, whose definition you intend to change.  This works like
 +@samp{k}, except that it suppresses, for the last input event in the key
 +sequence, the conversions that are normally used (when necessary) to
 +convert an undefined key into a defined one.
 +
 +@item m
 +@cindex marker argument
 +The position of the mark, as an integer.  No I/O.
 +
 +@item M
 +Arbitrary text, read in the minibuffer using the current buffer's input
 +method, and returned as a string (@pxref{Input Methods,,, emacs, The GNU
 +Emacs Manual}).  Prompt.
 +
 +@item n
 +A number, read with the minibuffer.  If the input is not a number, the
 +user has to try again.  @samp{n} never uses the prefix argument.
 +Prompt.
 +
 +@item N
 +The numeric prefix argument; but if there is no prefix argument, read
 +a number as with @kbd{n}.  The value is always a number.  @xref{Prefix
 +Command Arguments}.  Prompt.
 +
 +@item p
 +@cindex numeric prefix argument usage
 +The numeric prefix argument.  (Note that this @samp{p} is lower case.)
 +No I/O.
 +
 +@item P
 +@cindex raw prefix argument usage
 +The raw prefix argument.  (Note that this @samp{P} is upper case.)  No
 +I/O.
 +
 +@item r
 +@cindex region argument
 +Point and the mark, as two numeric arguments, smallest first.  This is
 +the only code letter that specifies two successive arguments rather than
 +one.  No I/O.
 +
 +@item s
 +Arbitrary text, read in the minibuffer and returned as a string
 +(@pxref{Text from Minibuffer}).  Terminate the input with either
 +@kbd{C-j} or @key{RET}.  (@kbd{C-q} may be used to include either of
 +these characters in the input.)  Prompt.
 +
 +@item S
 +An interned symbol whose name is read in the minibuffer.  Any whitespace
 +character terminates the input.  (Use @kbd{C-q} to include whitespace in
 +the string.)  Other characters that normally terminate a symbol (e.g.,
 +parentheses and brackets) do not do so here.  Prompt.
 +
 +@item U
 +A key sequence or @code{nil}.  Can be used after a @samp{k} or
 +@samp{K} argument to get the up-event that was discarded (if any)
 +after @samp{k} or @samp{K} read a down-event.  If no up-event has been
 +discarded, @samp{U} provides @code{nil} as the argument.  No I/O.
 +
 +@item v
 +A variable declared to be a user option (i.e., satisfying the
 +predicate @code{user-variable-p}).  This reads the variable using
 +@code{read-variable}.  @xref{Definition of read-variable}.  Existing,
 +Completion, Prompt.
 +
 +@item x
 +A Lisp object, specified with its read syntax, terminated with a
 +@kbd{C-j} or @key{RET}.  The object is not evaluated.  @xref{Object from
 +Minibuffer}.  Prompt.
 +
 +@item X
 +@cindex evaluated expression argument
 +A Lisp form's value.  @samp{X} reads as @samp{x} does, then evaluates
 +the form so that its value becomes the argument for the command.
 +Prompt.
 +
 +@item z
 +A coding system name (a symbol).  If the user enters null input, the
 +argument value is @code{nil}.  @xref{Coding Systems}.  Completion,
 +Existing, Prompt.
 +
 +@item Z
 +A coding system name (a symbol)---but only if this command has a prefix
 +argument.  With no prefix argument, @samp{Z} provides @code{nil} as the
 +argument value.  Completion, Existing, Prompt.
 +@end table
 +
 +@node Interactive Examples
 +@comment  node-name,  next,  previous,  up
 +@subsection Examples of Using @code{interactive}
 +@cindex examples of using @code{interactive}
 +@cindex @code{interactive}, examples of using
 +
 +  Here are some examples of @code{interactive}:
 +
 +@example
 +@group
 +(defun foo1 ()              ; @r{@code{foo1} takes no arguments,}
 +    (interactive)           ;   @r{just moves forward two words.}
 +    (forward-word 2))
 +     @result{} foo1
 +@end group
 +
 +@group
 +(defun foo2 (n)             ; @r{@code{foo2} takes one argument,}
 +    (interactive "p")       ;   @r{which is the numeric prefix.}
 +    (forward-word (* 2 n)))
 +     @result{} foo2
 +@end group
 +
 +@group
 +(defun foo3 (n)             ; @r{@code{foo3} takes one argument,}
 +    (interactive "nCount:") ;   @r{which is read with the Minibuffer.}
 +    (forward-word (* 2 n)))
 +     @result{} foo3
 +@end group
 +
 +@group
 +(defun three-b (b1 b2 b3)
 +  "Select three existing buffers.
 +Put them into three windows, selecting the last one."
 +@end group
 +    (interactive "bBuffer1:\nbBuffer2:\nbBuffer3:")
 +    (delete-other-windows)
 +    (split-window (selected-window) 8)
 +    (switch-to-buffer b1)
 +    (other-window 1)
 +    (split-window (selected-window) 8)
 +    (switch-to-buffer b2)
 +    (other-window 1)
 +    (switch-to-buffer b3))
 +     @result{} three-b
 +@group
 +(three-b "*scratch*" "declarations.texi" "*mail*")
 +     @result{} nil
 +@end group
 +@end example
 +
 +@node Interactive Call
 +@section Interactive Call
 +@cindex interactive call
 +
 +  After the command loop has translated a key sequence into a command it
 +invokes that command using the function @code{command-execute}.  If the
 +command is a function, @code{command-execute} calls
 +@code{call-interactively}, which reads the arguments and calls the
 +command.  You can also call these functions yourself.
 +
 +@defun commandp object &optional for-call-interactively
 +Returns @code{t} if @var{object} is suitable for calling interactively;
 +that is, if @var{object} is a command.  Otherwise, returns @code{nil}.
 +
 +The interactively callable objects include strings and vectors (treated
 +as keyboard macros), lambda expressions that contain a top-level call to
 +@code{interactive}, byte-code function objects made from such lambda
 +expressions, autoload objects that are declared as interactive
 +(non-@code{nil} fourth argument to @code{autoload}), and some of the
 +primitive functions.
 +
 +A symbol satisfies @code{commandp} if its function definition
 +satisfies @code{commandp}.  Keys and keymaps are not commands.
 +Rather, they are used to look up commands (@pxref{Keymaps}).
 +
 +If @var{for-call-interactively} is non-@code{nil}, then
 +@code{commandp} returns @code{t} only for objects that
 +@code{call-interactively} could call---thus, not for keyboard macros.
 +
 +See @code{documentation} in @ref{Accessing Documentation}, for a
 +realistic example of using @code{commandp}.
 +@end defun
 +
 +@defun call-interactively command &optional record-flag keys
 +This function calls the interactively callable function @var{command},
 +reading arguments according to its interactive calling specifications.
 +It returns whatever @var{command} returns.  An error is signaled if
 +@var{command} is not a function or if it cannot be called
 +interactively (i.e., is not a command).  Note that keyboard macros
 +(strings and vectors) are not accepted, even though they are
 +considered commands, because they are not functions.  If @var{command}
 +is a symbol, then @code{call-interactively} uses its function definition.
 +
 +@cindex record command history
 +If @var{record-flag} is non-@code{nil}, then this command and its
 +arguments are unconditionally added to the list @code{command-history}.
 +Otherwise, the command is added only if it uses the minibuffer to read
 +an argument.  @xref{Command History}.
 +
 +The argument @var{keys}, if given, should be a vector which specifies
 +the sequence of events to supply if the command inquires which events
 +were used to invoke it.  If @var{keys} is omitted or @code{nil}, the
 +default is the return value of @code{this-command-keys-vector}.
 +@xref{Definition of this-command-keys-vector}.
 +@end defun
 +
 +@defun command-execute command &optional record-flag keys special
 +@cindex keyboard macro execution
 +This function executes @var{command}.  The argument @var{command} must
 +satisfy the @code{commandp} predicate; i.e., it must be an interactively
 +callable function or a keyboard macro.
 +
 +A string or vector as @var{command} is executed with
 +@code{execute-kbd-macro}.  A function is passed to
 +@code{call-interactively}, along with the optional @var{record-flag}
 +and @var{keys}.
 +
 +A symbol is handled by using its function definition in its place.  A
 +symbol with an @code{autoload} definition counts as a command if it was
 +declared to stand for an interactively callable function.  Such a
 +definition is handled by loading the specified library and then
 +rechecking the definition of the symbol.
 +
 +The argument @var{special}, if given, means to ignore the prefix
 +argument and not clear it.  This is used for executing special events
 +(@pxref{Special Events}).
 +@end defun
 +
 +@deffn Command execute-extended-command prefix-argument
 +@cindex read command name
 +This function reads a command name from the minibuffer using
 +@code{completing-read} (@pxref{Completion}).  Then it uses
 +@code{command-execute} to call the specified command.  Whatever that
 +command returns becomes the value of @code{execute-extended-command}.
 +
 +@cindex execute with prefix argument
 +If the command asks for a prefix argument, it receives the value
 +@var{prefix-argument}.  If @code{execute-extended-command} is called
 +interactively, the current raw prefix argument is used for
 +@var{prefix-argument}, and thus passed on to whatever command is run.
 +
 +@c !!! Should this be @kindex?
 +@cindex @kbd{M-x}
 +@code{execute-extended-command} is the normal definition of @kbd{M-x},
 +so it uses the string @w{@samp{M-x }} as a prompt.  (It would be better
 +to take the prompt from the events used to invoke
 +@code{execute-extended-command}, but that is painful to implement.)  A
 +description of the value of the prefix argument, if any, also becomes
 +part of the prompt.
 +
 +@example
 +@group
 +(execute-extended-command 3)
 +---------- Buffer: Minibuffer ----------
 +3 M-x forward-word RET
 +---------- Buffer: Minibuffer ----------
 +     @result{} t
 +@end group
 +@end example
 +@end deffn
 +
-   The most common use of @code{interactive-p} is for deciding whether
- to give the user additional visual feedback (such as by printing an
- informative message).  For example:
++@node Distinguish Interactive
++@section Distinguish Interactive Calls
++
++  Sometimes a command should display additional visual feedback (such
++as an informative message in the echo area) for interactive calls
++only.  There are three ways to do this.  The recommended way to test
++whether the function was called using @code{call-interactively} is to
++give it an optional argument @code{print-message} and use the
++@code{interactive} spec to make it non-@code{nil} in interactive
++calls.  Here's an example:
++
++@example
++(defun foo (&optional print-message)
++  (interactive "p")
++  (when print-message
++    (message "foo")))
++@end example
++
++@noindent
++We use @code{"p"} because the numeric prefix argument is never
++@code{nil}.  Defined in this way, the function does display the
++message when called from a keyboard macro.
++
++  The above method with the additional argument is usually best,
++because it allows callers to say ``treat this call as interactive.''
++But you can also do the job in a simpler way by testing
++@code{called-interactively-p}.
++
++@defun called-interactively-p
++This function returns @code{t} when the calling function was called
++using @code{call-interactively}.
 +
 +If the containing function was called by Lisp evaluation (or with
 +@code{apply} or @code{funcall}), then it was not called interactively.
 +@end defun
 +
- ;; @r{Here's the usual way to use @code{interactive-p}.}
++   Here's an example of using @code{called-interactively-p}:
 +
 +@example
 +@group
-   (when (interactive-p)
-     (message "foo")))
 +(defun foo ()
 +  (interactive)
- ;; @r{This function is just to illustrate the behavior.}
- (defun bar ()
-   (interactive)
-   (setq foobar (list (foo) (interactive-p))))
-      @result{} bar
++  (when (called-interactively-p)
++    (message "foo"))
++  'haha)
 +     @result{} foo
 +@end group
 +
 +@group
- ;; @r{Type @kbd{M-x foo}.}
-      @print{} foo
++;; @r{Type @kbd{M-x foo}.}
++     @print{} foo
 +@end group
 +
 +@group
-   If you want to test @emph{only} whether the function was called
- using @code{call-interactively}, add an optional argument
- @code{print-message} which should be non-@code{nil} in an interactive
- call, and use the @code{interactive} spec to make sure it is
- non-@code{nil}.  Here's an example:
- @example
- (defun foo (&optional print-message)
-   (interactive "p")
-   (when print-message
-     (message "foo")))
- @end example
- @noindent
- Defined in this way, the function does display the message when called
- from a keyboard macro.  We use @code{"p"} because the numeric prefix
- argument is never @code{nil}.
- @defun called-interactively-p
- This function returns @code{t} when the calling function was called
- using @code{call-interactively}.
++(foo)
++     @result{} haha
++@end group
++@end example
++
++  Here is another example that contrasts direct and indirect
++calls to @code{called-interactively-p}.
++
++@example
++@group
++(defun bar ()
++  (interactive)
++  (setq foobar (list (foo) (called-interactively-p))))
++     @result{} bar
 +@end group
 +
 +@group
 +;; @r{Type @kbd{M-x bar}.}
 +;; @r{This does not display a message.}
 +@end group
 +
 +@group
 +foobar
 +     @result{} (nil t)
 +@end group
 +@end example
 +
- When possible, instead of using this function, you should use the
- method in the example above; that method makes it possible for a
- caller to ``pretend'' that the function was called interactively.
++  If you want to treat commands run in keyboard macros just like calls
++from Lisp programs, test @code{interactive-p} instead of
++@code{called-interactively-p}.
 +
++@defun interactive-p
++This function returns @code{t} if the containing function (the one
++whose code includes the call to @code{interactive-p}) was called in
++direct response to user input.  This means that it was called with the
++function @code{call-interactively}, and that a keyboard macro is
++not running, and that Emacs is not running in batch mode.
 +@end defun
 +
 +@node Command Loop Info
 +@comment  node-name,  next,  previous,  up
 +@section Information from the Command Loop
 +
 +The editor command loop sets several Lisp variables to keep status
 +records for itself and for commands that are run.  With the exception of
 +@code{this-command} and @code{last-command} it's generally a bad idea to
 +change any of these variables in a Lisp program.
 +
 +@defvar last-command
 +This variable records the name of the previous command executed by the
 +command loop (the one before the current command).  Normally the value
 +is a symbol with a function definition, but this is not guaranteed.
 +
 +The value is copied from @code{this-command} when a command returns to
 +the command loop, except when the command has specified a prefix
 +argument for the following command.
 +
 +This variable is always local to the current terminal and cannot be
 +buffer-local.  @xref{Multiple Displays}.
 +@end defvar
 +
 +@defvar real-last-command
 +This variable is set up by Emacs just like @code{last-command},
 +but never altered by Lisp programs.
 +@end defvar
 +
 +@defvar last-repeatable-command
 +This variable stores the most recently executed command that was not
 +part of an input event.  This is the command @code{repeat} will try to
 +repeat, @xref{Repeating,,, emacs, The GNU Emacs Manual}.
 +@end defvar
 +
 +@defvar this-command
 +@cindex current command
 +This variable records the name of the command now being executed by
 +the editor command loop.  Like @code{last-command}, it is normally a symbol
 +with a function definition.
 +
 +The command loop sets this variable just before running a command, and
 +copies its value into @code{last-command} when the command finishes
 +(unless the command specified a prefix argument for the following
 +command).
 +
 +@cindex kill command repetition
 +Some commands set this variable during their execution, as a flag for
 +whatever command runs next.  In particular, the functions for killing text
 +set @code{this-command} to @code{kill-region} so that any kill commands
 +immediately following will know to append the killed text to the
 +previous kill.
 +@end defvar
 +
 +If you do not want a particular command to be recognized as the previous
 +command in the case where it got an error, you must code that command to
 +prevent this.  One way is to set @code{this-command} to @code{t} at the
 +beginning of the command, and set @code{this-command} back to its proper
 +value at the end, like this:
 +
 +@example
 +(defun foo (args@dots{})
 +  (interactive @dots{})
 +  (let ((old-this-command this-command))
 +    (setq this-command t)
 +    @r{@dots{}do the work@dots{}}
 +    (setq this-command old-this-command)))
 +@end example
 +
 +@noindent
 +We do not bind @code{this-command} with @code{let} because that would
 +restore the old value in case of error---a feature of @code{let} which
 +in this case does precisely what we want to avoid.
 +
 +@defvar this-original-command
 +This has the same value as @code{this-command} except when command
 +remapping occurs (@pxref{Remapping Commands}).  In that case,
 +@code{this-command} gives the command actually run (the result of
 +remapping), and @code{this-original-command} gives the command that
 +was specified to run but remapped into another command.
 +@end defvar
 +
 +@defun this-command-keys
 +This function returns a string or vector containing the key sequence
 +that invoked the present command, plus any previous commands that
 +generated the prefix argument for this command.  Any events read by the
 +command using @code{read-event} without a timeout get tacked on to the end.
 +
 +However, if the command has called @code{read-key-sequence}, it
 +returns the last read key sequence.  @xref{Key Sequence Input}.  The
 +value is a string if all events in the sequence were characters that
 +fit in a string.  @xref{Input Events}.
 +
 +@example
 +@group
 +(this-command-keys)
 +;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
 +     @result{} "^U^X^E"
 +@end group
 +@end example
 +@end defun
 +
 +@defun this-command-keys-vector
 +@anchor{Definition of this-command-keys-vector}
 +Like @code{this-command-keys}, except that it always returns the events
 +in a vector, so you don't need to deal with the complexities of storing
 +input events in a string (@pxref{Strings of Events}).
 +@end defun
 +
 +@defun clear-this-command-keys &optional keep-record
 +This function empties out the table of events for
 +@code{this-command-keys} to return.  Unless @var{keep-record} is
 +non-@code{nil}, it also empties the records that the function
 +@code{recent-keys} (@pxref{Recording Input}) will subsequently return.
 +This is useful after reading a password, to prevent the password from
 +echoing inadvertently as part of the next command in certain cases.
 +@end defun
 +
 +@defvar last-nonmenu-event
 +This variable holds the last input event read as part of a key sequence,
 +not counting events resulting from mouse menus.
 +
 +One use of this variable is for telling @code{x-popup-menu} where to pop
 +up a menu.  It is also used internally by @code{y-or-n-p}
 +(@pxref{Yes-or-No Queries}).
 +@end defvar
 +
 +@defvar last-command-event
 +@defvarx last-command-char
 +This variable is set to the last input event that was read by the
 +command loop as part of a command.  The principal use of this variable
 +is in @code{self-insert-command}, which uses it to decide which
 +character to insert.
 +
 +@example
 +@group
 +last-command-event
 +;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.}
 +     @result{} 5
 +@end group
 +@end example
 +
 +@noindent
 +The value is 5 because that is the @acronym{ASCII} code for @kbd{C-e}.
 +
 +The alias @code{last-command-char} exists for compatibility with
 +Emacs version 18.
 +@end defvar
 +
 +@c Emacs 19 feature
 +@defvar last-event-frame
 +This variable records which frame the last input event was directed to.
 +Usually this is the frame that was selected when the event was
 +generated, but if that frame has redirected input focus to another
 +frame, the value is the frame to which the event was redirected.
 +@xref{Input Focus}.
 +
 +If the last event came from a keyboard macro, the value is @code{macro}.
 +@end defvar
 +
 +@node Adjusting Point
 +@section Adjusting Point After Commands
 +@cindex adjusting point
 +@cindex invisible/intangible text, and point
 +@cindex @code{display} property, and point display
 +@cindex @code{composition} property, and point display
 +
 +  It is not easy to display a value of point in the middle of a
 +sequence of text that has the @code{display}, @code{composition} or
 +@code{intangible} property, or is invisible.  Therefore, after a
 +command finishes and returns to the command loop, if point is within
 +such a sequence, the command loop normally moves point to the edge of
 +the sequence.
 +
 +  A command can inhibit this feature by setting the variable
 +@code{disable-point-adjustment}:
 +
 +@defvar disable-point-adjustment
 +If this variable is non-@code{nil} when a command returns to the
 +command loop, then the command loop does not check for those text
 +properties, and does not move point out of sequences that have them.
 +
 +The command loop sets this variable to @code{nil} before each command,
 +so if a command sets it, the effect applies only to that command.
 +@end defvar
 +
 +@defvar global-disable-point-adjustment
 +If you set this variable to a non-@code{nil} value, the feature of
 +moving point out of these sequences is completely turned off.
 +@end defvar
 +
 +@node Input Events
 +@section Input Events
 +@cindex events
 +@cindex input events
 +
 +The Emacs command loop reads a sequence of @dfn{input events} that
 +represent keyboard or mouse activity.  The events for keyboard activity
 +are characters or symbols; mouse events are always lists.  This section
 +describes the representation and meaning of input events in detail.
 +
 +@defun eventp object
 +This function returns non-@code{nil} if @var{object} is an input event
 +or event type.
 +
 +Note that any symbol might be used as an event or an event type.
 +@code{eventp} cannot distinguish whether a symbol is intended by Lisp
 +code to be used as an event.  Instead, it distinguishes whether the
 +symbol has actually been used in an event that has been read as input in
 +the current Emacs session.  If a symbol has not yet been so used,
 +@code{eventp} returns @code{nil}.
 +@end defun
 +
 +@menu
 +* Keyboard Events::           Ordinary characters--keys with symbols on them.
 +* Function Keys::             Function keys--keys with names, not symbols.
 +* Mouse Events::                Overview of mouse events.
 +* Click Events::              Pushing and releasing a mouse button.
 +* Drag Events::                       Moving the mouse before releasing the button.
 +* Button-Down Events::                A button was pushed and not yet released.
 +* Repeat Events::               Double and triple click (or drag, or down).
 +* Motion Events::             Just moving the mouse, not pushing a button.
 +* Focus Events::              Moving the mouse between frames.
 +* Misc Events::                 Other events the system can generate.
 +* Event Examples::            Examples of the lists for mouse events.
 +* Classifying Events::                Finding the modifier keys in an event symbol.
 +                              Event types.
 +* Accessing Events::          Functions to extract info from events.
 +* Strings of Events::           Special considerations for putting
 +                                keyboard character events in a string.
 +@end menu
 +
 +@node Keyboard Events
 +@subsection Keyboard Events
 +@cindex keyboard events
 +
 +There are two kinds of input you can get from the keyboard: ordinary
 +keys, and function keys.  Ordinary keys correspond to characters; the
 +events they generate are represented in Lisp as characters.  The event
 +type of a character event is the character itself (an integer); see
 +@ref{Classifying Events}.
 +
 +@cindex modifier bits (of input character)
 +@cindex basic code (of input character)
 +An input character event consists of a @dfn{basic code} between 0 and
 +524287, plus any or all of these @dfn{modifier bits}:
 +
 +@table @asis
 +@item meta
 +The
 +@tex
 +@math{2^{27}}
 +@end tex
 +@ifnottex
 +2**27
 +@end ifnottex
 +bit in the character code indicates a character
 +typed with the meta key held down.
 +
 +@item control
 +The
 +@tex
 +@math{2^{26}}
 +@end tex
 +@ifnottex
 +2**26
 +@end ifnottex
 +bit in the character code indicates a non-@acronym{ASCII}
 +control character.
 +
 +@sc{ascii} control characters such as @kbd{C-a} have special basic
 +codes of their own, so Emacs needs no special bit to indicate them.
 +Thus, the code for @kbd{C-a} is just 1.
 +
 +But if you type a control combination not in @acronym{ASCII}, such as
 +@kbd{%} with the control key, the numeric value you get is the code
 +for @kbd{%} plus
 +@tex
 +@math{2^{26}}
 +@end tex
 +@ifnottex
 +2**26
 +@end ifnottex
 +(assuming the terminal supports non-@acronym{ASCII}
 +control characters).
 +
 +@item shift
 +The
 +@tex
 +@math{2^{25}}
 +@end tex
 +@ifnottex
 +2**25
 +@end ifnottex
 +bit in the character code indicates an @acronym{ASCII} control
 +character typed with the shift key held down.
 +
 +For letters, the basic code itself indicates upper versus lower case;
 +for digits and punctuation, the shift key selects an entirely different
 +character with a different basic code.  In order to keep within the
 +@acronym{ASCII} character set whenever possible, Emacs avoids using the
 +@tex
 +@math{2^{25}}
 +@end tex
 +@ifnottex
 +2**25
 +@end ifnottex
 +bit for those characters.
 +
 +However, @acronym{ASCII} provides no way to distinguish @kbd{C-A} from
 +@kbd{C-a}, so Emacs uses the
 +@tex
 +@math{2^{25}}
 +@end tex
 +@ifnottex
 +2**25
 +@end ifnottex
 +bit in @kbd{C-A} and not in
 +@kbd{C-a}.
 +
 +@item hyper
 +The
 +@tex
 +@math{2^{24}}
 +@end tex
 +@ifnottex
 +2**24
 +@end ifnottex
 +bit in the character code indicates a character
 +typed with the hyper key held down.
 +
 +@item super
 +The
 +@tex
 +@math{2^{23}}
 +@end tex
 +@ifnottex
 +2**23
 +@end ifnottex
 +bit in the character code indicates a character
 +typed with the super key held down.
 +
 +@item alt
 +The
 +@tex
 +@math{2^{22}}
 +@end tex
 +@ifnottex
 +2**22
 +@end ifnottex
 +bit in the character code indicates a character typed with
 +the alt key held down.  (On some terminals, the key labeled @key{ALT}
 +is actually the meta key.)
 +@end table
 +
 +  It is best to avoid mentioning specific bit numbers in your program.
 +To test the modifier bits of a character, use the function
 +@code{event-modifiers} (@pxref{Classifying Events}).  When making key
 +bindings, you can use the read syntax for characters with modifier bits
 +(@samp{\C-}, @samp{\M-}, and so on).  For making key bindings with
 +@code{define-key}, you can use lists such as @code{(control hyper ?x)} to
 +specify the characters (@pxref{Changing Key Bindings}).  The function
 +@code{event-convert-list} converts such a list into an event type
 +(@pxref{Classifying Events}).
 +
 +@node Function Keys
 +@subsection Function Keys
 +
 +@cindex function keys
 +Most keyboards also have @dfn{function keys}---keys that have names or
 +symbols that are not characters.  Function keys are represented in Emacs
 +Lisp as symbols; the symbol's name is the function key's label, in lower
 +case.  For example, pressing a key labeled @key{F1} places the symbol
 +@code{f1} in the input stream.
 +
 +The event type of a function key event is the event symbol itself.
 +@xref{Classifying Events}.
 +
 +Here are a few special cases in the symbol-naming convention for
 +function keys:
 +
 +@table @asis
 +@item @code{backspace}, @code{tab}, @code{newline}, @code{return}, @code{delete}
 +These keys correspond to common @acronym{ASCII} control characters that have
 +special keys on most keyboards.
 +
 +In @acronym{ASCII}, @kbd{C-i} and @key{TAB} are the same character.  If the
 +terminal can distinguish between them, Emacs conveys the distinction to
 +Lisp programs by representing the former as the integer 9, and the
 +latter as the symbol @code{tab}.
 +
 +Most of the time, it's not useful to distinguish the two.  So normally
 +@code{function-key-map} (@pxref{Translation Keymaps}) is set up to map
 +@code{tab} into 9.  Thus, a key binding for character code 9 (the
 +character @kbd{C-i}) also applies to @code{tab}.  Likewise for the other
 +symbols in this group.  The function @code{read-char} likewise converts
 +these events into characters.
 +
 +In @acronym{ASCII}, @key{BS} is really @kbd{C-h}.  But @code{backspace}
 +converts into the character code 127 (@key{DEL}), not into code 8
 +(@key{BS}).  This is what most users prefer.
 +
 +@item @code{left}, @code{up}, @code{right}, @code{down}
 +Cursor arrow keys
 +@item @code{kp-add}, @code{kp-decimal}, @code{kp-divide}, @dots{}
 +Keypad keys (to the right of the regular keyboard).
 +@item @code{kp-0}, @code{kp-1}, @dots{}
 +Keypad keys with digits.
 +@item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
 +Keypad PF keys.
 +@item @code{kp-home}, @code{kp-left}, @code{kp-up}, @code{kp-right}, @code{kp-down}
 +Keypad arrow keys.  Emacs normally translates these into the
 +corresponding non-keypad keys @code{home}, @code{left}, @dots{}
 +@item @code{kp-prior}, @code{kp-next}, @code{kp-end}, @code{kp-begin}, @code{kp-insert}, @code{kp-delete}
 +Additional keypad duplicates of keys ordinarily found elsewhere.  Emacs
 +normally translates these into the like-named non-keypad keys.
 +@end table
 +
 +You can use the modifier keys @key{ALT}, @key{CTRL}, @key{HYPER},
 +@key{META}, @key{SHIFT}, and @key{SUPER} with function keys.  The way to
 +represent them is with prefixes in the symbol name:
 +
 +@table @samp
 +@item A-
 +The alt modifier.
 +@item C-
 +The control modifier.
 +@item H-
 +The hyper modifier.
 +@item M-
 +The meta modifier.
 +@item S-
 +The shift modifier.
 +@item s-
 +The super modifier.
 +@end table
 +
 +Thus, the symbol for the key @key{F3} with @key{META} held down is
 +@code{M-f3}.  When you use more than one prefix, we recommend you
 +write them in alphabetical order; but the order does not matter in
 +arguments to the key-binding lookup and modification functions.
 +
 +@node Mouse Events
 +@subsection Mouse Events
 +
 +Emacs supports four kinds of mouse events: click events, drag events,
 +button-down events, and motion events.  All mouse events are represented
 +as lists.  The @sc{car} of the list is the event type; this says which
 +mouse button was involved, and which modifier keys were used with it.
 +The event type can also distinguish double or triple button presses
 +(@pxref{Repeat Events}).  The rest of the list elements give position
 +and time information.
 +
 +For key lookup, only the event type matters: two events of the same type
 +necessarily run the same command.  The command can access the full
 +values of these events using the @samp{e} interactive code.
 +@xref{Interactive Codes}.
 +
 +A key sequence that starts with a mouse event is read using the keymaps
 +of the buffer in the window that the mouse was in, not the current
 +buffer.  This does not imply that clicking in a window selects that
 +window or its buffer---that is entirely under the control of the command
 +binding of the key sequence.
 +
 +@node Click Events
 +@subsection Click Events
 +@cindex click event
 +@cindex mouse click event
 +
 +When the user presses a mouse button and releases it at the same
 +location, that generates a @dfn{click} event.  All mouse click event
 +share the same format:
 +
 +@example
 +(@var{event-type} @var{position} @var{click-count})
 +@end example
 +
 +@table @asis
 +@item @var{event-type}
 +This is a symbol that indicates which mouse button was used.  It is
 +one of the symbols @code{mouse-1}, @code{mouse-2}, @dots{}, where the
 +buttons are numbered left to right.
 +
 +You can also use prefixes @samp{A-}, @samp{C-}, @samp{H-}, @samp{M-},
 +@samp{S-} and @samp{s-} for modifiers alt, control, hyper, meta, shift
 +and super, just as you would with function keys.
 +
 +This symbol also serves as the event type of the event.  Key bindings
 +describe events by their types; thus, if there is a key binding for
 +@code{mouse-1}, that binding would apply to all events whose
 +@var{event-type} is @code{mouse-1}.
 +
 +@item @var{position}
 +This is the position where the mouse click occurred.  The actual
 +format of @var{position} depends on what part of a window was clicked
 +on.
 +
 +For mouse click events in the text area, mode line, header line, or in
 +the marginal areas, @var{position} has this form:
 +
 +@example
 +(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
 + @var{object} @var{text-pos} (@var{col} . @var{row})
 + @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
 +@end example
 +
 +@table @asis
 +@item @var{window}
 +This is the window in which the click occurred.
 +
 +@item @var{pos-or-area}
 +This is the buffer position of the character clicked on in the text
 +area, or if clicked outside the text area, it is the window area in
 +which the click occurred.  It is one of the symbols @code{mode-line},
 +@code{header-line}, @code{vertical-line}, @code{left-margin},
 +@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
 +
 +In one special case, @var{pos-or-area} is a list containing a symbol (one
 +of the symbols listed above) instead of just the symbol.  This happens
 +after the imaginary prefix keys for the event are inserted into the
 +input stream.  @xref{Key Sequence Input}.
 +
 +
 +@item @var{x}, @var{y}
 +These are the pixel coordinates of the click, relative to
 +the top left corner of @var{window}, which is @code{(0 . 0)}.
 +For the mode or header line, @var{y} does not have meaningful data.
 +For the vertical line, @var{x} does not have meaningful data.
 +
 +@item @var{timestamp}
 +This is the time at which the event occurred, in milliseconds.
 +
 +@item @var{object}
 +This is the object on which the click occurred.  It is either
 +@code{nil} if there is no string property, or it has the form
 +(@var{string} . @var{string-pos}) when there is a string-type text
 +property at the click position.
 +
 +@table @asis
 +@item @var{string}
 +This is the string on which the click occurred, including any
 +properties.
 +
 +@item @var{string-pos}
 +This is the position in the string on which the click occurred,
 +relevant if properties at the click need to be looked up.
 +@end table
 +
 +@item @var{text-pos}
 +For clicks on a marginal area or on a fringe, this is the buffer
 +position of the first visible character in the corresponding line in
 +the window.  For other events, it is the current buffer position in
 +the window.
 +
 +@item @var{col}, @var{row}
 +These are the actual coordinates of the glyph under the @var{x},
 +@var{y} position, possibly padded with default character width
 +glyphs if @var{x} is beyond the last glyph on the line.
 +
 +@item @var{image}
 +This is the image object on which the click occurred.  It is either
 +@code{nil} if there is no image at the position clicked on, or it is
 +an image object as returned by @code{find-image} if click was in an image.
 +
 +@item @var{dx}, @var{dy}
 +These are the pixel coordinates of the click, relative to
 +the top left corner of @var{object}, which is @code{(0 . 0)}.  If
 +@var{object} is @code{nil}, the coordinates are relative to the top
 +left corner of the character glyph clicked on.
 +
 +@item @var{width}, @var{height}
 +These are the pixel width and height of @var{object} or, if this is
 +@code{nil}, those of the character glyph clicked on.
 +@end table
 + 
 +@sp 1
 +For mouse clicks on a scroll-bar, @var{position} has this form:
 +
 +@example
 +(@var{window} @var{area} (@var{portion} . @var{whole}) @var{timestamp} @var{part})
 +@end example
 +
 +@table @asis
 +@item @var{window}
 +This is the window whose scroll-bar was clicked on.
 +
 +@item @var{area}
 +This is the scroll bar where the click occurred.  It is one of the
 +symbols @code{vertical-scroll-bar} or @code{horizontal-scroll-bar}.
 +
 +@item @var{portion}
 +This is the distance of the click from the top or left end of
 +the scroll bar.
 +
 +@item @var{whole}
 +This is the length of the entire scroll bar.
 +
 +@item @var{timestamp}
 +This is the time at which the event occurred, in milliseconds.
 +
 +@item @var{part}
 +This is the part of the scroll-bar which was clicked on.  It is one
 +of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
 +@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
 +@end table
 +
 +@item @var{click-count}
 +This is the number of rapid repeated presses so far of the same mouse
 +button.  @xref{Repeat Events}.
 +@end table
 +
 +@node Drag Events
 +@subsection Drag Events
 +@cindex drag event
 +@cindex mouse drag event
 +
 +With Emacs, you can have a drag event without even changing your
 +clothes.  A @dfn{drag event} happens every time the user presses a mouse
 +button and then moves the mouse to a different character position before
 +releasing the button.  Like all mouse events, drag events are
 +represented in Lisp as lists.  The lists record both the starting mouse
 +position and the final position, like this:
 +
 +@example
 +(@var{event-type}
 + (@var{window1} START-POSITION)
 + (@var{window2} END-POSITION))
 +@end example
 +
 +For a drag event, the name of the symbol @var{event-type} contains the
 +prefix @samp{drag-}.  For example, dragging the mouse with button 2
 +held down generates a @code{drag-mouse-2} event.  The second and third
 +elements of the event give the starting and ending position of the
 +drag.  They have the same form as @var{position} in a click event
 +(@pxref{Click Events}) that is not on the scroll bar part of the
 +window.  You can access the second element of any mouse event in the
 +same way, with no need to distinguish drag events from others.
 +
 +The @samp{drag-} prefix follows the modifier key prefixes such as
 +@samp{C-} and @samp{M-}.
 +
 +If @code{read-key-sequence} receives a drag event that has no key
 +binding, and the corresponding click event does have a binding, it
 +changes the drag event into a click event at the drag's starting
 +position.  This means that you don't have to distinguish between click
 +and drag events unless you want to.
 +
 +@node Button-Down Events
 +@subsection Button-Down Events
 +@cindex button-down event
 +
 +Click and drag events happen when the user releases a mouse button.
 +They cannot happen earlier, because there is no way to distinguish a
 +click from a drag until the button is released.
 +
 +If you want to take action as soon as a button is pressed, you need to
 +handle @dfn{button-down} events.@footnote{Button-down is the
 +conservative antithesis of drag.}  These occur as soon as a button is
 +pressed.  They are represented by lists that look exactly like click
 +events (@pxref{Click Events}), except that the @var{event-type} symbol
 +name contains the prefix @samp{down-}.  The @samp{down-} prefix follows
 +modifier key prefixes such as @samp{C-} and @samp{M-}.
 +
 +The function @code{read-key-sequence} ignores any button-down events
 +that don't have command bindings; therefore, the Emacs command loop
 +ignores them too.  This means that you need not worry about defining
 +button-down events unless you want them to do something.  The usual
 +reason to define a button-down event is so that you can track mouse
 +motion (by reading motion events) until the button is released.
 +@xref{Motion Events}.
 +
 +@node Repeat Events
 +@subsection Repeat Events
 +@cindex repeat events
 +@cindex double-click events
 +@cindex triple-click events
 +@cindex mouse events, repeated
 +
 +If you press the same mouse button more than once in quick succession
 +without moving the mouse, Emacs generates special @dfn{repeat} mouse
 +events for the second and subsequent presses.
 +
 +The most common repeat events are @dfn{double-click} events.  Emacs
 +generates a double-click event when you click a button twice; the event
 +happens when you release the button (as is normal for all click
 +events).
 +
 +The event type of a double-click event contains the prefix
 +@samp{double-}.  Thus, a double click on the second mouse button with
 +@key{meta} held down comes to the Lisp program as
 +@code{M-double-mouse-2}.  If a double-click event has no binding, the
 +binding of the corresponding ordinary click event is used to execute
 +it.  Thus, you need not pay attention to the double click feature
 +unless you really want to.
 +
 +When the user performs a double click, Emacs generates first an ordinary
 +click event, and then a double-click event.  Therefore, you must design
 +the command binding of the double click event to assume that the
 +single-click command has already run.  It must produce the desired
 +results of a double click, starting from the results of a single click.
 +
 +This is convenient, if the meaning of a double click somehow ``builds
 +on'' the meaning of a single click---which is recommended user interface
 +design practice for double clicks.
 +
 +If you click a button, then press it down again and start moving the
 +mouse with the button held down, then you get a @dfn{double-drag} event
 +when you ultimately release the button.  Its event type contains
 +@samp{double-drag} instead of just @samp{drag}.  If a double-drag event
 +has no binding, Emacs looks for an alternate binding as if the event
 +were an ordinary drag.
 +
 +Before the double-click or double-drag event, Emacs generates a
 +@dfn{double-down} event when the user presses the button down for the
 +second time.  Its event type contains @samp{double-down} instead of just
 +@samp{down}.  If a double-down event has no binding, Emacs looks for an
 +alternate binding as if the event were an ordinary button-down event.
 +If it finds no binding that way either, the double-down event is
 +ignored.
 +
 +To summarize, when you click a button and then press it again right
 +away, Emacs generates a down event and a click event for the first
 +click, a double-down event when you press the button again, and finally
 +either a double-click or a double-drag event.
 +
 +If you click a button twice and then press it again, all in quick
 +succession, Emacs generates a @dfn{triple-down} event, followed by
 +either a @dfn{triple-click} or a @dfn{triple-drag}.  The event types of
 +these events contain @samp{triple} instead of @samp{double}.  If any
 +triple event has no binding, Emacs uses the binding that it would use
 +for the corresponding double event.
 +
 +If you click a button three or more times and then press it again, the
 +events for the presses beyond the third are all triple events.  Emacs
 +does not have separate event types for quadruple, quintuple, etc.@:
 +events.  However, you can look at the event list to find out precisely
 +how many times the button was pressed.
 +
 +@defun event-click-count event
 +This function returns the number of consecutive button presses that led
 +up to @var{event}.  If @var{event} is a double-down, double-click or
 +double-drag event, the value is 2.  If @var{event} is a triple event,
 +the value is 3 or greater.  If @var{event} is an ordinary mouse event
 +(not a repeat event), the value is 1.
 +@end defun
 +
 +@defopt double-click-fuzz
 +To generate repeat events, successive mouse button presses must be at
 +approximately the same screen position.  The value of
 +@code{double-click-fuzz} specifies the maximum number of pixels the
 +mouse may be moved (horizontally or vertically) between two successive
 +clicks to make a double-click.
 +
 +This variable is also the threshold for motion of the mouse to count
 +as a drag.
 +@end defopt
 +
 +@defopt double-click-time
 +To generate repeat events, the number of milliseconds between
 +successive button presses must be less than the value of
 +@code{double-click-time}.  Setting @code{double-click-time} to
 +@code{nil} disables multi-click detection entirely.  Setting it to
 +@code{t} removes the time limit; Emacs then detects multi-clicks by
 +position only.
 +@end defopt
 +
 +@node Motion Events
 +@subsection Motion Events
 +@cindex motion event
 +@cindex mouse motion events
 +
 +Emacs sometimes generates @dfn{mouse motion} events to describe motion
 +of the mouse without any button activity.  Mouse motion events are
 +represented by lists that look like this:
 +
 +@example
 +(mouse-movement (POSITION))
 +@end example
 +
 +The second element of the list describes the current position of the
 +mouse, just as in a click event (@pxref{Click Events}).
 +
 +The special form @code{track-mouse} enables generation of motion events
 +within its body.  Outside of @code{track-mouse} forms, Emacs does not
 +generate events for mere motion of the mouse, and these events do not
 +appear.  @xref{Mouse Tracking}.
 +
 +@node Focus Events
 +@subsection Focus Events
 +@cindex focus event
 +
 +Window systems provide general ways for the user to control which window
 +gets keyboard input.  This choice of window is called the @dfn{focus}.
 +When the user does something to switch between Emacs frames, that
 +generates a @dfn{focus event}.  The normal definition of a focus event,
 +in the global keymap, is to select a new frame within Emacs, as the user
 +would expect.  @xref{Input Focus}.
 +
 +Focus events are represented in Lisp as lists that look like this:
 +
 +@example
 +(switch-frame @var{new-frame})
 +@end example
 +
 +@noindent
 +where @var{new-frame} is the frame switched to.
 +
 +Most X window managers are set up so that just moving the mouse into a
 +window is enough to set the focus there.  Emacs appears to do this,
 +because it changes the cursor to solid in the new frame.  However, there
 +is no need for the Lisp program to know about the focus change until
 +some other kind of input arrives.  So Emacs generates a focus event only
 +when the user actually types a keyboard key or presses a mouse button in
 +the new frame; just moving the mouse between frames does not generate a
 +focus event.
 +
 +A focus event in the middle of a key sequence would garble the
 +sequence.  So Emacs never generates a focus event in the middle of a key
 +sequence.  If the user changes focus in the middle of a key
 +sequence---that is, after a prefix key---then Emacs reorders the events
 +so that the focus event comes either before or after the multi-event key
 +sequence, and not within it.
 +
 +@node Misc Events
 +@subsection Miscellaneous System Events
 +
 +A few other event types represent occurrences within the system.
 +
 +@table @code
 +@cindex @code{delete-frame} event
 +@item (delete-frame (@var{frame}))
 +This kind of event indicates that the user gave the window manager
 +a command to delete a particular window, which happens to be an Emacs frame.
 +
 +The standard definition of the @code{delete-frame} event is to delete @var{frame}.
 +
 +@cindex @code{iconify-frame} event
 +@item (iconify-frame (@var{frame}))
 +This kind of event indicates that the user iconified @var{frame} using
 +the window manager.  Its standard definition is @code{ignore}; since the
 +frame has already been iconified, Emacs has no work to do.  The purpose
 +of this event type is so that you can keep track of such events if you
 +want to.
 +
 +@cindex @code{make-frame-visible} event
 +@item (make-frame-visible (@var{frame}))
 +This kind of event indicates that the user deiconified @var{frame} using
 +the window manager.  Its standard definition is @code{ignore}; since the
 +frame has already been made visible, Emacs has no work to do.
 +
 +@cindex @code{wheel-up} event
 +@cindex @code{wheel-down} event
 +@item (wheel-up @var{position})
 +@item (wheel-down @var{position})
 +These kinds of event are generated by moving a mouse wheel.  Their
 +usual meaning is a kind of scroll or zoom.
 +
 +The element @var{position} is a list describing the position of the
 +event, in the same format as used in a mouse-click event.
 +
 +This kind of event is generated only on some kinds of systems. On some
 +systems, @code{mouse-4} and @code{mouse-5} are used instead.  For
 +portable code, use the variables @code{mouse-wheel-up-event} and
 +@code{mouse-wheel-down-event} defined in @file{mwheel.el} to determine
 +what event types to expect for the mouse wheel.
 +
 +@cindex @code{drag-n-drop} event
 +@item (drag-n-drop @var{position} @var{files})
 +This kind of event is generated when a group of files is
 +selected in an application outside of Emacs, and then dragged and
 +dropped onto an Emacs frame.
 +
 +The element @var{position} is a list describing the position of the
 +event, in the same format as used in a mouse-click event, and
 +@var{files} is the list of file names that were dragged and dropped.
 +The usual way to handle this event is by visiting these files.
 +
 +This kind of event is generated, at present, only on some kinds of
 +systems.
 +
 +@cindex @code{help-echo} event
 +@item help-echo
 +This kind of event is generated when a mouse pointer moves onto a
 +portion of buffer text which has a @code{help-echo} text property.
 +The generated event has this form:
 +
 +@example
 +(help-echo @var{frame} @var{help} @var{window} @var{object} @var{pos})
 +@end example
 +
 +@noindent
 +The precise meaning of the event parameters and the way these
 +parameters are used to display the help-echo text are described in
 +@ref{Text help-echo}.
 +
 +@cindex @code{sigusr1} event
 +@cindex @code{sigusr2} event
 +@cindex user signals
 +@item sigusr1
 +@itemx sigusr2
 +These events are generated when the Emacs process receives
 +the signals @code{SIGUSR1} and @code{SIGUSR2}.  They contain no
 +additional data because signals do not carry additional information.
 +
 +To catch a user signal, bind the corresponding event to an interactive
 +command in the @code{special-event-map} (@pxref{Active Keymaps}).
 +The command is called with no arguments, and the specific signal event is
 +available in @code{last-input-event}.  For example:
 +
 +@smallexample
 +(defun sigusr-handler ()
 +  (interactive)
 +  (message "Caught signal %S" last-input-event))
 +
 +(define-key special-event-map [sigusr1] 'sigusr-handler)
 +@end smallexample
 +
 +To test the signal handler, you can make Emacs send a signal to itself:
 +
 +@smallexample
 +(signal-process (emacs-pid) 'sigusr1)
 +@end smallexample
 +@end table
 +
 +  If one of these events arrives in the middle of a key sequence---that
 +is, after a prefix key---then Emacs reorders the events so that this
 +event comes either before or after the multi-event key sequence, not
 +within it.
 +
 +@node Event Examples
 +@subsection Event Examples
 +
 +If the user presses and releases the left mouse button over the same
 +location, that generates a sequence of events like this:
 +
 +@smallexample
 +(down-mouse-1 (#<window 18 on NEWS> 2613 (0 . 38) -864320))
 +(mouse-1      (#<window 18 on NEWS> 2613 (0 . 38) -864180))
 +@end smallexample
 +
 +While holding the control key down, the user might hold down the
 +second mouse button, and drag the mouse from one line to the next.
 +That produces two events, as shown here:
 +
 +@smallexample
 +(C-down-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219))
 +(C-drag-mouse-2 (#<window 18 on NEWS> 3440 (0 . 27) -731219)
 +                (#<window 18 on NEWS> 3510 (0 . 28) -729648))
 +@end smallexample
 +
 +While holding down the meta and shift keys, the user might press the
 +second mouse button on the window's mode line, and then drag the mouse
 +into another window.  That produces a pair of events like these:
 +
 +@smallexample
 +(M-S-down-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844))
 +(M-S-drag-mouse-2 (#<window 18 on NEWS> mode-line (33 . 31) -457844)
 +                  (#<window 20 on carlton-sanskrit.tex> 161 (33 . 3)
 +                   -453816))
 +@end smallexample
 +
 +To handle a SIGUSR1 signal, define an interactive function, and
 +bind it to the @code{signal usr1} event sequence:
 +
 +@smallexample
 +(defun usr1-handler ()
 +  (interactive)
 +  (message "Got USR1 signal"))
 +(global-set-key [signal usr1] 'usr1-handler)
 +@end smallexample
 +
 +@node Classifying Events
 +@subsection Classifying Events
 +@cindex event type
 +
 +  Every event has an @dfn{event type}, which classifies the event for
 +key binding purposes.  For a keyboard event, the event type equals the
 +event value; thus, the event type for a character is the character, and
 +the event type for a function key symbol is the symbol itself.  For
 +events that are lists, the event type is the symbol in the @sc{car} of
 +the list.  Thus, the event type is always a symbol or a character.
 +
 +  Two events of the same type are equivalent where key bindings are
 +concerned; thus, they always run the same command.  That does not
 +necessarily mean they do the same things, however, as some commands look
 +at the whole event to decide what to do.  For example, some commands use
 +the location of a mouse event to decide where in the buffer to act.
 +
 +  Sometimes broader classifications of events are useful.  For example,
 +you might want to ask whether an event involved the @key{META} key,
 +regardless of which other key or mouse button was used.
 +
 +  The functions @code{event-modifiers} and @code{event-basic-type} are
 +provided to get such information conveniently.
 +
 +@defun event-modifiers event
 +This function returns a list of the modifiers that @var{event} has.  The
 +modifiers are symbols; they include @code{shift}, @code{control},
 +@code{meta}, @code{alt}, @code{hyper} and @code{super}.  In addition,
 +the modifiers list of a mouse event symbol always contains one of
 +@code{click}, @code{drag}, and @code{down}.  For double or triple
 +events, it also contains @code{double} or @code{triple}.
 +
 +The argument @var{event} may be an entire event object, or just an
 +event type.  If @var{event} is a symbol that has never been used in an
 +event that has been read as input in the current Emacs session, then
 +@code{event-modifiers} can return @code{nil}, even when @var{event}
 +actually has modifiers.
 +
 +Here are some examples:
 +
 +@example
 +(event-modifiers ?a)
 +     @result{} nil
 +(event-modifiers ?A)
 +     @result{} (shift)
 +(event-modifiers ?\C-a)
 +     @result{} (control)
 +(event-modifiers ?\C-%)
 +     @result{} (control)
 +(event-modifiers ?\C-\S-a)
 +     @result{} (control shift)
 +(event-modifiers 'f5)
 +     @result{} nil
 +(event-modifiers 's-f5)
 +     @result{} (super)
 +(event-modifiers 'M-S-f5)
 +     @result{} (meta shift)
 +(event-modifiers 'mouse-1)
 +     @result{} (click)
 +(event-modifiers 'down-mouse-1)
 +     @result{} (down)
 +@end example
 +
 +The modifiers list for a click event explicitly contains @code{click},
 +but the event symbol name itself does not contain @samp{click}.
 +@end defun
 +
 +@defun event-basic-type event
 +This function returns the key or mouse button that @var{event}
 +describes, with all modifiers removed.  The @var{event} argument is as
 +in @code{event-modifiers}.  For example:
 +
 +@example
 +(event-basic-type ?a)
 +     @result{} 97
 +(event-basic-type ?A)
 +     @result{} 97
 +(event-basic-type ?\C-a)
 +     @result{} 97
 +(event-basic-type ?\C-\S-a)
 +     @result{} 97
 +(event-basic-type 'f5)
 +     @result{} f5
 +(event-basic-type 's-f5)
 +     @result{} f5
 +(event-basic-type 'M-S-f5)
 +     @result{} f5
 +(event-basic-type 'down-mouse-1)
 +     @result{} mouse-1
 +@end example
 +@end defun
 +
 +@defun mouse-movement-p object
 +This function returns non-@code{nil} if @var{object} is a mouse movement
 +event.
 +@end defun
 +
 +@defun event-convert-list list
 +This function converts a list of modifier names and a basic event type
 +to an event type which specifies all of them.  The basic event type
 +must be the last element of the list.  For example,
 +
 +@example
 +(event-convert-list '(control ?a))
 +     @result{} 1
 +(event-convert-list '(control meta ?a))
 +     @result{} -134217727
 +(event-convert-list '(control super f1))
 +     @result{} C-s-f1
 +@end example
 +@end defun
 +
 +@node Accessing Events
 +@subsection Accessing Events
 +@cindex mouse events, data in
 +
 +  This section describes convenient functions for accessing the data in
 +a mouse button or motion event.
 +
 +  These two functions return the starting or ending position of a
 +mouse-button event, as a list of this form:
 +
 +@example
 +(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
 + @var{object} @var{text-pos} (@var{col} . @var{row})
 + @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
 +@end example
 +
 +@defun event-start event
 +This returns the starting position of @var{event}.
 +
 +If @var{event} is a click or button-down event, this returns the
 +location of the event.  If @var{event} is a drag event, this returns the
 +drag's starting position.
 +@end defun
 +
 +@defun event-end event
 +This returns the ending position of @var{event}.
 +
 +If @var{event} is a drag event, this returns the position where the user
 +released the mouse button.  If @var{event} is a click or button-down
 +event, the value is actually the starting position, which is the only
 +position such events have.
 +@end defun
 +
 +@cindex mouse position list, accessing
 +  These functions take a position list as described above, and
 +return various parts of it.
 +
 +@defun posn-window position
 +Return the window that @var{position} is in.
 +@end defun
 +
 +@defun posn-area position
 +Return the window area recorded in @var{position}.  It returns @code{nil}
 +when the event occurred in the text area of the window; otherwise, it
 +is a symbol identifying the area in which the event occurred.
 +@end defun
 +
 +@defun posn-point position
 +Return the buffer position in @var{position}.  When the event occurred
 +in the text area of the window, in a marginal area, or on a fringe,
 +this is an integer specifying a buffer position.  Otherwise, the value
 +is undefined.
 +@end defun
 +
 +@defun posn-x-y position
 +Return the pixel-based x and y coordinates in @var{position}, as a
 +cons cell @code{(@var{x} . @var{y})}.  These coordinates are relative
 +to the window given by @code{posn-window}.
 +
 +This example shows how to convert these window-relative coordinates
 +into frame-relative coordinates:
 +
 +@example
 +(defun frame-relative-coordinates (position)
 +  "Return frame-relative coordinates from POSITION."
 +  (let* ((x-y (posn-x-y position))
 +         (window (posn-window position))
 +         (edges (window-inside-pixel-edges window)))
 +    (cons (+ (car x-y) (car edges))
 +          (+ (cdr x-y) (cadr edges)))))
 +@end example
 +@end defun
 +
 +@defun posn-col-row position
 +Return the row and column (in units of the frame's default character
 +height and width) of @var{position}, as a cons cell @code{(@var{col} .
 +@var{row})}.  These are computed from the @var{x} and @var{y} values
 +actually found in @var{position}.
 +@end defun
 +
 +@defun posn-actual-col-row position
 +Return the actual row and column in @var{position}, as a cons cell
 +@code{(@var{col} . @var{row})}.  The values are the actual row number
 +in the window, and the actual character number in that row.  It returns
 +@code{nil} if @var{position} does not include actual positions values.
 +You can use @code{posn-col-row} to get approximate values.
 +@end defun
 +
 +@defun posn-string position
 +Return the string object in @var{position}, either @code{nil}, or a
 +cons cell @code{(@var{string} . @var{string-pos})}.
 +@end defun
 +
 +@defun posn-image position
 +Return the image object in @var{position}, either @code{nil}, or an
 +image @code{(image ...)}.
 +@end defun
 +
 +@defun posn-object position
 +Return the image or string object in @var{position}, either
 +@code{nil}, an image @code{(image ...)}, or a cons cell
 +@code{(@var{string} . @var{string-pos})}.
 +@end defun
 +
 +@defun posn-object-x-y position
 +Return the pixel-based x and y coordinates relative to the upper left
 +corner of the object in @var{position} as a cons cell @code{(@var{dx}
 +. @var{dy})}.  If the @var{position} is a buffer position, return the
 +relative position in the character at that position.
 +@end defun
 +
 +@defun posn-object-width-height position
 +Return the pixel width and height of the object in @var{position} as a
 +cons cell @code{(@var{width} . @var{height})}.  If the @var{position}
 +is a buffer position, return the size of the character at that position.
 +@end defun
 +
 +@cindex timestamp of a mouse event
 +@defun posn-timestamp position
 +Return the timestamp in @var{position}.  This is the time at which the
 +event occurred, in milliseconds.
 +@end defun
 +
 +  These functions compute a position list given particular buffer
 +position or screen position.  You can access the data in this position
 +list with the functions described above.
 +
 +@defun posn-at-point &optional pos window
 +This function returns a position list for position @var{pos} in
 +@var{window}.  @var{pos} defaults to point in @var{window};
 +@var{window} defaults to the selected window.
 +
 +@code{posn-at-point} returns @code{nil} if @var{pos} is not visible in
 +@var{window}.
 +@end defun
 +
 +@defun posn-at-x-y x y &optional frame-or-window whole
 +This function returns position information corresponding to pixel
 +coordinates @var{x} and @var{y} in a specified frame or window,
 +@var{frame-or-window}, which defaults to the selected window.
 +The coordinates @var{x} and @var{y} are relative to the
 +frame or window used.
 +If @var{whole} is @code{nil}, the coordinates are relative
 +to the window text area, otherwise they are relative to
 +the entire window area including scroll bars, margins and fringes.
 +@end defun
 +
 +  These functions are useful for decoding scroll bar events.
 +
 +@defun scroll-bar-event-ratio event
 +This function returns the fractional vertical position of a scroll bar
 +event within the scroll bar.  The value is a cons cell
 +@code{(@var{portion} . @var{whole})} containing two integers whose ratio
 +is the fractional position.
 +@end defun
 +
 +@defun scroll-bar-scale ratio total
 +This function multiplies (in effect) @var{ratio} by @var{total},
 +rounding the result to an integer.  The argument @var{ratio} is not a
 +number, but rather a pair @code{(@var{num} . @var{denom})}---typically a
 +value returned by @code{scroll-bar-event-ratio}.
 +
 +This function is handy for scaling a position on a scroll bar into a
 +buffer position.  Here's how to do that:
 +
 +@example
 +(+ (point-min)
 +   (scroll-bar-scale
 +      (posn-x-y (event-start event))
 +      (- (point-max) (point-min))))
 +@end example
 +
 +Recall that scroll bar events have two integers forming a ratio, in place
 +of a pair of x and y coordinates.
 +@end defun
 +
 +@node Strings of Events
 +@subsection Putting Keyboard Events in Strings
 +@cindex keyboard events in strings
 +@cindex strings with keyboard events
 +
 +  In most of the places where strings are used, we conceptualize the
 +string as containing text characters---the same kind of characters found
 +in buffers or files.  Occasionally Lisp programs use strings that
 +conceptually contain keyboard characters; for example, they may be key
 +sequences or keyboard macro definitions.  However, storing keyboard
 +characters in a string is a complex matter, for reasons of historical
 +compatibility, and it is not always possible.
 +
 +  We recommend that new programs avoid dealing with these complexities
 +by not storing keyboard events in strings.  Here is how to do that:
 +
 +@itemize @bullet
 +@item
 +Use vectors instead of strings for key sequences, when you plan to use
 +them for anything other than as arguments to @code{lookup-key} and
 +@code{define-key}.  For example, you can use
 +@code{read-key-sequence-vector} instead of @code{read-key-sequence}, and
 +@code{this-command-keys-vector} instead of @code{this-command-keys}.
 +
 +@item
 +Use vectors to write key sequence constants containing meta characters,
 +even when passing them directly to @code{define-key}.
 +
 +@item
 +When you have to look at the contents of a key sequence that might be a
 +string, use @code{listify-key-sequence} (@pxref{Event Input Misc})
 +first, to convert it to a list.
 +@end itemize
 +
 +  The complexities stem from the modifier bits that keyboard input
 +characters can include.  Aside from the Meta modifier, none of these
 +modifier bits can be included in a string, and the Meta modifier is
 +allowed only in special cases.
 +
 +  The earliest GNU Emacs versions represented meta characters as codes
 +in the range of 128 to 255.  At that time, the basic character codes
 +ranged from 0 to 127, so all keyboard character codes did fit in a
 +string.  Many Lisp programs used @samp{\M-} in string constants to stand
 +for meta characters, especially in arguments to @code{define-key} and
 +similar functions, and key sequences and sequences of events were always
 +represented as strings.
 +
 +  When we added support for larger basic character codes beyond 127, and
 +additional modifier bits, we had to change the representation of meta
 +characters.  Now the flag that represents the Meta modifier in a
 +character is
 +@tex
 +@math{2^{27}}
 +@end tex
 +@ifnottex
 +2**27
 +@end ifnottex
 +and such numbers cannot be included in a string.
 +
 +  To support programs with @samp{\M-} in string constants, there are
 +special rules for including certain meta characters in a string.
 +Here are the rules for interpreting a string as a sequence of input
 +characters:
 +
 +@itemize @bullet
 +@item
 +If the keyboard character value is in the range of 0 to 127, it can go
 +in the string unchanged.
 +
 +@item
 +The meta variants of those characters, with codes in the range of
 +@tex
 +@math{2^{27}}
 +@end tex
 +@ifnottex
 +2**27
 +@end ifnottex
 +to
 +@tex
 +@math{2^{27} + 127},
 +@end tex
 +@ifnottex
 +2**27+127,
 +@end ifnottex
 +can also go in the string, but you must change their
 +numeric values.  You must set the
 +@tex
 +@math{2^{7}}
 +@end tex
 +@ifnottex
 +2**7
 +@end ifnottex
 +bit instead of the
 +@tex
 +@math{2^{27}}
 +@end tex
 +@ifnottex
 +2**27
 +@end ifnottex
 +bit, resulting in a value between 128 and 255.  Only a unibyte string
 +can include these codes.
 +
 +@item
 +Non-@acronym{ASCII} characters above 256 can be included in a multibyte string.
 +
 +@item
 +Other keyboard character events cannot fit in a string.  This includes
 +keyboard events in the range of 128 to 255.
 +@end itemize
 +
 +  Functions such as @code{read-key-sequence} that construct strings of
 +keyboard input characters follow these rules: they construct vectors
 +instead of strings, when the events won't fit in a string.
 +
 +  When you use the read syntax @samp{\M-} in a string, it produces a
 +code in the range of 128 to 255---the same code that you get if you
 +modify the corresponding keyboard event to put it in the string.  Thus,
 +meta events in strings work consistently regardless of how they get into
 +the strings.
 +
 +  However, most programs would do well to avoid these issues by
 +following the recommendations at the beginning of this section.
 +
 +@node Reading Input
 +@section Reading Input
 +@cindex read input
 +@cindex keyboard input
 +
 +  The editor command loop reads key sequences using the function
 +@code{read-key-sequence}, which uses @code{read-event}.  These and other
 +functions for event input are also available for use in Lisp programs.
 +See also @code{momentary-string-display} in @ref{Temporary Displays},
 +and @code{sit-for} in @ref{Waiting}.  @xref{Terminal Input}, for
 +functions and variables for controlling terminal input modes and
 +debugging terminal input.
 +
 +  For higher-level input facilities, see @ref{Minibuffers}.
 +
 +@menu
 +* Key Sequence Input::                How to read one key sequence.
 +* Reading One Event::         How to read just one event.
 +* Event Mod::                   How Emacs modifies events as they are read.
 +* Invoking the Input Method::   How reading an event uses the input method.
 +* Quoted Character Input::    Asking the user to specify a character.
 +* Event Input Misc::          How to reread or throw away input events.
 +@end menu
 +
 +@node Key Sequence Input
 +@subsection Key Sequence Input
 +@cindex key sequence input
 +
 +  The command loop reads input a key sequence at a time, by calling
 +@code{read-key-sequence}.  Lisp programs can also call this function;
 +for example, @code{describe-key} uses it to read the key to describe.
 +
 +@defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
 +This function reads a key sequence and returns it as a string or
 +vector.  It keeps reading events until it has accumulated a complete key
 +sequence; that is, enough to specify a non-prefix command using the
 +currently active keymaps.  (Remember that a key sequence that starts
 +with a mouse event is read using the keymaps of the buffer in the
 +window that the mouse was in, not the current buffer.)
 +
 +If the events are all characters and all can fit in a string, then
 +@code{read-key-sequence} returns a string (@pxref{Strings of Events}).
 +Otherwise, it returns a vector, since a vector can hold all kinds of
 +events---characters, symbols, and lists.  The elements of the string or
 +vector are the events in the key sequence.
 +
 +Reading a key sequence includes translating the events in various
 +ways.  @xref{Translation Keymaps}.
 +
 +The argument @var{prompt} is either a string to be displayed in the
 +echo area as a prompt, or @code{nil}, meaning not to display a prompt.
 +The argument @var{continue-echo}, if non-@code{nil}, means to echo
 +this key as a continuation of the previous key.
 +
 +Normally any upper case event is converted to lower case if the
 +original event is undefined and the lower case equivalent is defined.
 +The argument @var{dont-downcase-last}, if non-@code{nil}, means do not
 +convert the last event to lower case.  This is appropriate for reading
 +a key sequence to be defined.
 +
 +The argument @var{switch-frame-ok}, if non-@code{nil}, means that this
 +function should process a @code{switch-frame} event if the user
 +switches frames before typing anything.  If the user switches frames
 +in the middle of a key sequence, or at the start of the sequence but
 +@var{switch-frame-ok} is @code{nil}, then the event will be put off
 +until after the current key sequence.
 +
 +The argument @var{command-loop}, if non-@code{nil}, means that this
 +key sequence is being read by something that will read commands one
 +after another.  It should be @code{nil} if the caller will read just
 +one key sequence.
 +
 +In the following example, Emacs displays the prompt @samp{?} in the
 +echo area, and then the user types @kbd{C-x C-f}.
 +
 +@example
 +(read-key-sequence "?")
 +
 +@group
 +---------- Echo Area ----------
 +?@kbd{C-x C-f}
 +---------- Echo Area ----------
 +
 +     @result{} "^X^F"
 +@end group
 +@end example
 +
 +The function @code{read-key-sequence} suppresses quitting: @kbd{C-g}
 +typed while reading with this function works like any other character,
 +and does not set @code{quit-flag}.  @xref{Quitting}.
 +@end defun
 +
 +@defun read-key-sequence-vector prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
 +This is like @code{read-key-sequence} except that it always
 +returns the key sequence as a vector, never as a string.
 +@xref{Strings of Events}.
 +@end defun
 +
 +@cindex upper case key sequence
 +@cindex downcasing in @code{lookup-key}
 +If an input character is upper-case (or has the shift modifier) and
 +has no key binding, but its lower-case equivalent has one, then
 +@code{read-key-sequence} converts the character to lower case.  Note
 +that @code{lookup-key} does not perform case conversion in this way.
 +
 +The function @code{read-key-sequence} also transforms some mouse events.
 +It converts unbound drag events into click events, and discards unbound
 +button-down events entirely.  It also reshuffles focus events and
 +miscellaneous window events so that they never appear in a key sequence
 +with any other events.
 +
 +@cindex @code{header-line} prefix key
 +@cindex @code{mode-line} prefix key
 +@cindex @code{vertical-line} prefix key
 +@cindex @code{horizontal-scroll-bar} prefix key
 +@cindex @code{vertical-scroll-bar} prefix key
 +@cindex @code{menu-bar} prefix key
 +@cindex mouse events, in special parts of frame
 +When mouse events occur in special parts of a window, such as a mode
 +line or a scroll bar, the event type shows nothing special---it is the
 +same symbol that would normally represent that combination of mouse
 +button and modifier keys.  The information about the window part is kept
 +elsewhere in the event---in the coordinates.  But
 +@code{read-key-sequence} translates this information into imaginary
 +``prefix keys,'' all of which are symbols: @code{header-line},
 +@code{horizontal-scroll-bar}, @code{menu-bar}, @code{mode-line},
 +@code{vertical-line}, and @code{vertical-scroll-bar}.  You can define
 +meanings for mouse clicks in special window parts by defining key
 +sequences using these imaginary prefix keys.
 +
 +For example, if you call @code{read-key-sequence} and then click the
 +mouse on the window's mode line, you get two events, like this:
 +
 +@example
 +(read-key-sequence "Click on the mode line: ")
 +     @result{} [mode-line
 +         (mouse-1
 +          (#<window 6 on NEWS> mode-line
 +           (40 . 63) 5959987))]
 +@end example
 +
 +@defvar num-input-keys
 +@c Emacs 19 feature
 +This variable's value is the number of key sequences processed so far in
 +this Emacs session.  This includes key sequences read from the terminal
 +and key sequences read from keyboard macros being executed.
 +@end defvar
 +
 +@node Reading One Event
 +@subsection Reading One Event
 +@cindex reading a single event
 +@cindex event, reading only one
 +
 +  The lowest level functions for command input are those that read a
 +single event.
 +
 +None of the three functions below suppresses quitting.
 +
 +@defun read-event &optional prompt inherit-input-method seconds
 +This function reads and returns the next event of command input, waiting
 +if necessary until an event is available.  Events can come directly from
 +the user or from a keyboard macro.
 +
 +If the optional argument @var{prompt} is non-@code{nil}, it should be a
 +string to display in the echo area as a prompt.  Otherwise,
 +@code{read-event} does not display any message to indicate it is waiting
 +for input; instead, it prompts by echoing: it displays descriptions of
 +the events that led to or were read by the current command.  @xref{The
 +Echo Area}.
 +
 +If @var{inherit-input-method} is non-@code{nil}, then the current input
 +method (if any) is employed to make it possible to enter a
 +non-@acronym{ASCII} character.  Otherwise, input method handling is disabled
 +for reading this event.
 +
 +If @code{cursor-in-echo-area} is non-@code{nil}, then @code{read-event}
 +moves the cursor temporarily to the echo area, to the end of any message
 +displayed there.  Otherwise @code{read-event} does not move the cursor.
 +
 +If @var{seconds} is non-@code{nil}, it should be a number specifying
 +the maximum time to wait for input, in seconds.  If no input arrives
 +within that time, @code{read-event} stops waiting and returns
 +@code{nil}.  A floating-point value for @var{seconds} means to wait
 +for a fractional number of seconds.  Some systems support only a whole
 +number of seconds; on these systems, @var{seconds} is rounded down.
 +If @var{seconds} is @code{nil}, @code{read-event} waits as long as
 +necessary for input to arrive.
 +
 +If @var{seconds} is @code{nil}, Emacs is considered idle while waiting
 +for user input to arrive.  Idle timers---those created with
 +@code{run-with-idle-timer} (@pxref{Idle Timers})---can run during this
 +period.  However, if @var{seconds} is non-@code{nil}, the state of
 +idleness remains unchanged.  If Emacs is non-idle when
 +@code{read-event} is called, it remains non-idle throughout the
 +operation of @code{read-event}; if Emacs is idle (which can happen if
 +the call happens inside an idle timer), it remains idle.
 +
 +If @code{read-event} gets an event that is defined as a help character,
 +then in some cases @code{read-event} processes the event directly without
 +returning.  @xref{Help Functions}.  Certain other events, called
 +@dfn{special events}, are also processed directly within
 +@code{read-event} (@pxref{Special Events}).
 +
 +Here is what happens if you call @code{read-event} and then press the
 +right-arrow function key:
 +
 +@example
 +@group
 +(read-event)
 +     @result{} right
 +@end group
 +@end example
 +@end defun
 +
 +@defun read-char &optional prompt inherit-input-method seconds
 +This function reads and returns a character of command input.  If the
 +user generates an event which is not a character (i.e. a mouse click or
 +function key event), @code{read-char} signals an error.  The arguments
 +work as in @code{read-event}.
 +
 +In the first example, the user types the character @kbd{1} (@acronym{ASCII}
 +code 49).  The second example shows a keyboard macro definition that
 +calls @code{read-char} from the minibuffer using @code{eval-expression}.
 +@code{read-char} reads the keyboard macro's very next character, which
 +is @kbd{1}.  Then @code{eval-expression} displays its return value in
 +the echo area.
 +
 +@example
 +@group
 +(read-char)
 +     @result{} 49
 +@end group
 +
 +@group
 +;; @r{We assume here you use @kbd{M-:} to evaluate this.}
 +(symbol-function 'foo)
 +     @result{} "^[:(read-char)^M1"
 +@end group
 +@group
 +(execute-kbd-macro 'foo)
 +     @print{} 49
 +     @result{} nil
 +@end group
 +@end example
 +@end defun
 +
 +@defun read-char-exclusive &optional prompt inherit-input-method seconds
 +This function reads and returns a character of command input.  If the
 +user generates an event which is not a character,
 +@code{read-char-exclusive} ignores it and reads another event, until it
 +gets a character.  The arguments work as in @code{read-event}.
 +@end defun
 +
 +@defvar num-nonmacro-input-events
 +This variable holds the total number of input events received so far
 +from the terminal---not counting those generated by keyboard macros.
 +@end defvar
 +
 +@node Event Mod
 +@subsection Modifying and Translating Input Events
 +
 +  Emacs modifies every event it reads according to
 +@code{extra-keyboard-modifiers}, then translates it through
 +@code{keyboard-translate-table} (if applicable), before returning it
 +from @code{read-event}.
 +
 +@c Emacs 19 feature
 +@defvar extra-keyboard-modifiers
 +This variable lets Lisp programs ``press'' the modifier keys on the
 +keyboard.  The value is a character.  Only the modifiers of the
 +character matter.  Each time the user types a keyboard key, it is
 +altered as if those modifier keys were held down.  For instance, if
 +you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all
 +keyboard input characters typed during the scope of the binding will
 +have the control and meta modifiers applied to them.  The character
 +@code{?\C-@@}, equivalent to the integer 0, does not count as a control
 +character for this purpose, but as a character with no modifiers.
 +Thus, setting @code{extra-keyboard-modifiers} to zero cancels any
 +modification.
 +
 +When using a window system, the program can ``press'' any of the
 +modifier keys in this way.  Otherwise, only the @key{CTL} and @key{META}
 +keys can be virtually pressed.
 +
 +Note that this variable applies only to events that really come from
 +the keyboard, and has no effect on mouse events or any other events.
 +@end defvar
 +
 +@defvar keyboard-translate-table
 +This variable is the translate table for keyboard characters.  It lets
 +you reshuffle the keys on the keyboard without changing any command
 +bindings.  Its value is normally a char-table, or else @code{nil}.
 +(It can also be a string or vector, but this is considered obsolete.)
 +
 +If @code{keyboard-translate-table} is a char-table
 +(@pxref{Char-Tables}), then each character read from the keyboard is
 +looked up in this char-table.  If the value found there is
 +non-@code{nil}, then it is used instead of the actual input character.
 +
 +Note that this translation is the first thing that happens to a
 +character after it is read from the terminal.  Record-keeping features
 +such as @code{recent-keys} and dribble files record the characters after
 +translation.
 +
 +Note also that this translation is done before the characters are
 +supplied to input methods (@pxref{Input Methods}).  Use
 +@code{translation-table-for-input} (@pxref{Translation of Characters}),
 +if you want to translate characters after input methods operate.
 +@end defvar
 +
 +@defun keyboard-translate from to
 +This function modifies @code{keyboard-translate-table} to translate
 +character code @var{from} into character code @var{to}.  It creates
 +the keyboard translate table if necessary.
 +@end defun
 +
 +  Here's an example of using the @code{keyboard-translate-table} to
 +make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
 +operations:
 +
 +@example
 +(keyboard-translate ?\C-x 'control-x)
 +(keyboard-translate ?\C-c 'control-c)
 +(keyboard-translate ?\C-v 'control-v)
 +(global-set-key [control-x] 'kill-region)
 +(global-set-key [control-c] 'kill-ring-save)
 +(global-set-key [control-v] 'yank)
 +@end example
 +
 +@noindent
 +On a graphical terminal that supports extended @acronym{ASCII} input,
 +you can still get the standard Emacs meanings of one of those
 +characters by typing it with the shift key.  That makes it a different
 +character as far as keyboard translation is concerned, but it has the
 +same usual meaning.
 +
 +  @xref{Translation Keymaps}, for mechanisms that translate event sequences
 +at the level of @code{read-key-sequence}.
 +
 +@node Invoking the Input Method
 +@subsection Invoking the Input Method
 +
 +  The event-reading functions invoke the current input method, if any
 +(@pxref{Input Methods}).  If the value of @code{input-method-function}
 +is non-@code{nil}, it should be a function; when @code{read-event} reads
 +a printing character (including @key{SPC}) with no modifier bits, it
 +calls that function, passing the character as an argument.
 +
 +@defvar input-method-function
 +If this is non-@code{nil}, its value specifies the current input method
 +function.
 +
 +@strong{Warning:} don't bind this variable with @code{let}.  It is often
 +buffer-local, and if you bind it around reading input (which is exactly
 +when you @emph{would} bind it), switching buffers asynchronously while
 +Emacs is waiting will cause the value to be restored in the wrong
 +buffer.
 +@end defvar
 +
 +  The input method function should return a list of events which should
 +be used as input.  (If the list is @code{nil}, that means there is no
 +input, so @code{read-event} waits for another event.)  These events are
 +processed before the events in @code{unread-command-events}
 +(@pxref{Event Input Misc}).  Events
 +returned by the input method function are not passed to the input method
 +function again, even if they are printing characters with no modifier
 +bits.
 +
 +  If the input method function calls @code{read-event} or
 +@code{read-key-sequence}, it should bind @code{input-method-function} to
 +@code{nil} first, to prevent recursion.
 +
 +  The input method function is not called when reading the second and
 +subsequent events of a key sequence.  Thus, these characters are not
 +subject to input method processing.  The input method function should
 +test the values of @code{overriding-local-map} and
 +@code{overriding-terminal-local-map}; if either of these variables is
 +non-@code{nil}, the input method should put its argument into a list and
 +return that list with no further processing.
 +
 +@node Quoted Character Input
 +@subsection Quoted Character Input
 +@cindex quoted character input
 +
 +  You can use the function @code{read-quoted-char} to ask the user to
 +specify a character, and allow the user to specify a control or meta
 +character conveniently, either literally or as an octal character code.
 +The command @code{quoted-insert} uses this function.
 +
 +@defun read-quoted-char &optional prompt
 +@cindex octal character input
 +@cindex control characters, reading
 +@cindex nonprinting characters, reading
 +This function is like @code{read-char}, except that if the first
 +character read is an octal digit (0-7), it reads any number of octal
 +digits (but stopping if a non-octal digit is found), and returns the
 +character represented by that numeric character code.  If the
 +character that terminates the sequence of octal digits is @key{RET},
 +it is discarded.  Any other terminating character is used as input
 +after this function returns.
 +
 +Quitting is suppressed when the first character is read, so that the
 +user can enter a @kbd{C-g}.  @xref{Quitting}.
 +
 +If @var{prompt} is supplied, it specifies a string for prompting the
 +user.  The prompt string is always displayed in the echo area, followed
 +by a single @samp{-}.
 +
 +In the following example, the user types in the octal number 177 (which
 +is 127 in decimal).
 +
 +@example
 +(read-quoted-char "What character")
 +
 +@group
 +---------- Echo Area ----------
 +What character @kbd{1 7 7}-
 +---------- Echo Area ----------
 +
 +     @result{} 127
 +@end group
 +@end example
 +@end defun
 +
 +@need 2000
 +@node Event Input Misc
 +@subsection Miscellaneous Event Input Features
 +
 +This section describes how to ``peek ahead'' at events without using
 +them up, how to check for pending input, and how to discard pending
 +input.  See also the function @code{read-passwd} (@pxref{Reading a
 +Password}).
 +
 +@defvar unread-command-events
 +@cindex next input
 +@cindex peeking at input
 +This variable holds a list of events waiting to be read as command
 +input.  The events are used in the order they appear in the list, and
 +removed one by one as they are used.
 +
 +The variable is needed because in some cases a function reads an event
 +and then decides not to use it.  Storing the event in this variable
 +causes it to be processed normally, by the command loop or by the
 +functions to read command input.
 +
 +@cindex prefix argument unreading
 +For example, the function that implements numeric prefix arguments reads
 +any number of digits.  When it finds a non-digit event, it must unread
 +the event so that it can be read normally by the command loop.
 +Likewise, incremental search uses this feature to unread events with no
 +special meaning in a search, because these events should exit the search
 +and then execute normally.
 +
 +The reliable and easy way to extract events from a key sequence so as to
 +put them in @code{unread-command-events} is to use
 +@code{listify-key-sequence} (@pxref{Strings of Events}).
 +
 +Normally you add events to the front of this list, so that the events
 +most recently unread will be reread first.
 +
 +Events read from this list are not normally added to the current
 +command's key sequence (as returned by e.g. @code{this-command-keys}),
 +as the events will already have been added once as they were read for
 +the first time.  An element of the form @code{(@code{t} . @var{event})}
 +forces @var{event} to be added to the current command's key sequence.
 +@end defvar
 +
 +@defun listify-key-sequence key
 +This function converts the string or vector @var{key} to a list of
 +individual events, which you can put in @code{unread-command-events}.
 +@end defun
 +
 +@defvar unread-command-char
 +This variable holds a character to be read as command input.
 +A value of -1 means ``empty.''
 +
 +This variable is mostly obsolete now that you can use
 +@code{unread-command-events} instead; it exists only to support programs
 +written for Emacs versions 18 and earlier.
 +@end defvar
 +
 +@defun input-pending-p
 +@cindex waiting for command key input
 +This function determines whether any command input is currently
 +available to be read.  It returns immediately, with value @code{t} if
 +there is available input, @code{nil} otherwise.  On rare occasions it
 +may return @code{t} when no input is available.
 +@end defun
 +
 +@defvar last-input-event
 +@defvarx last-input-char
 +This variable records the last terminal input event read, whether
 +as part of a command or explicitly by a Lisp program.
 +
 +In the example below, the Lisp program reads the character @kbd{1},
 +@acronym{ASCII} code 49.  It becomes the value of @code{last-input-event},
 +while @kbd{C-e} (we assume @kbd{C-x C-e} command is used to evaluate
 +this expression) remains the value of @code{last-command-event}.
 +
 +@example
 +@group
 +(progn (print (read-char))
 +       (print last-command-event)
 +       last-input-event)
 +     @print{} 49
 +     @print{} 5
 +     @result{} 49
 +@end group
 +@end example
 +
 +The alias @code{last-input-char} exists for compatibility with
 +Emacs version 18.
 +@end defvar
 +
 +@defmac while-no-input body@dots{}
 +This construct runs the @var{body} forms and returns the value of the
 +last one---but only if no input arrives.  If any input arrives during
 +the execution of the @var{body} forms, it aborts them (working much
 +like a quit).  The @code{while-no-input} form returns @code{nil} if
 +aborted by a real quit, and returns @code{t} if aborted by arrival of
 +other input.
 +
 +If a part of @var{body} binds @code{inhibit-quit} to non-@code{nil},
 +arrival of input during those parts won't cause an abort until
 +the end of that part.
 +
 +If you want to be able to distinguish all possible values computed
 +by @var{body} from both kinds of abort conditions, write the code
 +like this:
 +
 +@example
 +(while-no-input
 +  (list
 +    (progn . @var{body})))
 +@end example
 +@end defmac
 +
 +@defun discard-input
 +@cindex flushing input
 +@cindex discarding input
 +@cindex keyboard macro, terminating
 +This function discards the contents of the terminal input buffer and
 +cancels any keyboard macro that might be in the process of definition.
 +It returns @code{nil}.
 +
 +In the following example, the user may type a number of characters right
 +after starting the evaluation of the form.  After the @code{sleep-for}
 +finishes sleeping, @code{discard-input} discards any characters typed
 +during the sleep.
 +
 +@example
 +(progn (sleep-for 2)
 +       (discard-input))
 +     @result{} nil
 +@end example
 +@end defun
 +
 +@node Special Events
 +@section Special Events
 +
 +@cindex special events
 +Special events are handled at a very low level---as soon as they are
 +read.  The @code{read-event} function processes these events itself, and
 +never returns them.  Instead, it keeps waiting for the first event
 +that is not special and returns that one.
 +
 +Events that are handled in this way do not echo, they are never grouped
 +into key sequences, and they never appear in the value of
 +@code{last-command-event} or @code{(this-command-keys)}.  They do not
 +discard a numeric argument, they cannot be unread with
 +@code{unread-command-events}, they may not appear in a keyboard macro,
 +and they are not recorded in a keyboard macro while you are defining
 +one.
 +
 +These events do, however, appear in @code{last-input-event} immediately
 +after they are read, and this is the way for the event's definition to
 +find the actual event.
 +
 +The events types @code{iconify-frame}, @code{make-frame-visible},
 +@code{delete-frame}, @code{drag-n-drop}, and user signals like
 +@code{sigusr1} are normally handled in this way.  The keymap which
 +defines how to handle special events---and which events are special---is
 +in the variable @code{special-event-map} (@pxref{Active Keymaps}).
 +
 +@node Waiting
 +@section Waiting for Elapsed Time or Input
 +@cindex waiting
 +
 +  The wait functions are designed to wait for a certain amount of time
 +to pass or until there is input.  For example, you may wish to pause in
 +the middle of a computation to allow the user time to view the display.
 +@code{sit-for} pauses and updates the screen, and returns immediately if
 +input comes in, while @code{sleep-for} pauses without updating the
 +screen.
 +
 +@defun sit-for seconds &optional nodisp
 +This function performs redisplay (provided there is no pending input
 +from the user), then waits @var{seconds} seconds, or until input is
 +available.  The usual purpose of @code{sit-for} is to give the user
 +time to read text that you display.  The value is @code{t} if
 +@code{sit-for} waited the full time with no input arriving
 +(@pxref{Event Input Misc}).  Otherwise, the value is @code{nil}.
 +
 +The argument @var{seconds} need not be an integer.  If it is a floating
 +point number, @code{sit-for} waits for a fractional number of seconds.
 +Some systems support only a whole number of seconds; on these systems,
 +@var{seconds} is rounded down.
 +
 +The expression @code{(sit-for 0)} is equivalent to @code{(redisplay)},
 +i.e. it requests a redisplay, without any delay, if there is no pending input.
 +@xref{Forcing Redisplay}.
 +
 +If @var{nodisp} is non-@code{nil}, then @code{sit-for} does not
 +redisplay, but it still returns as soon as input is available (or when
 +the timeout elapses).
 +
 +In batch mode (@pxref{Batch Mode}), @code{sit-for} cannot be
 +interrupted, even by input from the standard input descriptor.  It is
 +thus equivalent to @code{sleep-for}, which is described below.
 +
 +It is also possible to call @code{sit-for} with three arguments,
 +as @code{(sit-for @var{seconds} @var{millisec} @var{nodisp})},
 +but that is considered obsolete.
 +@end defun
 +
 +@defun sleep-for seconds &optional millisec
 +This function simply pauses for @var{seconds} seconds without updating
 +the display.  It pays no attention to available input.  It returns
 +@code{nil}.
 +
 +The argument @var{seconds} need not be an integer.  If it is a floating
 +point number, @code{sleep-for} waits for a fractional number of seconds.
 +Some systems support only a whole number of seconds; on these systems,
 +@var{seconds} is rounded down.
 +
 +The optional argument @var{millisec} specifies an additional waiting
 +period measured in milliseconds.  This adds to the period specified by
 +@var{seconds}.  If the system doesn't support waiting fractions of a
 +second, you get an error if you specify nonzero @var{millisec}.
 +
 +Use @code{sleep-for} when you wish to guarantee a delay.
 +@end defun
 +
 +  @xref{Time of Day}, for functions to get the current time.
 +
 +@node Quitting
 +@section Quitting
 +@cindex @kbd{C-g}
 +@cindex quitting
 +@cindex interrupt Lisp functions
 +
 +  Typing @kbd{C-g} while a Lisp function is running causes Emacs to
 +@dfn{quit} whatever it is doing.  This means that control returns to the
 +innermost active command loop.
 +
 +  Typing @kbd{C-g} while the command loop is waiting for keyboard input
 +does not cause a quit; it acts as an ordinary input character.  In the
 +simplest case, you cannot tell the difference, because @kbd{C-g}
 +normally runs the command @code{keyboard-quit}, whose effect is to quit.
 +However, when @kbd{C-g} follows a prefix key, they combine to form an
 +undefined key.  The effect is to cancel the prefix key as well as any
 +prefix argument.
 +
 +  In the minibuffer, @kbd{C-g} has a different definition: it aborts out
 +of the minibuffer.  This means, in effect, that it exits the minibuffer
 +and then quits.  (Simply quitting would return to the command loop
 +@emph{within} the minibuffer.)  The reason why @kbd{C-g} does not quit
 +directly when the command reader is reading input is so that its meaning
 +can be redefined in the minibuffer in this way.  @kbd{C-g} following a
 +prefix key is not redefined in the minibuffer, and it has its normal
 +effect of canceling the prefix key and prefix argument.  This too
 +would not be possible if @kbd{C-g} always quit directly.
 +
 +  When @kbd{C-g} does directly quit, it does so by setting the variable
 +@code{quit-flag} to @code{t}.  Emacs checks this variable at appropriate
 +times and quits if it is not @code{nil}.  Setting @code{quit-flag}
 +non-@code{nil} in any way thus causes a quit.
 +
 +  At the level of C code, quitting cannot happen just anywhere; only at the
 +special places that check @code{quit-flag}.  The reason for this is
 +that quitting at other places might leave an inconsistency in Emacs's
 +internal state.  Because quitting is delayed until a safe place, quitting
 +cannot make Emacs crash.
 +
 +  Certain functions such as @code{read-key-sequence} or
 +@code{read-quoted-char} prevent quitting entirely even though they wait
 +for input.  Instead of quitting, @kbd{C-g} serves as the requested
 +input.  In the case of @code{read-key-sequence}, this serves to bring
 +about the special behavior of @kbd{C-g} in the command loop.  In the
 +case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used
 +to quote a @kbd{C-g}.
 +
 +@cindex preventing quitting
 +  You can prevent quitting for a portion of a Lisp function by binding
 +the variable @code{inhibit-quit} to a non-@code{nil} value.  Then,
 +although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the
 +usual result of this---a quit---is prevented.  Eventually,
 +@code{inhibit-quit} will become @code{nil} again, such as when its
 +binding is unwound at the end of a @code{let} form.  At that time, if
 +@code{quit-flag} is still non-@code{nil}, the requested quit happens
 +immediately.  This behavior is ideal when you wish to make sure that
 +quitting does not happen within a ``critical section'' of the program.
 +
 +@cindex @code{read-quoted-char} quitting
 +  In some functions (such as @code{read-quoted-char}), @kbd{C-g} is
 +handled in a special way that does not involve quitting.  This is done
 +by reading the input with @code{inhibit-quit} bound to @code{t}, and
 +setting @code{quit-flag} to @code{nil} before @code{inhibit-quit}
 +becomes @code{nil} again.  This excerpt from the definition of
 +@code{read-quoted-char} shows how this is done; it also shows that
 +normal quitting is permitted after the first character of input.
 +
 +@example
 +(defun read-quoted-char (&optional prompt)
 +  "@dots{}@var{documentation}@dots{}"
 +  (let ((message-log-max nil) done (first t) (code 0) char)
 +    (while (not done)
 +      (let ((inhibit-quit first)
 +            @dots{})
 +      (and prompt (message "%s-" prompt))
 +      (setq char (read-event))
 +      (if inhibit-quit (setq quit-flag nil)))
 +      @r{@dots{}set the variable @code{code}@dots{}})
 +    code))
 +@end example
 +
 +@defvar quit-flag
 +If this variable is non-@code{nil}, then Emacs quits immediately, unless
 +@code{inhibit-quit} is non-@code{nil}.  Typing @kbd{C-g} ordinarily sets
 +@code{quit-flag} non-@code{nil}, regardless of @code{inhibit-quit}.
 +@end defvar
 +
 +@defvar inhibit-quit
 +This variable determines whether Emacs should quit when @code{quit-flag}
 +is set to a value other than @code{nil}.  If @code{inhibit-quit} is
 +non-@code{nil}, then @code{quit-flag} has no special effect.
 +@end defvar
 +
 +@defmac with-local-quit body@dots{}
 +This macro executes @var{body} forms in sequence, but allows quitting, at
 +least locally, within @var{body} even if @code{inhibit-quit} was
 +non-@code{nil} outside this construct.  It returns the value of the
 +last form in @var{body}, unless exited by quitting, in which case
 +it returns @code{nil}.
 +
 +If @code{inhibit-quit} is @code{nil} on entry to @code{with-local-quit},
 +it only executes the @var{body}, and setting @code{quit-flag} causes
 +a normal quit.  However, if @code{inhibit-quit} is non-@code{nil} so
 +that ordinary quitting is delayed, a non-@code{nil} @code{quit-flag}
 +triggers a special kind of local quit.  This ends the execution of
 +@var{body} and exits the @code{with-local-quit} body with
 +@code{quit-flag} still non-@code{nil}, so that another (ordinary) quit
 +will happen as soon as that is allowed.  If @code{quit-flag} is
 +already non-@code{nil} at the beginning of @var{body}, the local quit
 +happens immediately and the body doesn't execute at all.
 +
 +This macro is mainly useful in functions that can be called from
 +timers, process filters, process sentinels, @code{pre-command-hook},
 +@code{post-command-hook}, and other places where @code{inhibit-quit} is
 +normally bound to @code{t}.
 +@end defmac
 +
 +@deffn Command keyboard-quit
 +This function signals the @code{quit} condition with @code{(signal 'quit
 +nil)}.  This is the same thing that quitting does.  (See @code{signal}
 +in @ref{Errors}.)
 +@end deffn
 +
 +  You can specify a character other than @kbd{C-g} to use for quitting.
 +See the function @code{set-input-mode} in @ref{Terminal Input}.
 +
 +@node Prefix Command Arguments
 +@section Prefix Command Arguments
 +@cindex prefix argument
 +@cindex raw prefix argument
 +@cindex numeric prefix argument
 +
 +  Most Emacs commands can use a @dfn{prefix argument}, a number
 +specified before the command itself.  (Don't confuse prefix arguments
 +with prefix keys.)  The prefix argument is at all times represented by a
 +value, which may be @code{nil}, meaning there is currently no prefix
 +argument.  Each command may use the prefix argument or ignore it.
 +
 +  There are two representations of the prefix argument: @dfn{raw} and
 +@dfn{numeric}.  The editor command loop uses the raw representation
 +internally, and so do the Lisp variables that store the information, but
 +commands can request either representation.
 +
 +  Here are the possible values of a raw prefix argument:
 +
 +@itemize @bullet
 +@item
 +@code{nil}, meaning there is no prefix argument.  Its numeric value is
 +1, but numerous commands make a distinction between @code{nil} and the
 +integer 1.
 +
 +@item
 +An integer, which stands for itself.
 +
 +@item
 +A list of one element, which is an integer.  This form of prefix
 +argument results from one or a succession of @kbd{C-u}'s with no
 +digits.  The numeric value is the integer in the list, but some
 +commands make a distinction between such a list and an integer alone.
 +
 +@item
 +The symbol @code{-}.  This indicates that @kbd{M--} or @kbd{C-u -} was
 +typed, without following digits.  The equivalent numeric value is
 +@minus{}1, but some commands make a distinction between the integer
 +@minus{}1 and the symbol @code{-}.
 +@end itemize
 +
 +We illustrate these possibilities by calling the following function with
 +various prefixes:
 +
 +@example
 +@group
 +(defun display-prefix (arg)
 +  "Display the value of the raw prefix arg."
 +  (interactive "P")
 +  (message "%s" arg))
 +@end group
 +@end example
 +
 +@noindent
 +Here are the results of calling @code{display-prefix} with various
 +raw prefix arguments:
 +
 +@example
 +        M-x display-prefix  @print{} nil
 +
 +C-u     M-x display-prefix  @print{} (4)
 +
 +C-u C-u M-x display-prefix  @print{} (16)
 +
 +C-u 3   M-x display-prefix  @print{} 3
 +
 +M-3     M-x display-prefix  @print{} 3      ; @r{(Same as @code{C-u 3}.)}
 +
 +C-u -   M-x display-prefix  @print{} -
 +
 +M--     M-x display-prefix  @print{} -      ; @r{(Same as @code{C-u -}.)}
 +
 +C-u - 7 M-x display-prefix  @print{} -7
 +
 +M-- 7   M-x display-prefix  @print{} -7     ; @r{(Same as @code{C-u -7}.)}
 +@end example
 +
 +  Emacs uses two variables to store the prefix argument:
 +@code{prefix-arg} and @code{current-prefix-arg}.  Commands such as
 +@code{universal-argument} that set up prefix arguments for other
 +commands store them in @code{prefix-arg}.  In contrast,
 +@code{current-prefix-arg} conveys the prefix argument to the current
 +command, so setting it has no effect on the prefix arguments for future
 +commands.
 +
 +  Normally, commands specify which representation to use for the prefix
 +argument, either numeric or raw, in the @code{interactive} specification.
 +(@xref{Using Interactive}.)  Alternatively, functions may look at the
 +value of the prefix argument directly in the variable
 +@code{current-prefix-arg}, but this is less clean.
 +
 +@defun prefix-numeric-value arg
 +This function returns the numeric meaning of a valid raw prefix argument
 +value, @var{arg}.  The argument may be a symbol, a number, or a list.
 +If it is @code{nil}, the value 1 is returned; if it is @code{-}, the
 +value @minus{}1 is returned; if it is a number, that number is returned;
 +if it is a list, the @sc{car} of that list (which should be a number) is
 +returned.
 +@end defun
 +
 +@defvar current-prefix-arg
 +This variable holds the raw prefix argument for the @emph{current}
 +command.  Commands may examine it directly, but the usual method for
 +accessing it is with @code{(interactive "P")}.
 +@end defvar
 +
 +@defvar prefix-arg
 +The value of this variable is the raw prefix argument for the
 +@emph{next} editing command.  Commands such as @code{universal-argument}
 +that specify prefix arguments for the following command work by setting
 +this variable.
 +@end defvar
 +
 +@defvar last-prefix-arg
 +The raw prefix argument value used by the previous command.
 +@end defvar
 +
 +  The following commands exist to set up prefix arguments for the
 +following command.  Do not call them for any other reason.
 +
 +@deffn Command universal-argument
 +This command reads input and specifies a prefix argument for the
 +following command.  Don't call this command yourself unless you know
 +what you are doing.
 +@end deffn
 +
 +@deffn Command digit-argument arg
 +This command adds to the prefix argument for the following command.  The
 +argument @var{arg} is the raw prefix argument as it was before this
 +command; it is used to compute the updated prefix argument.  Don't call
 +this command yourself unless you know what you are doing.
 +@end deffn
 +
 +@deffn Command negative-argument arg
 +This command adds to the numeric argument for the next command.  The
 +argument @var{arg} is the raw prefix argument as it was before this
 +command; its value is negated to form the new prefix argument.  Don't
 +call this command yourself unless you know what you are doing.
 +@end deffn
 +
 +@node Recursive Editing
 +@section Recursive Editing
 +@cindex recursive command loop
 +@cindex recursive editing level
 +@cindex command loop, recursive
 +
 +  The Emacs command loop is entered automatically when Emacs starts up.
 +This top-level invocation of the command loop never exits; it keeps
 +running as long as Emacs does.  Lisp programs can also invoke the
 +command loop.  Since this makes more than one activation of the command
 +loop, we call it @dfn{recursive editing}.  A recursive editing level has
 +the effect of suspending whatever command invoked it and permitting the
 +user to do arbitrary editing before resuming that command.
 +
 +  The commands available during recursive editing are the same ones
 +available in the top-level editing loop and defined in the keymaps.
 +Only a few special commands exit the recursive editing level; the others
 +return to the recursive editing level when they finish.  (The special
 +commands for exiting are always available, but they do nothing when
 +recursive editing is not in progress.)
 +
 +  All command loops, including recursive ones, set up all-purpose error
 +handlers so that an error in a command run from the command loop will
 +not exit the loop.
 +
 +@cindex minibuffer input
 +  Minibuffer input is a special kind of recursive editing.  It has a few
 +special wrinkles, such as enabling display of the minibuffer and the
 +minibuffer window, but fewer than you might suppose.  Certain keys
 +behave differently in the minibuffer, but that is only because of the
 +minibuffer's local map; if you switch windows, you get the usual Emacs
 +commands.
 +
 +@cindex @code{throw} example
 +@kindex exit
 +@cindex exit recursive editing
 +@cindex aborting
 +  To invoke a recursive editing level, call the function
 +@code{recursive-edit}.  This function contains the command loop; it also
 +contains a call to @code{catch} with tag @code{exit}, which makes it
 +possible to exit the recursive editing level by throwing to @code{exit}
 +(@pxref{Catch and Throw}).  If you throw a value other than @code{t},
 +then @code{recursive-edit} returns normally to the function that called
 +it.  The command @kbd{C-M-c} (@code{exit-recursive-edit}) does this.
 +Throwing a @code{t} value causes @code{recursive-edit} to quit, so that
 +control returns to the command loop one level up.  This is called
 +@dfn{aborting}, and is done by @kbd{C-]} (@code{abort-recursive-edit}).
 +
 +  Most applications should not use recursive editing, except as part of
 +using the minibuffer.  Usually it is more convenient for the user if you
 +change the major mode of the current buffer temporarily to a special
 +major mode, which should have a command to go back to the previous mode.
 +(The @kbd{e} command in Rmail uses this technique.)  Or, if you wish to
 +give the user different text to edit ``recursively,'' create and select
 +a new buffer in a special mode.  In this mode, define a command to
 +complete the processing and go back to the previous buffer.  (The
 +@kbd{m} command in Rmail does this.)
 +
 +  Recursive edits are useful in debugging.  You can insert a call to
 +@code{debug} into a function definition as a sort of breakpoint, so that
 +you can look around when the function gets there.  @code{debug} invokes
 +a recursive edit but also provides the other features of the debugger.
 +
 +  Recursive editing levels are also used when you type @kbd{C-r} in
 +@code{query-replace} or use @kbd{C-x q} (@code{kbd-macro-query}).
 +
 +@defun recursive-edit
 +@cindex suspend evaluation
 +This function invokes the editor command loop.  It is called
 +automatically by the initialization of Emacs, to let the user begin
 +editing.  When called from a Lisp program, it enters a recursive editing
 +level.
 +
 +If the current buffer is not the same as the selected window's buffer,
 +@code{recursive-edit} saves and restores the current buffer.  Otherwise,
 +if you switch buffers, the buffer you switched to is current after
 +@code{recursive-edit} returns.
 +
 +In the following example, the function @code{simple-rec} first
 +advances point one word, then enters a recursive edit, printing out a
 +message in the echo area.  The user can then do any editing desired, and
 +then type @kbd{C-M-c} to exit and continue executing @code{simple-rec}.
 +
 +@example
 +(defun simple-rec ()
 +  (forward-word 1)
 +  (message "Recursive edit in progress")
 +  (recursive-edit)
 +  (forward-word 1))
 +     @result{} simple-rec
 +(simple-rec)
 +     @result{} nil
 +@end example
 +@end defun
 +
 +@deffn Command exit-recursive-edit
 +This function exits from the innermost recursive edit (including
 +minibuffer input).  Its definition is effectively @code{(throw 'exit
 +nil)}.
 +@end deffn
 +
 +@deffn Command abort-recursive-edit
 +This function aborts the command that requested the innermost recursive
 +edit (including minibuffer input), by signaling @code{quit}
 +after exiting the recursive edit.  Its definition is effectively
 +@code{(throw 'exit t)}.  @xref{Quitting}.
 +@end deffn
 +
 +@deffn Command top-level
 +This function exits all recursive editing levels; it does not return a
 +value, as it jumps completely out of any computation directly back to
 +the main command loop.
 +@end deffn
 +
 +@defun recursion-depth
 +This function returns the current depth of recursive edits.  When no
 +recursive edit is active, it returns 0.
 +@end defun
 +
 +@node Disabling Commands
 +@section Disabling Commands
 +@cindex disabled command
 +
 +  @dfn{Disabling a command} marks the command as requiring user
 +confirmation before it can be executed.  Disabling is used for commands
 +which might be confusing to beginning users, to prevent them from using
 +the commands by accident.
 +
 +@kindex disabled
 +  The low-level mechanism for disabling a command is to put a
 +non-@code{nil} @code{disabled} property on the Lisp symbol for the
 +command.  These properties are normally set up by the user's
 +init file (@pxref{Init File}) with Lisp expressions such as this:
 +
 +@example
 +(put 'upcase-region 'disabled t)
 +@end example
 +
 +@noindent
 +For a few commands, these properties are present by default (you can
 +remove them in your init file if you wish).
 +
 +  If the value of the @code{disabled} property is a string, the message
 +saying the command is disabled includes that string.  For example:
 +
 +@example
 +(put 'delete-region 'disabled
 +     "Text deleted this way cannot be yanked back!\n")
 +@end example
 +
 +  @xref{Disabling,,, emacs, The GNU Emacs Manual}, for the details on
 +what happens when a disabled command is invoked interactively.
 +Disabling a command has no effect on calling it as a function from Lisp
 +programs.
 +
 +@deffn Command enable-command command
 +Allow @var{command} (a symbol) to be executed without special
 +confirmation from now on, and alter the user's init file (@pxref{Init
 +File}) so that this will apply to future sessions.
 +@end deffn
 +
 +@deffn Command disable-command command
 +Require special confirmation to execute @var{command} from now on, and
 +alter the user's init file so that this will apply to future sessions.
 +@end deffn
 +
 +@defvar disabled-command-function
 +The value of this variable should be a function.  When the user
 +invokes a disabled command interactively, this function is called
 +instead of the disabled command.  It can use @code{this-command-keys}
 +to determine what the user typed to run the command, and thus find the
 +command itself.
 +
 +The value may also be @code{nil}.  Then all commands work normally,
 +even disabled ones.
 +
 +By default, the value is a function that asks the user whether to
 +proceed.
 +@end defvar
 +
 +@node Command History
 +@section Command History
 +@cindex command history
 +@cindex complex command
 +@cindex history of commands
 +
 +  The command loop keeps a history of the complex commands that have
 +been executed, to make it convenient to repeat these commands.  A
 +@dfn{complex command} is one for which the interactive argument reading
 +uses the minibuffer.  This includes any @kbd{M-x} command, any
 +@kbd{M-:} command, and any command whose @code{interactive}
 +specification reads an argument from the minibuffer.  Explicit use of
 +the minibuffer during the execution of the command itself does not cause
 +the command to be considered complex.
 +
 +@defvar command-history
 +This variable's value is a list of recent complex commands, each
 +represented as a form to evaluate.  It continues to accumulate all
 +complex commands for the duration of the editing session, but when it
 +reaches the maximum size (@pxref{Minibuffer History}), the oldest
 +elements are deleted as new ones are added.
 +
 +@example
 +@group
 +command-history
 +@result{} ((switch-to-buffer "chistory.texi")
 +    (describe-key "^X^[")
 +    (visit-tags-table "~/emacs/src/")
 +    (find-tag "repeat-complex-command"))
 +@end group
 +@end example
 +@end defvar
 +
 +  This history list is actually a special case of minibuffer history
 +(@pxref{Minibuffer History}), with one special twist: the elements are
 +expressions rather than strings.
 +
 +  There are a number of commands devoted to the editing and recall of
 +previous commands.  The commands @code{repeat-complex-command}, and
 +@code{list-command-history} are described in the user manual
 +(@pxref{Repetition,,, emacs, The GNU Emacs Manual}).  Within the
 +minibuffer, the usual minibuffer history commands are available.
 +
 +@node Keyboard Macros
 +@section Keyboard Macros
 +@cindex keyboard macros
 +
 +  A @dfn{keyboard macro} is a canned sequence of input events that can
 +be considered a command and made the definition of a key.  The Lisp
 +representation of a keyboard macro is a string or vector containing the
 +events.  Don't confuse keyboard macros with Lisp macros
 +(@pxref{Macros}).
 +
 +@defun execute-kbd-macro kbdmacro &optional count loopfunc
 +This function executes @var{kbdmacro} as a sequence of events.  If
 +@var{kbdmacro} is a string or vector, then the events in it are executed
 +exactly as if they had been input by the user.  The sequence is
 +@emph{not} expected to be a single key sequence; normally a keyboard
 +macro definition consists of several key sequences concatenated.
 +
 +If @var{kbdmacro} is a symbol, then its function definition is used in
 +place of @var{kbdmacro}.  If that is another symbol, this process repeats.
 +Eventually the result should be a string or vector.  If the result is
 +not a symbol, string, or vector, an error is signaled.
 +
 +The argument @var{count} is a repeat count; @var{kbdmacro} is executed that
 +many times.  If @var{count} is omitted or @code{nil}, @var{kbdmacro} is
 +executed once.  If it is 0, @var{kbdmacro} is executed over and over until it
 +encounters an error or a failing search.
 +
 +If @var{loopfunc} is non-@code{nil}, it is a function that is called,
 +without arguments, prior to each iteration of the macro.  If
 +@var{loopfunc} returns @code{nil}, then this stops execution of the macro.
 +
 +@xref{Reading One Event}, for an example of using @code{execute-kbd-macro}.
 +@end defun
 +
 +@defvar executing-kbd-macro
 +This variable contains the string or vector that defines the keyboard
 +macro that is currently executing.  It is @code{nil} if no macro is
 +currently executing.  A command can test this variable so as to behave
 +differently when run from an executing macro.  Do not set this variable
 +yourself.
 +@end defvar
 +
 +@defvar defining-kbd-macro
 +This variable is non-@code{nil} if and only if a keyboard macro is
 +being defined.  A command can test this variable so as to behave
 +differently while a macro is being defined.  The value is
 +@code{append} while appending to the definition of an existing macro.
 +The commands @code{start-kbd-macro}, @code{kmacro-start-macro} and
 +@code{end-kbd-macro} set this variable---do not set it yourself.
 +
 +The variable is always local to the current terminal and cannot be
 +buffer-local.  @xref{Multiple Displays}.
 +@end defvar
 +
 +@defvar last-kbd-macro
 +This variable is the definition of the most recently defined keyboard
 +macro.  Its value is a string or vector, or @code{nil}.
 +
 +The variable is always local to the current terminal and cannot be
 +buffer-local.  @xref{Multiple Displays}.
 +@end defvar
 +
 +@defvar kbd-macro-termination-hook
 +This normal hook (@pxref{Standard Hooks}) is run when a keyboard
 +macro terminates, regardless of what caused it to terminate (reaching
 +the macro end or an error which ended the macro prematurely).
 +@end defvar
 +
 +@ignore
 +   arch-tag: e34944ad-7d5c-4980-be00-36a5fe54d4b1
 +@end ignore
index 90d94dbe6b323691f060270603810a5492979fdd,0000000000000000000000000000000000000000..4c9df9c5ede6ad9804848d4b82a06d1b80188a66
mode 100644,000000..100644
--- /dev/null
@@@ -1,5456 -1,0 +1,5473 @@@
- specifications.  Display specifications generally apply in parallel to
- the text they cover.
 +@c -*-texinfo-*-
 +@c This is part of the GNU Emacs Lisp Reference Manual.
 +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
 +@c   2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 +@c See the file elisp.texi for copying conditions.
 +@setfilename ../../info/display
 +@node Display, System Interface, Processes, Top
 +@chapter Emacs Display
 +
 +  This chapter describes a number of features related to the display
 +that Emacs presents to the user.
 +
 +@menu
 +* Refresh Screen::      Clearing the screen and redrawing everything on it.
 +* Forcing Redisplay::   Forcing redisplay.
 +* Truncation::          Folding or wrapping long text lines.
 +* The Echo Area::       Displaying messages at the bottom of the screen.
 +* Warnings::            Displaying warning messages for the user.
 +* Invisible Text::      Hiding part of the buffer text.
 +* Selective Display::   Hiding part of the buffer text (the old way).
 +* Temporary Displays::  Displays that go away automatically.
 +* Overlays::            Use overlays to highlight parts of the buffer.
 +* Width::               How wide a character or string is on the screen.
 +* Line Height::         Controlling the height of lines.
 +* Faces::               A face defines a graphics style for text characters:
 +                          font, colors, etc.
 +* Fringes::             Controlling window fringes.
 +* Scroll Bars::         Controlling vertical scroll bars.
 +* Display Property::    Enabling special display features.
 +* Images::              Displaying images in Emacs buffers.
 +* Buttons::             Adding clickable buttons to Emacs buffers.
 +* Abstract Display::    Emacs' Widget for Object Collections.
 +* Blinking::            How Emacs shows the matching open parenthesis.
 +* Usual Display::       The usual conventions for displaying nonprinting chars.
 +* Display Tables::      How to specify other conventions.
 +* Beeping::             Audible signal to the user.
 +* Window Systems::      Which window system is being used.
 +@end menu
 +
 +@node Refresh Screen
 +@section Refreshing the Screen
 +
 +  The function @code{redraw-frame} clears and redisplays the entire
 +contents of a given frame (@pxref{Frames}).  This is useful if the
 +screen is corrupted.
 +
 +@c Emacs 19 feature
 +@defun redraw-frame frame
 +This function clears and redisplays frame @var{frame}.
 +@end defun
 +
 +  Even more powerful is @code{redraw-display}:
 +
 +@deffn Command redraw-display
 +This function clears and redisplays all visible frames.
 +@end deffn
 +
 +  This function calls for redisplay of certain windows, the next time
 +redisplay is done, but does not clear them first.
 +
 +@defun force-window-update &optional object
 +This function forces some or all windows to be updated on next redisplay.
 +If @var{object} is a window, it forces redisplay of that window.  If
 +@var{object} is a buffer or buffer name, it forces redisplay of all
 +windows displaying that buffer.  If @var{object} is @code{nil} (or
 +omitted), it forces redisplay of all windows.
 +@end defun
 +
 +  Processing user input takes absolute priority over redisplay.  If you
 +call these functions when input is available, they do nothing
 +immediately, but a full redisplay does happen eventually---after all the
 +input has been processed.
 +
 +  Normally, suspending and resuming Emacs also refreshes the screen.
 +Some terminal emulators record separate contents for display-oriented
 +programs such as Emacs and for ordinary sequential display.  If you are
 +using such a terminal, you might want to inhibit the redisplay on
 +resumption.
 +
 +@defvar no-redraw-on-reenter
 +@cindex suspend (cf. @code{no-redraw-on-reenter})
 +@cindex resume (cf. @code{no-redraw-on-reenter})
 +This variable controls whether Emacs redraws the entire screen after it
 +has been suspended and resumed.  Non-@code{nil} means there is no need
 +to redraw, @code{nil} means redrawing is needed.  The default is @code{nil}.
 +@end defvar
 +
 +@node Forcing Redisplay
 +@section Forcing Redisplay
 +@cindex forcing redisplay
 +
 +  Emacs redisplay normally stops if input arrives, and does not happen
 +at all if input is available before it starts.  Most of the time, this
 +is exactly what you want.  However, you can prevent preemption by
 +binding @code{redisplay-dont-pause} to a non-@code{nil} value.
 +
 +@defvar redisplay-preemption-period
 +This variable specifies how many seconds Emacs waits between checks
 +for new input during redisplay.  (The default is 0.1 seconds.)  If
 +input has arrived when Emacs checks, it pre-empts redisplay and
 +processes the available input before trying again to redisplay.
 +
 +If this variable is @code{nil}, Emacs does not check for input during
 +redisplay, and redisplay cannot be preempted by input.
 +
 +This variable is only obeyed on graphical terminals.  For
 +text terminals, see @ref{Terminal Output}.
 +@end defvar
 +
 +@defvar redisplay-dont-pause
 +If this variable is non-@code{nil}, pending input does not
 +prevent or halt redisplay; redisplay occurs, and finishes,
 +regardless of whether input is available.
 +@end defvar
 +
 +@defun redisplay &optional force
 +This function performs an immediate redisplay provided there are no
 +pending input events.  This is equivalent to @code{(sit-for 0)}.
 +
 +If the optional argument @var{force} is non-@code{nil}, it forces an
 +immediate and complete redisplay even if input is available.
 +
 +Returns @code{t} if redisplay was performed, or @code{nil} otherwise.
 +@end defun
 +
 +@node Truncation
 +@section Truncation
 +@cindex line wrapping
 +@cindex line truncation
 +@cindex continuation lines
 +@cindex @samp{$} in display
 +@cindex @samp{\} in display
 +
 +  When a line of text extends beyond the right edge of a window, Emacs
 +can @dfn{continue} the line (make it ``wrap'' to the next screen
 +line), or @dfn{truncate} the line (limit it to one screen line).  The
 +additional screen lines used to display a long text line are called
 +@dfn{continuation} lines.  Continuation is not the same as filling;
 +continuation happens on the screen only, not in the buffer contents,
 +and it breaks a line precisely at the right margin, not at a word
 +boundary.  @xref{Filling}.
 +
 +   On a graphical display, tiny arrow images in the window fringes
 +indicate truncated and continued lines (@pxref{Fringes}).  On a text
 +terminal, a @samp{$} in the rightmost column of the window indicates
 +truncation; a @samp{\} on the rightmost column indicates a line that
 +``wraps.''  (The display table can specify alternate characters to use
 +for this; @pxref{Display Tables}).
 +
 +@defopt truncate-lines
 +This buffer-local variable controls how Emacs displays lines that extend
 +beyond the right edge of the window.  The default is @code{nil}, which
 +specifies continuation.  If the value is non-@code{nil}, then these
 +lines are truncated.
 +
 +If the variable @code{truncate-partial-width-windows} is non-@code{nil},
 +then truncation is always used for side-by-side windows (within one
 +frame) regardless of the value of @code{truncate-lines}.
 +@end defopt
 +
 +@defopt default-truncate-lines
 +This variable is the default value for @code{truncate-lines}, for
 +buffers that do not have buffer-local values for it.
 +@end defopt
 +
 +@defopt truncate-partial-width-windows
 +This variable controls display of lines that extend beyond the right
 +edge of the window, in side-by-side windows (@pxref{Splitting Windows}).
 +If it is non-@code{nil}, these lines are truncated; otherwise,
 +@code{truncate-lines} says what to do with them.
 +@end defopt
 +
 +  When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in
 +a window, that forces truncation.
 +
 +  If your buffer contains @emph{very} long lines, and you use
 +continuation to display them, just thinking about them can make Emacs
 +redisplay slow.  The column computation and indentation functions also
 +become slow.  Then you might find it advisable to set
 +@code{cache-long-line-scans} to @code{t}.
 +
 +@defvar cache-long-line-scans
 +If this variable is non-@code{nil}, various indentation and motion
 +functions, and Emacs redisplay, cache the results of scanning the
 +buffer, and consult the cache to avoid rescanning regions of the buffer
 +unless they are modified.
 +
 +Turning on the cache slows down processing of short lines somewhat.
 +
 +This variable is automatically buffer-local in every buffer.
 +@end defvar
 +
 +@node The Echo Area
 +@section The Echo Area
 +@cindex error display
 +@cindex echo area
 +
 +  The @dfn{echo area} is used for displaying error messages
 +(@pxref{Errors}), for messages made with the @code{message} primitive,
 +and for echoing keystrokes.  It is not the same as the minibuffer,
 +despite the fact that the minibuffer appears (when active) in the same
 +place on the screen as the echo area.  The @cite{GNU Emacs Manual}
 +specifies the rules for resolving conflicts between the echo area and
 +the minibuffer for use of that screen space (@pxref{Minibuffer,, The
 +Minibuffer, emacs, The GNU Emacs Manual}).
 +
 +  You can write output in the echo area by using the Lisp printing
 +functions with @code{t} as the stream (@pxref{Output Functions}), or
 +explicitly.
 +
 +@menu
 +* Displaying Messages:: Explicitly displaying text in the echo area.
 +* Progress::            Informing user about progress of a long operation.
 +* Logging Messages::    Echo area messages are logged for the user.
 +* Echo Area Customization:: Controlling the echo area.
 +@end menu
 +
 +@node Displaying Messages
 +@subsection Displaying Messages in the Echo Area
 +@cindex display message in echo area
 +
 +  This section describes the functions for explicitly producing echo
 +area messages.  Many other Emacs features display messages there, too.
 +
 +@defun message format-string &rest arguments
 +This function displays a message in the echo area.  The argument
 +@var{format-string} is similar to a C language @code{printf} format
 +string.  See @code{format} in @ref{Formatting Strings}, for the details
 +on the conversion specifications.  @code{message} returns the
 +constructed string.
 +
 +In batch mode, @code{message} prints the message text on the standard
 +error stream, followed by a newline.
 +
 +If @var{format-string}, or strings among the @var{arguments}, have
 +@code{face} text properties, these affect the way the message is displayed.
 +
 +@c Emacs 19 feature
 +If @var{format-string} is @code{nil} or the empty string,
 +@code{message} clears the echo area; if the echo area has been
 +expanded automatically, this brings it back to its normal size.
 +If the minibuffer is active, this brings the minibuffer contents back
 +onto the screen immediately.
 +
 +@example
 +@group
 +(message "Minibuffer depth is %d."
 +         (minibuffer-depth))
 + @print{} Minibuffer depth is 0.
 +@result{} "Minibuffer depth is 0."
 +@end group
 +
 +@group
 +---------- Echo Area ----------
 +Minibuffer depth is 0.
 +---------- Echo Area ----------
 +@end group
 +@end example
 +
 +To automatically display a message in the echo area or in a pop-buffer,
 +depending on its size, use @code{display-message-or-buffer} (see below).
 +@end defun
 +
 +@defmac with-temp-message message &rest body
 +This construct displays a message in the echo area temporarily, during
 +the execution of @var{body}.  It displays @var{message}, executes
 +@var{body}, then returns the value of the last body form while restoring
 +the previous echo area contents.
 +@end defmac
 +
 +@defun message-or-box format-string &rest arguments
 +This function displays a message like @code{message}, but may display it
 +in a dialog box instead of the echo area.  If this function is called in
 +a command that was invoked using the mouse---more precisely, if
 +@code{last-nonmenu-event} (@pxref{Command Loop Info}) is either
 +@code{nil} or a list---then it uses a dialog box or pop-up menu to
 +display the message.  Otherwise, it uses the echo area.  (This is the
 +same criterion that @code{y-or-n-p} uses to make a similar decision; see
 +@ref{Yes-or-No Queries}.)
 +
 +You can force use of the mouse or of the echo area by binding
 +@code{last-nonmenu-event} to a suitable value around the call.
 +@end defun
 +
 +@defun message-box format-string &rest arguments
 +@anchor{message-box}
 +This function displays a message like @code{message}, but uses a dialog
 +box (or a pop-up menu) whenever that is possible.  If it is impossible
 +to use a dialog box or pop-up menu, because the terminal does not
 +support them, then @code{message-box} uses the echo area, like
 +@code{message}.
 +@end defun
 +
 +@defun display-message-or-buffer message &optional buffer-name not-this-window frame
 +This function displays the message @var{message}, which may be either a
 +string or a buffer.  If it is shorter than the maximum height of the
 +echo area, as defined by @code{max-mini-window-height}, it is displayed
 +in the echo area, using @code{message}.  Otherwise,
 +@code{display-buffer} is used to show it in a pop-up buffer.
 +
 +Returns either the string shown in the echo area, or when a pop-up
 +buffer is used, the window used to display it.
 +
 +If @var{message} is a string, then the optional argument
 +@var{buffer-name} is the name of the buffer used to display it when a
 +pop-up buffer is used, defaulting to @samp{*Message*}.  In the case
 +where @var{message} is a string and displayed in the echo area, it is
 +not specified whether the contents are inserted into the buffer anyway.
 +
 +The optional arguments @var{not-this-window} and @var{frame} are as for
 +@code{display-buffer}, and only used if a buffer is displayed.
 +@end defun
 +
 +@defun current-message
 +This function returns the message currently being displayed in the
 +echo area, or @code{nil} if there is none.
 +@end defun
 +
 +@node Progress
 +@subsection Reporting Operation Progress
 +@cindex progress reporting
 +
 +  When an operation can take a while to finish, you should inform the
 +user about the progress it makes.  This way the user can estimate
 +remaining time and clearly see that Emacs is busy working, not hung.
 +
 +  Functions listed in this section provide simple and efficient way of
 +reporting operation progress.  Here is a working example that does
 +nothing useful:
 +
 +@smallexample
 +(let ((progress-reporter
 +       (make-progress-reporter "Collecting mana for Emacs..."
 +                               0  500)))
 +  (dotimes (k 500)
 +    (sit-for 0.01)
 +    (progress-reporter-update progress-reporter k))
 +  (progress-reporter-done progress-reporter))
 +@end smallexample
 +
 +@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
 +This function creates and returns a @dfn{progress reporter}---an
 +object you will use as an argument for all other functions listed
 +here.  The idea is to precompute as much data as possible to make
 +progress reporting very fast.
 +
 +When this progress reporter is subsequently used, it will display
 +@var{message} in the echo area, followed by progress percentage.
 +@var{message} is treated as a simple string.  If you need it to depend
 +on a filename, for instance, use @code{format} before calling this
 +function.
 +
 +@var{min-value} and @var{max-value} arguments stand for starting and
 +final states of your operation.  For instance, if you scan a buffer,
 +they should be the results of @code{point-min} and @code{point-max}
 +correspondingly.  It is required that @var{max-value} is greater than
 +@var{min-value}.  If you create progress reporter when some part of
 +the operation has already been completed, then specify
 +@var{current-value} argument.  But normally you should omit it or set
 +it to @code{nil}---it will default to @var{min-value} then.
 +
 +Remaining arguments control the rate of echo area updates.  Progress
 +reporter will wait for at least @var{min-change} more percents of the
 +operation to be completed before printing next message.
 +@var{min-time} specifies the minimum time in seconds to pass between
 +successive prints.  It can be fractional.  Depending on Emacs and
 +system capabilities, progress reporter may or may not respect this
 +last argument or do it with varying precision.  Default value for
 +@var{min-change} is 1 (one percent), for @var{min-time}---0.2
 +(seconds.)
 +
 +This function calls @code{progress-reporter-update}, so the first
 +message is printed immediately.
 +@end defun
 +
 +@defun progress-reporter-update reporter value
 +This function does the main work of reporting progress of your
 +operation.  It displays the message of @var{reporter}, followed by
 +progress percentage determined by @var{value}.  If percentage is zero,
 +or close enough according to the @var{min-change} and @var{min-time}
 +arguments, then it is omitted from the output.
 +
 +@var{reporter} must be the result of a call to
 +@code{make-progress-reporter}.  @var{value} specifies the current
 +state of your operation and must be between @var{min-value} and
 +@var{max-value} (inclusive) as passed to
 +@code{make-progress-reporter}.  For instance, if you scan a buffer,
 +then @var{value} should be the result of a call to @code{point}.
 +
 +This function respects @var{min-change} and @var{min-time} as passed
 +to @code{make-progress-reporter} and so does not output new messages
 +on every invocation.  It is thus very fast and normally you should not
 +try to reduce the number of calls to it: resulting overhead will most
 +likely negate your effort.
 +@end defun
 +
 +@defun progress-reporter-force-update reporter value &optional new-message
 +This function is similar to @code{progress-reporter-update} except
 +that it prints a message in the echo area unconditionally.
 +
 +The first two arguments have the same meaning as for
 +@code{progress-reporter-update}.  Optional @var{new-message} allows
 +you to change the message of the @var{reporter}.  Since this functions
 +always updates the echo area, such a change will be immediately
 +presented to the user.
 +@end defun
 +
 +@defun progress-reporter-done reporter
 +This function should be called when the operation is finished.  It
 +prints the message of @var{reporter} followed by word ``done'' in the
 +echo area.
 +
 +You should always call this function and not hope for
 +@code{progress-reporter-update} to print ``100%.''  Firstly, it may
 +never print it, there are many good reasons for this not to happen.
 +Secondly, ``done'' is more explicit.
 +@end defun
 +
 +@defmac dotimes-with-progress-reporter (var count [result]) message body@dots{}
 +This is a convenience macro that works the same way as @code{dotimes}
 +does, but also reports loop progress using the functions described
 +above.  It allows you to save some typing.
 +
 +You can rewrite the example in the beginning of this node using
 +this macro this way:
 +
 +@example
 +(dotimes-with-progress-reporter
 +    (k 500)
 +    "Collecting some mana for Emacs..."
 +  (sit-for 0.01))
 +@end example
 +@end defmac
 +
 +@node Logging Messages
 +@subsection Logging Messages in @samp{*Messages*}
 +@cindex logging echo-area messages
 +
 +  Almost all the messages displayed in the echo area are also recorded
 +in the @samp{*Messages*} buffer so that the user can refer back to
 +them.  This includes all the messages that are output with
 +@code{message}.
 +
 +@defopt message-log-max
 +This variable specifies how many lines to keep in the @samp{*Messages*}
 +buffer.  The value @code{t} means there is no limit on how many lines to
 +keep.  The value @code{nil} disables message logging entirely.  Here's
 +how to display a message and prevent it from being logged:
 +
 +@example
 +(let (message-log-max)
 +  (message @dots{}))
 +@end example
 +@end defopt
 +
 +  To make @samp{*Messages*} more convenient for the user, the logging
 +facility combines successive identical messages.  It also combines
 +successive related messages for the sake of two cases: question
 +followed by answer, and a series of progress messages.
 +
 +  A ``question followed by an answer'' means two messages like the
 +ones produced by @code{y-or-n-p}: the first is @samp{@var{question}},
 +and the second is @samp{@var{question}...@var{answer}}.  The first
 +message conveys no additional information beyond what's in the second,
 +so logging the second message discards the first from the log.
 +
 +  A ``series of progress messages'' means successive messages like
 +those produced by @code{make-progress-reporter}.  They have the form
 +@samp{@var{base}...@var{how-far}}, where @var{base} is the same each
 +time, while @var{how-far} varies.  Logging each message in the series
 +discards the previous one, provided they are consecutive.
 +
 +  The functions @code{make-progress-reporter} and @code{y-or-n-p}
 +don't have to do anything special to activate the message log
 +combination feature.  It operates whenever two consecutive messages
 +are logged that share a common prefix ending in @samp{...}.
 +
 +@node Echo Area Customization
 +@subsection Echo Area Customization
 +
 +  These variables control details of how the echo area works.
 +
 +@defvar cursor-in-echo-area
 +This variable controls where the cursor appears when a message is
 +displayed in the echo area.  If it is non-@code{nil}, then the cursor
 +appears at the end of the message.  Otherwise, the cursor appears at
 +point---not in the echo area at all.
 +
 +The value is normally @code{nil}; Lisp programs bind it to @code{t}
 +for brief periods of time.
 +@end defvar
 +
 +@defvar echo-area-clear-hook
 +This normal hook is run whenever the echo area is cleared---either by
 +@code{(message nil)} or for any other reason.
 +@end defvar
 +
 +@defvar echo-keystrokes
 +This variable determines how much time should elapse before command
 +characters echo.  Its value must be an integer or floating point number,
 +which specifies the
 +number of seconds to wait before echoing.  If the user types a prefix
 +key (such as @kbd{C-x}) and then delays this many seconds before
 +continuing, the prefix key is echoed in the echo area.  (Once echoing
 +begins in a key sequence, all subsequent characters in the same key
 +sequence are echoed immediately.)
 +
 +If the value is zero, then command input is not echoed.
 +@end defvar
 +
 +@defvar message-truncate-lines
 +Normally, displaying a long message resizes the echo area to display
 +the entire message.  But if the variable @code{message-truncate-lines}
 +is non-@code{nil}, the echo area does not resize, and the message is
 +truncated to fit it, as in Emacs 20 and before.
 +@end defvar
 +
 +  The variable @code{max-mini-window-height}, which specifies the
 +maximum height for resizing minibuffer windows, also applies to the
 +echo area (which is really a special use of the minibuffer window.
 +@xref{Minibuffer Misc}.
 +
 +@node Warnings
 +@section Reporting Warnings
 +@cindex warnings
 +
 +  @dfn{Warnings} are a facility for a program to inform the user of a
 +possible problem, but continue running.
 +
 +@menu
 +* Warning Basics::      Warnings concepts and functions to report them.
 +* Warning Variables::   Variables programs bind to customize their warnings.
 +* Warning Options::     Variables users set to control display of warnings.
 +@end menu
 +
 +@node Warning Basics
 +@subsection Warning Basics
 +@cindex severity level
 +
 +  Every warning has a textual message, which explains the problem for
 +the user, and a @dfn{severity level} which is a symbol.  Here are the
 +possible severity levels, in order of decreasing severity, and their
 +meanings:
 +
 +@table @code
 +@item :emergency
 +A problem that will seriously impair Emacs operation soon
 +if you do not attend to it promptly.
 +@item :error
 +A report of data or circumstances that are inherently wrong.
 +@item :warning
 +A report of data or circumstances that are not inherently wrong, but
 +raise suspicion of a possible problem.
 +@item :debug
 +A report of information that may be useful if you are debugging.
 +@end table
 +
 +  When your program encounters invalid input data, it can either
 +signal a Lisp error by calling @code{error} or @code{signal} or report
 +a warning with severity @code{:error}.  Signaling a Lisp error is the
 +easiest thing to do, but it means the program cannot continue
 +processing.  If you want to take the trouble to implement a way to
 +continue processing despite the bad data, then reporting a warning of
 +severity @code{:error} is the right way to inform the user of the
 +problem.  For instance, the Emacs Lisp byte compiler can report an
 +error that way and continue compiling other functions.  (If the
 +program signals a Lisp error and then handles it with
 +@code{condition-case}, the user won't see the error message; it could
 +show the message to the user by reporting it as a warning.)
 +
 +@cindex warning type
 +  Each warning has a @dfn{warning type} to classify it.  The type is a
 +list of symbols.  The first symbol should be the custom group that you
 +use for the program's user options.  For example, byte compiler
 +warnings use the warning type @code{(bytecomp)}.  You can also
 +subcategorize the warnings, if you wish, by using more symbols in the
 +list.
 +
 +@defun display-warning type message &optional level buffer-name
 +This function reports a warning, using @var{message} as the message
 +and @var{type} as the warning type.  @var{level} should be the
 +severity level, with @code{:warning} being the default.
 +
 +@var{buffer-name}, if non-@code{nil}, specifies the name of the buffer
 +for logging the warning.  By default, it is @samp{*Warnings*}.
 +@end defun
 +
 +@defun lwarn type level message &rest args
 +This function reports a warning using the value of @code{(format
 +@var{message} @var{args}...)} as the message.  In other respects it is
 +equivalent to @code{display-warning}.
 +@end defun
 +
 +@defun warn message &rest args
 +This function reports a warning using the value of @code{(format
 +@var{message} @var{args}...)} as the message, @code{(emacs)} as the
 +type, and @code{:warning} as the severity level.  It exists for
 +compatibility only; we recommend not using it, because you should
 +specify a specific warning type.
 +@end defun
 +
 +@node Warning Variables
 +@subsection Warning Variables
 +
 +  Programs can customize how their warnings appear by binding
 +the variables described in this section.
 +
 +@defvar warning-levels
 +This list defines the meaning and severity order of the warning
 +severity levels.  Each element defines one severity level,
 +and they are arranged in order of decreasing severity.
 +
 +Each element has the form @code{(@var{level} @var{string}
 +@var{function})}, where @var{level} is the severity level it defines.
 +@var{string} specifies the textual description of this level.
 +@var{string} should use @samp{%s} to specify where to put the warning
 +type information, or it can omit the @samp{%s} so as not to include
 +that information.
 +
 +The optional @var{function}, if non-@code{nil}, is a function to call
 +with no arguments, to get the user's attention.
 +
 +Normally you should not change the value of this variable.
 +@end defvar
 +
 +@defvar warning-prefix-function
 +If non-@code{nil}, the value is a function to generate prefix text for
 +warnings.  Programs can bind the variable to a suitable function.
 +@code{display-warning} calls this function with the warnings buffer
 +current, and the function can insert text in it.  That text becomes
 +the beginning of the warning message.
 +
 +The function is called with two arguments, the severity level and its
 +entry in @code{warning-levels}.  It should return a list to use as the
 +entry (this value need not be an actual member of
 +@code{warning-levels}).  By constructing this value, the function can
 +change the severity of the warning, or specify different handling for
 +a given severity level.
 +
 +If the variable's value is @code{nil} then there is no function
 +to call.
 +@end defvar
 +
 +@defvar warning-series
 +Programs can bind this variable to @code{t} to say that the next
 +warning should begin a series.  When several warnings form a series,
 +that means to leave point on the first warning of the series, rather
 +than keep moving it for each warning so that it appears on the last one.
 +The series ends when the local binding is unbound and
 +@code{warning-series} becomes @code{nil} again.
 +
 +The value can also be a symbol with a function definition.  That is
 +equivalent to @code{t}, except that the next warning will also call
 +the function with no arguments with the warnings buffer current.  The
 +function can insert text which will serve as a header for the series
 +of warnings.
 +
 +Once a series has begun, the value is a marker which points to the
 +buffer position in the warnings buffer of the start of the series.
 +
 +The variable's normal value is @code{nil}, which means to handle
 +each warning separately.
 +@end defvar
 +
 +@defvar warning-fill-prefix
 +When this variable is non-@code{nil}, it specifies a fill prefix to
 +use for filling each warning's text.
 +@end defvar
 +
 +@defvar warning-type-format
 +This variable specifies the format for displaying the warning type
 +in the warning message.  The result of formatting the type this way
 +gets included in the message under the control of the string in the
 +entry in @code{warning-levels}.  The default value is @code{" (%s)"}.
 +If you bind it to @code{""} then the warning type won't appear at
 +all.
 +@end defvar
 +
 +@node Warning Options
 +@subsection Warning Options
 +
 +  These variables are used by users to control what happens
 +when a Lisp program reports a warning.
 +
 +@defopt warning-minimum-level
 +This user option specifies the minimum severity level that should be
 +shown immediately to the user.  The default is @code{:warning}, which
 +means to immediately display all warnings except @code{:debug}
 +warnings.
 +@end defopt
 +
 +@defopt warning-minimum-log-level
 +This user option specifies the minimum severity level that should be
 +logged in the warnings buffer.  The default is @code{:warning}, which
 +means to log all warnings except @code{:debug} warnings.
 +@end defopt
 +
 +@defopt warning-suppress-types
 +This list specifies which warning types should not be displayed
 +immediately for the user.  Each element of the list should be a list
 +of symbols.  If its elements match the first elements in a warning
 +type, then that warning is not displayed immediately.
 +@end defopt
 +
 +@defopt warning-suppress-log-types
 +This list specifies which warning types should not be logged in the
 +warnings buffer.  Each element of the list should be a list of
 +symbols.  If it matches the first few elements in a warning type, then
 +that warning is not logged.
 +@end defopt
 +
 +@node Invisible Text
 +@section Invisible Text
 +
 +@cindex invisible text
 +You can make characters @dfn{invisible}, so that they do not appear on
 +the screen, with the @code{invisible} property.  This can be either a
 +text property (@pxref{Text Properties}) or a property of an overlay
 +(@pxref{Overlays}).  Cursor motion also partly ignores these
 +characters; if the command loop finds point within them, it moves
 +point to the other side of them.
 +
 +In the simplest case, any non-@code{nil} @code{invisible} property makes
 +a character invisible.  This is the default case---if you don't alter
 +the default value of @code{buffer-invisibility-spec}, this is how the
 +@code{invisible} property works.  You should normally use @code{t}
 +as the value of the @code{invisible} property if you don't plan
 +to set @code{buffer-invisibility-spec} yourself.
 +
 +More generally, you can use the variable @code{buffer-invisibility-spec}
 +to control which values of the @code{invisible} property make text
 +invisible.  This permits you to classify the text into different subsets
 +in advance, by giving them different @code{invisible} values, and
 +subsequently make various subsets visible or invisible by changing the
 +value of @code{buffer-invisibility-spec}.
 +
 +Controlling visibility with @code{buffer-invisibility-spec} is
 +especially useful in a program to display the list of entries in a
 +database.  It permits the implementation of convenient filtering
 +commands to view just a part of the entries in the database.  Setting
 +this variable is very fast, much faster than scanning all the text in
 +the buffer looking for properties to change.
 +
 +@defvar buffer-invisibility-spec
 +This variable specifies which kinds of @code{invisible} properties
 +actually make a character invisible.  Setting this variable makes it
 +buffer-local.
 +
 +@table @asis
 +@item @code{t}
 +A character is invisible if its @code{invisible} property is
 +non-@code{nil}.  This is the default.
 +
 +@item a list
 +Each element of the list specifies a criterion for invisibility; if a
 +character's @code{invisible} property fits any one of these criteria,
 +the character is invisible.  The list can have two kinds of elements:
 +
 +@table @code
 +@item @var{atom}
 +A character is invisible if its @code{invisible} property value
 +is @var{atom} or if it is a list with @var{atom} as a member.
 +
 +@item (@var{atom} . t)
 +A character is invisible if its @code{invisible} property value is
 +@var{atom} or if it is a list with @var{atom} as a member.  Moreover,
 +a sequence of such characters displays as an ellipsis.
 +@end table
 +@end table
 +@end defvar
 +
 +  Two functions are specifically provided for adding elements to
 +@code{buffer-invisibility-spec} and removing elements from it.
 +
 +@defun add-to-invisibility-spec element
 +This function adds the element @var{element} to
 +@code{buffer-invisibility-spec}.  If @code{buffer-invisibility-spec}
 +was @code{t}, it changes to a list, @code{(t)}, so that text whose
 +@code{invisible} property is @code{t} remains invisible.
 +@end defun
 +
 +@defun remove-from-invisibility-spec element
 +This removes the element @var{element} from
 +@code{buffer-invisibility-spec}.  This does nothing if @var{element}
 +is not in the list.
 +@end defun
 +
 +  A convention for use of @code{buffer-invisibility-spec} is that a
 +major mode should use the mode's own name as an element of
 +@code{buffer-invisibility-spec} and as the value of the
 +@code{invisible} property:
 +
 +@example
 +;; @r{If you want to display an ellipsis:}
 +(add-to-invisibility-spec '(my-symbol . t))
 +;; @r{If you don't want ellipsis:}
 +(add-to-invisibility-spec 'my-symbol)
 +
 +(overlay-put (make-overlay beginning end)
 +             'invisible 'my-symbol)
 +
 +;; @r{When done with the overlays:}
 +(remove-from-invisibility-spec '(my-symbol . t))
 +;; @r{Or respectively:}
 +(remove-from-invisibility-spec 'my-symbol)
 +@end example
 +
 +@vindex line-move-ignore-invisible
 +  Ordinarily, functions that operate on text or move point do not care
 +whether the text is invisible.  The user-level line motion commands
 +explicitly ignore invisible newlines if
 +@code{line-move-ignore-invisible} is non-@code{nil} (the default), but
 +only because they are explicitly programmed to do so.
 +
 +  However, if a command ends with point inside or immediately before
 +invisible text, the main editing loop moves point further forward or
 +further backward (in the same direction that the command already moved
 +it) until that condition is no longer true.  Thus, if the command
 +moved point back into an invisible range, Emacs moves point back to
 +the beginning of that range, and then back one more character.  If the
 +command moved point forward into an invisible range, Emacs moves point
 +forward up to the first visible character that follows the invisible
 +text.
 +
 +  Incremental search can make invisible overlays visible temporarily
 +and/or permanently when a match includes invisible text.  To enable
 +this, the overlay should have a non-@code{nil}
 +@code{isearch-open-invisible} property.  The property value should be a
 +function to be called with the overlay as an argument.  This function
 +should make the overlay visible permanently; it is used when the match
 +overlaps the overlay on exit from the search.
 +
 +  During the search, such overlays are made temporarily visible by
 +temporarily modifying their invisible and intangible properties.  If you
 +want this to be done differently for a certain overlay, give it an
 +@code{isearch-open-invisible-temporary} property which is a function.
 +The function is called with two arguments: the first is the overlay, and
 +the second is @code{nil} to make the overlay visible, or @code{t} to
 +make it invisible again.
 +
 +@node Selective Display
 +@section Selective Display
 +@c @cindex selective display   Duplicates selective-display
 +
 +  @dfn{Selective display} refers to a pair of related features for
 +hiding certain lines on the screen.
 +
 +  The first variant, explicit selective display, is designed for use
 +in a Lisp program: it controls which lines are hidden by altering the
 +text.  This kind of hiding in some ways resembles the effect of the
 +@code{invisible} property (@pxref{Invisible Text}), but the two
 +features are different and do not work the same way.
 +
 +  In the second variant, the choice of lines to hide is made
 +automatically based on indentation.  This variant is designed to be a
 +user-level feature.
 +
 +  The way you control explicit selective display is by replacing a
 +newline (control-j) with a carriage return (control-m).  The text that
 +was formerly a line following that newline is now hidden.  Strictly
 +speaking, it is temporarily no longer a line at all, since only
 +newlines can separate lines; it is now part of the previous line.
 +
 +  Selective display does not directly affect editing commands.  For
 +example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly
 +into hidden text.  However, the replacement of newline characters with
 +carriage return characters affects some editing commands.  For
 +example, @code{next-line} skips hidden lines, since it searches only
 +for newlines.  Modes that use selective display can also define
 +commands that take account of the newlines, or that control which
 +parts of the text are hidden.
 +
 +  When you write a selectively displayed buffer into a file, all the
 +control-m's are output as newlines.  This means that when you next read
 +in the file, it looks OK, with nothing hidden.  The selective display
 +effect is seen only within Emacs.
 +
 +@defvar selective-display
 +This buffer-local variable enables selective display.  This means that
 +lines, or portions of lines, may be made hidden.
 +
 +@itemize @bullet
 +@item
 +If the value of @code{selective-display} is @code{t}, then the character
 +control-m marks the start of hidden text; the control-m, and the rest
 +of the line following it, are not displayed.  This is explicit selective
 +display.
 +
 +@item
 +If the value of @code{selective-display} is a positive integer, then
 +lines that start with more than that many columns of indentation are not
 +displayed.
 +@end itemize
 +
 +When some portion of a buffer is hidden, the vertical movement
 +commands operate as if that portion did not exist, allowing a single
 +@code{next-line} command to skip any number of hidden lines.
 +However, character movement commands (such as @code{forward-char}) do
 +not skip the hidden portion, and it is possible (if tricky) to insert
 +or delete text in an hidden portion.
 +
 +In the examples below, we show the @emph{display appearance} of the
 +buffer @code{foo}, which changes with the value of
 +@code{selective-display}.  The @emph{contents} of the buffer do not
 +change.
 +
 +@example
 +@group
 +(setq selective-display nil)
 +     @result{} nil
 +
 +---------- Buffer: foo ----------
 +1 on this column
 + 2on this column
 +  3n this column
 +  3n this column
 + 2on this column
 +1 on this column
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(setq selective-display 2)
 +     @result{} 2
 +
 +---------- Buffer: foo ----------
 +1 on this column
 + 2on this column
 + 2on this column
 +1 on this column
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +@end defvar
 +
 +@defvar selective-display-ellipses
 +If this buffer-local variable is non-@code{nil}, then Emacs displays
 +@samp{@dots{}} at the end of a line that is followed by hidden text.
 +This example is a continuation of the previous one.
 +
 +@example
 +@group
 +(setq selective-display-ellipses t)
 +     @result{} t
 +
 +---------- Buffer: foo ----------
 +1 on this column
 + 2on this column ...
 + 2on this column
 +1 on this column
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +
 +You can use a display table to substitute other text for the ellipsis
 +(@samp{@dots{}}).  @xref{Display Tables}.
 +@end defvar
 +
 +@node Temporary Displays
 +@section Temporary Displays
 +
 +  Temporary displays are used by Lisp programs to put output into a
 +buffer and then present it to the user for perusal rather than for
 +editing.  Many help commands use this feature.
 +
 +@defspec with-output-to-temp-buffer buffer-name forms@dots{}
 +This function executes @var{forms} while arranging to insert any output
 +they print into the buffer named @var{buffer-name}, which is first
 +created if necessary, and put into Help mode.  Finally, the buffer is
 +displayed in some window, but not selected.
 +
 +If the @var{forms} do not change the major mode in the output buffer,
 +so that it is still Help mode at the end of their execution, then
 +@code{with-output-to-temp-buffer} makes this buffer read-only at the
 +end, and also scans it for function and variable names to make them
 +into clickable cross-references.  @xref{Docstring hyperlinks, , Tips
 +for Documentation Strings}, in particular the item on hyperlinks in
 +documentation strings, for more details.
 +
 +The string @var{buffer-name} specifies the temporary buffer, which
 +need not already exist.  The argument must be a string, not a buffer.
 +The buffer is erased initially (with no questions asked), and it is
 +marked as unmodified after @code{with-output-to-temp-buffer} exits.
 +
 +@code{with-output-to-temp-buffer} binds @code{standard-output} to the
 +temporary buffer, then it evaluates the forms in @var{forms}.  Output
 +using the Lisp output functions within @var{forms} goes by default to
 +that buffer (but screen display and messages in the echo area, although
 +they are ``output'' in the general sense of the word, are not affected).
 +@xref{Output Functions}.
 +
 +Several hooks are available for customizing the behavior
 +of this construct; they are listed below.
 +
 +The value of the last form in @var{forms} is returned.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 + This is the contents of foo.
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(with-output-to-temp-buffer "foo"
 +    (print 20)
 +    (print standard-output))
 +@result{} #<buffer foo>
 +
 +---------- Buffer: foo ----------
 +20
 +
 +#<buffer foo>
 +
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +@end defspec
 +
 +@defvar temp-buffer-show-function
 +If this variable is non-@code{nil}, @code{with-output-to-temp-buffer}
 +calls it as a function to do the job of displaying a help buffer.  The
 +function gets one argument, which is the buffer it should display.
 +
 +It is a good idea for this function to run @code{temp-buffer-show-hook}
 +just as @code{with-output-to-temp-buffer} normally would, inside of
 +@code{save-selected-window} and with the chosen window and buffer
 +selected.
 +@end defvar
 +
 +@defvar temp-buffer-setup-hook
 +This normal hook is run by @code{with-output-to-temp-buffer} before
 +evaluating @var{body}.  When the hook runs, the temporary buffer is
 +current.  This hook is normally set up with a function to put the
 +buffer in Help mode.
 +@end defvar
 +
 +@defvar temp-buffer-show-hook
 +This normal hook is run by @code{with-output-to-temp-buffer} after
 +displaying the temporary buffer.  When the hook runs, the temporary buffer
 +is current, and the window it was displayed in is selected.  This hook
 +is normally set up with a function to make the buffer read only, and
 +find function names and variable names in it, provided the major mode
 +is Help mode.
 +@end defvar
 +
 +@defun momentary-string-display string position &optional char message
 +This function momentarily displays @var{string} in the current buffer at
 +@var{position}.  It has no effect on the undo list or on the buffer's
 +modification status.
 +
 +The momentary display remains until the next input event.  If the next
 +input event is @var{char}, @code{momentary-string-display} ignores it
 +and returns.  Otherwise, that event remains buffered for subsequent use
 +as input.  Thus, typing @var{char} will simply remove the string from
 +the display, while typing (say) @kbd{C-f} will remove the string from
 +the display and later (presumably) move point forward.  The argument
 +@var{char} is a space by default.
 +
 +The return value of @code{momentary-string-display} is not meaningful.
 +
 +If the string @var{string} does not contain control characters, you can
 +do the same job in a more general way by creating (and then subsequently
 +deleting) an overlay with a @code{before-string} property.
 +@xref{Overlay Properties}.
 +
 +If @var{message} is non-@code{nil}, it is displayed in the echo area
 +while @var{string} is displayed in the buffer.  If it is @code{nil}, a
 +default message says to type @var{char} to continue.
 +
 +In this example, point is initially located at the beginning of the
 +second line:
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of foo.
 +@point{}Second line.
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(momentary-string-display
 +  "**** Important Message! ****"
 +  (point) ?\r
 +  "Type RET when done reading")
 +@result{} t
 +@end group
 +
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of foo.
 +**** Important Message! ****Second line.
 +---------- Buffer: foo ----------
 +
 +---------- Echo Area ----------
 +Type RET when done reading
 +---------- Echo Area ----------
 +@end group
 +@end example
 +@end defun
 +
 +@node Overlays
 +@section Overlays
 +@cindex overlays
 +
 +You can use @dfn{overlays} to alter the appearance of a buffer's text on
 +the screen, for the sake of presentation features.  An overlay is an
 +object that belongs to a particular buffer, and has a specified
 +beginning and end.  It also has properties that you can examine and set;
 +these affect the display of the text within the overlay.
 +
 +An overlay uses markers to record its beginning and end; thus,
 +editing the text of the buffer adjusts the beginning and end of each
 +overlay so that it stays with the text.  When you create the overlay,
 +you can specify whether text inserted at the beginning should be
 +inside the overlay or outside, and likewise for the end of the overlay.
 +
 +@menu
 +* Managing Overlays::   Creating and moving overlays.
 +* Overlay Properties::  How to read and set properties.
 +                      What properties do to the screen display.
 +* Finding Overlays::    Searching for overlays.
 +@end menu
 +
 +@node Managing Overlays
 +@subsection Managing Overlays
 +
 +  This section describes the functions to create, delete and move
 +overlays, and to examine their contents.  Overlay changes are not
 +recorded in the buffer's undo list, since the overlays are not
 +part of the buffer's contents.
 +
 +@defun overlayp object
 +This function returns @code{t} if @var{object} is an overlay.
 +@end defun
 +
 +@defun make-overlay start end &optional buffer front-advance rear-advance
 +This function creates and returns an overlay that belongs to
 +@var{buffer} and ranges from @var{start} to @var{end}.  Both @var{start}
 +and @var{end} must specify buffer positions; they may be integers or
 +markers.  If @var{buffer} is omitted, the overlay is created in the
 +current buffer.
 +
 +The arguments @var{front-advance} and @var{rear-advance} specify the
 +marker insertion type for the start of the overlay and for the end of
 +the overlay, respectively.  @xref{Marker Insertion Types}.  If they
 +are both @code{nil}, the default, then the overlay extends to include
 +any text inserted at the beginning, but not text inserted at the end.
 +If @var{front-advance} is non-@code{nil}, text inserted at the
 +beginning of the overlay is excluded from the overlay.  If
 +@var{rear-advance} is non-@code{nil}, text inserted at the end of the
 +overlay is included in the overlay.
 +@end defun
 +
 +@defun overlay-start overlay
 +This function returns the position at which @var{overlay} starts,
 +as an integer.
 +@end defun
 +
 +@defun overlay-end overlay
 +This function returns the position at which @var{overlay} ends,
 +as an integer.
 +@end defun
 +
 +@defun overlay-buffer overlay
 +This function returns the buffer that @var{overlay} belongs to.  It
 +returns @code{nil} if @var{overlay} has been deleted.
 +@end defun
 +
 +@defun delete-overlay overlay
 +This function deletes @var{overlay}.  The overlay continues to exist as
 +a Lisp object, and its property list is unchanged, but it ceases to be
 +attached to the buffer it belonged to, and ceases to have any effect on
 +display.
 +
 +A deleted overlay is not permanently disconnected.  You can give it a
 +position in a buffer again by calling @code{move-overlay}.
 +@end defun
 +
 +@defun move-overlay overlay start end &optional buffer
 +This function moves @var{overlay} to @var{buffer}, and places its bounds
 +at @var{start} and @var{end}.  Both arguments @var{start} and @var{end}
 +must specify buffer positions; they may be integers or markers.
 +
 +If @var{buffer} is omitted, @var{overlay} stays in the same buffer it
 +was already associated with; if @var{overlay} was deleted, it goes into
 +the current buffer.
 +
 +The return value is @var{overlay}.
 +
 +This is the only valid way to change the endpoints of an overlay.  Do
 +not try modifying the markers in the overlay by hand, as that fails to
 +update other vital data structures and can cause some overlays to be
 +``lost.''
 +@end defun
 +
 +@defun remove-overlays &optional start end name value
 +This function removes all the overlays between @var{start} and
 +@var{end} whose property @var{name} has the value @var{value}.  It can
 +move the endpoints of the overlays in the region, or split them.
 +
 +If @var{name} is omitted or @code{nil}, it means to delete all overlays in
 +the specified region.  If @var{start} and/or @var{end} are omitted or
 +@code{nil}, that means the beginning and end of the buffer respectively.
 +Therefore, @code{(remove-overlays)} removes all the overlays in the
 +current buffer.
 +@end defun
 +
 +  Here are some examples:
 +
 +@example
 +;; @r{Create an overlay.}
 +(setq foo (make-overlay 1 10))
 +     @result{} #<overlay from 1 to 10 in display.texi>
 +(overlay-start foo)
 +     @result{} 1
 +(overlay-end foo)
 +     @result{} 10
 +(overlay-buffer foo)
 +     @result{} #<buffer display.texi>
 +;; @r{Give it a property we can check later.}
 +(overlay-put foo 'happy t)
 +     @result{} t
 +;; @r{Verify the property is present.}
 +(overlay-get foo 'happy)
 +     @result{} t
 +;; @r{Move the overlay.}
 +(move-overlay foo 5 20)
 +     @result{} #<overlay from 5 to 20 in display.texi>
 +(overlay-start foo)
 +     @result{} 5
 +(overlay-end foo)
 +     @result{} 20
 +;; @r{Delete the overlay.}
 +(delete-overlay foo)
 +     @result{} nil
 +;; @r{Verify it is deleted.}
 +foo
 +     @result{} #<overlay in no buffer>
 +;; @r{A deleted overlay has no position.}
 +(overlay-start foo)
 +     @result{} nil
 +(overlay-end foo)
 +     @result{} nil
 +(overlay-buffer foo)
 +     @result{} nil
 +;; @r{Undelete the overlay.}
 +(move-overlay foo 1 20)
 +     @result{} #<overlay from 1 to 20 in display.texi>
 +;; @r{Verify the results.}
 +(overlay-start foo)
 +     @result{} 1
 +(overlay-end foo)
 +     @result{} 20
 +(overlay-buffer foo)
 +     @result{} #<buffer display.texi>
 +;; @r{Moving and deleting the overlay does not change its properties.}
 +(overlay-get foo 'happy)
 +     @result{} t
 +@end example
 +
 +  Emacs stores the overlays of each buffer in two lists, divided
 +around an arbitrary ``center position.''  One list extends backwards
 +through the buffer from that center position, and the other extends
 +forwards from that center position.  The center position can be anywhere
 +in the buffer.
 +
 +@defun overlay-recenter pos
 +This function recenters the overlays of the current buffer around
 +position @var{pos}.  That makes overlay lookup faster for positions
 +near @var{pos}, but slower for positions far away from @var{pos}.
 +@end defun
 +
 +  A loop that scans the buffer forwards, creating overlays, can run
 +faster if you do @code{(overlay-recenter (point-max))} first.
 +
 +@node Overlay Properties
 +@subsection Overlay Properties
 +
 +  Overlay properties are like text properties in that the properties that
 +alter how a character is displayed can come from either source.  But in
 +most respects they are different.  @xref{Text Properties}, for comparison.
 +
 +  Text properties are considered a part of the text; overlays and
 +their properties are specifically considered not to be part of the
 +text.  Thus, copying text between various buffers and strings
 +preserves text properties, but does not try to preserve overlays.
 +Changing a buffer's text properties marks the buffer as modified,
 +while moving an overlay or changing its properties does not.  Unlike
 +text property changes, overlay property changes are not recorded in
 +the buffer's undo list.
 +
 +  Since more than one overlay can specify a property value for the
 +same character, Emacs lets you specify a priority value of each
 +overlay.  You should not make assumptions about which overlay will
 +prevail when there is a conflict and they have the same priority.
 +
 +  These functions read and set the properties of an overlay:
 +
 +@defun overlay-get overlay prop
 +This function returns the value of property @var{prop} recorded in
 +@var{overlay}, if any.  If @var{overlay} does not record any value for
 +that property, but it does have a @code{category} property which is a
 +symbol, that symbol's @var{prop} property is used.  Otherwise, the value
 +is @code{nil}.
 +@end defun
 +
 +@defun overlay-put overlay prop value
 +This function sets the value of property @var{prop} recorded in
 +@var{overlay} to @var{value}.  It returns @var{value}.
 +@end defun
 +
 +@defun overlay-properties overlay
 +This returns a copy of the property list of @var{overlay}.
 +@end defun
 +
 +  See also the function @code{get-char-property} which checks both
 +overlay properties and text properties for a given character.
 +@xref{Examining Properties}.
 +
 +  Many overlay properties have special meanings; here is a table
 +of them:
 +
 +@table @code
 +@item priority
 +@kindex priority @r{(overlay property)}
 +This property's value (which should be a nonnegative integer number)
 +determines the priority of the overlay.  No priority, or @code{nil},
 +means zero.
 +
 +The priority matters when two or more overlays cover the same
 +character and both specify the same property; the one whose
 +@code{priority} value is larger overrides the other.  For the
 +@code{face} property, the higher priority overlay's value does not
 +completely override the other value; instead, its face attributes
 +override the face attributes of the lower priority @code{face}
 +property.
 +
 +Currently, all overlays take priority over text properties.  Please
 +avoid using negative priority values, as we have not yet decided just
 +what they should mean.
 +
 +@item window
 +@kindex window @r{(overlay property)}
 +If the @code{window} property is non-@code{nil}, then the overlay
 +applies only on that window.
 +
 +@item category
 +@kindex category @r{(overlay property)}
 +If an overlay has a @code{category} property, we call it the
 +@dfn{category} of the overlay.  It should be a symbol.  The properties
 +of the symbol serve as defaults for the properties of the overlay.
 +
 +@item face
 +@kindex face @r{(overlay property)}
 +This property controls the way text is displayed---for example, which
 +font and which colors.  @xref{Faces}, for more information.
 +
 +In the simplest case, the value is a face name.  It can also be a list;
 +then each element can be any of these possibilities:
 +
 +@itemize @bullet
 +@item
 +A face name (a symbol or string).
 +
 +@item
 +A property list of face attributes.  This has the form (@var{keyword}
 +@var{value} @dots{}), where each @var{keyword} is a face attribute
 +name and @var{value} is a meaningful value for that attribute.  With
 +this feature, you do not need to create a face each time you want to
 +specify a particular attribute for certain text.  @xref{Face
 +Attributes}.
 +
 +@item
 +A cons cell, either of the form @code{(foreground-color . @var{color-name})} or
 +@code{(background-color . @var{color-name})}.  These elements specify
 +just the foreground color or just the background color.
 +
 +@code{(foreground-color . @var{color-name})} has the same effect as
 +@code{(:foreground @var{color-name})}; likewise for the background.
 +@end itemize
 +
 +@item mouse-face
 +@kindex mouse-face @r{(overlay property)}
 +This property is used instead of @code{face} when the mouse is within
 +the range of the overlay.
 +
 +@item display
 +@kindex display @r{(overlay property)}
 +This property activates various features that change the
 +way text is displayed.  For example, it can make text appear taller
 +or shorter, higher or lower, wider or narrower, or replaced with an image.
 +@xref{Display Property}.
 +
 +@item help-echo
 +@kindex help-echo @r{(overlay property)}
 +If an overlay has a @code{help-echo} property, then when you move the
 +mouse onto the text in the overlay, Emacs displays a help string in the
 +echo area, or in the tooltip window.  For details see @ref{Text
 +help-echo}.
 +
 +@item modification-hooks
 +@kindex modification-hooks @r{(overlay property)}
 +This property's value is a list of functions to be called if any
 +character within the overlay is changed or if text is inserted strictly
 +within the overlay.
 +
 +The hook functions are called both before and after each change.
 +If the functions save the information they receive, and compare notes
 +between calls, they can determine exactly what change has been made
 +in the buffer text.
 +
 +When called before a change, each function receives four arguments: the
 +overlay, @code{nil}, and the beginning and end of the text range to be
 +modified.
 +
 +When called after a change, each function receives five arguments: the
 +overlay, @code{t}, the beginning and end of the text range just
 +modified, and the length of the pre-change text replaced by that range.
 +(For an insertion, the pre-change length is zero; for a deletion, that
 +length is the number of characters deleted, and the post-change
 +beginning and end are equal.)
 +
 +If these functions modify the buffer, they should bind
 +@code{inhibit-modification-hooks} to @code{t} around doing so, to
 +avoid confusing the internal mechanism that calls these hooks.
 +
 +Text properties also support the @code{modification-hooks} property,
 +but the details are somewhat different (@pxref{Special Properties}).
 +
 +@item insert-in-front-hooks
 +@kindex insert-in-front-hooks @r{(overlay property)}
 +This property's value is a list of functions to be called before and
 +after inserting text right at the beginning of the overlay.  The calling
 +conventions are the same as for the @code{modification-hooks} functions.
 +
 +@item insert-behind-hooks
 +@kindex insert-behind-hooks @r{(overlay property)}
 +This property's value is a list of functions to be called before and
 +after inserting text right at the end of the overlay.  The calling
 +conventions are the same as for the @code{modification-hooks} functions.
 +
 +@item invisible
 +@kindex invisible @r{(overlay property)}
 +The @code{invisible} property can make the text in the overlay
 +invisible, which means that it does not appear on the screen.
 +@xref{Invisible Text}, for details.
 +
 +@item intangible
 +@kindex intangible @r{(overlay property)}
 +The @code{intangible} property on an overlay works just like the
 +@code{intangible} text property.  @xref{Special Properties}, for details.
 +
 +@item isearch-open-invisible
 +This property tells incremental search how to make an invisible overlay
 +visible, permanently, if the final match overlaps it.  @xref{Invisible
 +Text}.
 +
 +@item isearch-open-invisible-temporary
 +This property tells incremental search how to make an invisible overlay
 +visible, temporarily, during the search.  @xref{Invisible Text}.
 +
 +@item before-string
 +@kindex before-string @r{(overlay property)}
 +This property's value is a string to add to the display at the beginning
 +of the overlay.  The string does not appear in the buffer in any
 +sense---only on the screen.
 +
 +@item after-string
 +@kindex after-string @r{(overlay property)}
 +This property's value is a string to add to the display at the end of
 +the overlay.  The string does not appear in the buffer in any
 +sense---only on the screen.
 +
 +@item evaporate
 +@kindex evaporate @r{(overlay property)}
 +If this property is non-@code{nil}, the overlay is deleted automatically
 +if it becomes empty (i.e., if its length becomes zero).  If you give
 +an empty overlay a non-@code{nil} @code{evaporate} property, that deletes
 +it immediately.
 +
 +@item local-map
 +@cindex keymap of character (and overlays)
 +@kindex local-map @r{(overlay property)}
 +If this property is non-@code{nil}, it specifies a keymap for a portion
 +of the text.  The property's value replaces the buffer's local map, when
 +the character after point is within the overlay.  @xref{Active Keymaps}.
 +
 +@item keymap
 +@kindex keymap @r{(overlay property)}
 +The @code{keymap} property is similar to @code{local-map} but overrides the
 +buffer's local map (and the map specified by the @code{local-map}
 +property) rather than replacing it.
 +@end table
 +
 +@node Finding Overlays
 +@subsection Searching for Overlays
 +
 +@defun overlays-at pos
 +This function returns a list of all the overlays that cover the
 +character at position @var{pos} in the current buffer.  The list is in
 +no particular order.  An overlay contains position @var{pos} if it
 +begins at or before @var{pos}, and ends after @var{pos}.
 +
 +To illustrate usage, here is a Lisp function that returns a list of the
 +overlays that specify property @var{prop} for the character at point:
 +
 +@smallexample
 +(defun find-overlays-specifying (prop)
 +  (let ((overlays (overlays-at (point)))
 +        found)
 +    (while overlays
 +      (let ((overlay (car overlays)))
 +        (if (overlay-get overlay prop)
 +            (setq found (cons overlay found))))
 +      (setq overlays (cdr overlays)))
 +    found))
 +@end smallexample
 +@end defun
 +
 +@defun overlays-in beg end
 +This function returns a list of the overlays that overlap the region
 +@var{beg} through @var{end}.  ``Overlap'' means that at least one
 +character is contained within the overlay and also contained within the
 +specified region; however, empty overlays are included in the result if
 +they are located at @var{beg}, or strictly between @var{beg} and @var{end}.
 +@end defun
 +
 +@defun next-overlay-change pos
 +This function returns the buffer position of the next beginning or end
 +of an overlay, after @var{pos}.  If there is none, it returns
 +@code{(point-max)}.
 +@end defun
 +
 +@defun previous-overlay-change pos
 +This function returns the buffer position of the previous beginning or
 +end of an overlay, before @var{pos}.  If there is none, it returns
 +@code{(point-min)}.
 +@end defun
 +
 +  As an example, here's a simplified (and inefficient) version of the
 +primitive function @code{next-single-char-property-change}
 +(@pxref{Property Search}).  It searches forward from position
 +@var{pos} for the next position where the value of a given property
 +@code{prop}, as obtained from either overlays or text properties,
 +changes.
 +
 +@smallexample
 +(defun next-single-char-property-change (position prop)
 +  (save-excursion
 +    (goto-char position)
 +    (let ((propval (get-char-property (point) prop)))
 +      (while (and (not (eobp))
 +                  (eq (get-char-property (point) prop) propval))
 +        (goto-char (min (next-overlay-change (point))
 +                        (next-single-property-change (point) prop)))))
 +    (point)))
 +@end smallexample
 +
 +@node Width
 +@section Width
 +
 +Since not all characters have the same width, these functions let you
 +check the width of a character.  @xref{Primitive Indent}, and
 +@ref{Screen Lines}, for related functions.
 +
 +@defun char-width char
 +This function returns the width in columns of the character @var{char},
 +if it were displayed in the current buffer and the selected window.
 +@end defun
 +
 +@defun string-width string
 +This function returns the width in columns of the string @var{string},
 +if it were displayed in the current buffer and the selected window.
 +@end defun
 +
 +@defun truncate-string-to-width string width &optional start-column padding ellipsis
 +This function returns the part of @var{string} that fits within
 +@var{width} columns, as a new string.
 +
 +If @var{string} does not reach @var{width}, then the result ends where
 +@var{string} ends.  If one multi-column character in @var{string}
 +extends across the column @var{width}, that character is not included in
 +the result.  Thus, the result can fall short of @var{width} but cannot
 +go beyond it.
 +
 +The optional argument @var{start-column} specifies the starting column.
 +If this is non-@code{nil}, then the first @var{start-column} columns of
 +the string are omitted from the value.  If one multi-column character in
 +@var{string} extends across the column @var{start-column}, that
 +character is not included.
 +
 +The optional argument @var{padding}, if non-@code{nil}, is a padding
 +character added at the beginning and end of the result string, to extend
 +it to exactly @var{width} columns.  The padding character is used at the
 +end of the result if it falls short of @var{width}.  It is also used at
 +the beginning of the result if one multi-column character in
 +@var{string} extends across the column @var{start-column}.
 +
 +If @var{ellipsis} is non-@code{nil}, it should be a string which will
 +replace the end of @var{str} (including any padding) if it extends
 +beyond @var{end-column}, unless the display width of @var{str} is
 +equal to or less than the display width of @var{ellipsis}.  If
 +@var{ellipsis} is non-@code{nil} and not a string, it stands for
 +@code{"..."}.
 +
 +@example
 +(truncate-string-to-width "\tab\t" 12 4)
 +     @result{} "ab"
 +(truncate-string-to-width "\tab\t" 12 4 ?\s)
 +     @result{} "    ab  "
 +@end example
 +@end defun
 +
 +@node Line Height
 +@section Line Height
 +@cindex line height
 +
 +  The total height of each display line consists of the height of the
 +contents of the line, plus optional additional vertical line spacing
 +above or below the display line.
 +
 +  The height of the line contents is the maximum height of any
 +character or image on that display line, including the final newline
 +if there is one.  (A display line that is continued doesn't include a
 +final newline.)  That is the default line height, if you do nothing to
 +specify a greater height.  (In the most common case, this equals the
 +height of the default frame font.)
 +
 +  There are several ways to explicitly specify a larger line height,
 +either by specifying an absolute height for the display line, or by
 +specifying vertical space.  However, no matter what you specify, the
 +actual line height can never be less than the default.
 +
 +@kindex line-height @r{(text property)}
 +  A newline can have a @code{line-height} text or overlay property
 +that controls the total height of the display line ending in that
 +newline.
 +
 +  If the property value is @code{t}, the newline character has no
 +effect on the displayed height of the line---the visible contents
 +alone determine the height.  This is useful for tiling small images
 +(or image slices) without adding blank areas between the images.
 +
 +  If the property value is a list of the form @code{(@var{height}
 +@var{total})}, that adds extra space @emph{below} the display line.
 +First Emacs uses @var{height} as a height spec to control extra space
 +@emph{above} the line; then it adds enough space @emph{below} the line
 +to bring the total line height up to @var{total}.  In this case, the
 +other ways to specify the line spacing are ignored.
 +
 +  Any other kind of property value is a height spec, which translates
 +into a number---the specified line height.  There are several ways to
 +write a height spec; here's how each of them translates into a number:
 +
 +@table @code
 +@item @var{integer}
 +If the height spec is a positive integer, the height value is that integer.
 +@item @var{float}
 +If the height spec is a float, @var{float}, the numeric height value
 +is @var{float} times the frame's default line height.
 +@item (@var{face} . @var{ratio})
 +If the height spec is a cons of the format shown, the numeric height
 +is @var{ratio} times the height of face @var{face}.  @var{ratio} can
 +be any type of number, or @code{nil} which means a ratio of 1.
 +If @var{face} is @code{t}, it refers to the current face.
 +@item (nil . @var{ratio})
 +If the height spec is a cons of the format shown, the numeric height
 +is @var{ratio} times the height of the contents of the line.
 +@end table
 +
 +  Thus, any valid height spec determines the height in pixels, one way
 +or another.  If the line contents' height is less than that, Emacs
 +adds extra vertical space above the line to achieve the specified
 +total height.
 +
 +  If you don't specify the @code{line-height} property, the line's
 +height consists of the contents' height plus the line spacing.
 +There are several ways to specify the line spacing for different
 +parts of Emacs text.
 +
 +@vindex default-line-spacing
 +  You can specify the line spacing for all lines in a frame with the
 +@code{line-spacing} frame parameter (@pxref{Layout Parameters}).
 +However, if the variable @code{default-line-spacing} is
 +non-@code{nil}, it overrides the frame's @code{line-spacing}
 +parameter.  An integer value specifies the number of pixels put below
 +lines on graphical displays.  A floating point number specifies the
 +spacing relative to the frame's default line height.
 +
 +@vindex line-spacing
 +  You can specify the line spacing for all lines in a buffer via the
 +buffer-local @code{line-spacing} variable.  An integer value specifies
 +the number of pixels put below lines on graphical displays.  A floating
 +point number specifies the spacing relative to the default frame line
 +height.  This overrides line spacings specified for the frame.
 +
 +@kindex line-spacing @r{(text property)}
 +  Finally, a newline can have a @code{line-spacing} text or overlay
 +property that overrides the default frame line spacing and the buffer
 +local @code{line-spacing} variable, for the display line ending in
 +that newline.
 +
 +  One way or another, these mechanisms specify a Lisp value for the
 +spacing of each line.  The value is a height spec, and it translates
 +into a Lisp value as described above.  However, in this case the
 +numeric height value specifies the line spacing, rather than the line
 +height.
 +
 +@node Faces
 +@section Faces
 +@cindex faces
 +
 +  A @dfn{face} is a named collection of graphical attributes: font
 +family, foreground color, background color, optional underlining, and
 +many others.  Faces are used in Emacs to control the style of display of
 +particular parts of the text or the frame.  @xref{Standard Faces,,,
 +emacs, The GNU Emacs Manual}, for the list of faces Emacs normally
 +comes with.
 +
 +@cindex face id
 +Each face has its own @dfn{face number}, which distinguishes faces at
 +low levels within Emacs.  However, for most purposes, you refer to
 +faces in Lisp programs by the symbols that name them.
 +
 +@defun facep object
 +This function returns @code{t} if @var{object} is a face name string
 +or symbol (or if it is a vector of the kind used internally to record
 +face data).  It returns @code{nil} otherwise.
 +@end defun
 +
 +Each face name is meaningful for all frames, and by default it has the
 +same meaning in all frames.  But you can arrange to give a particular
 +face name a special meaning in one frame if you wish.
 +
 +@menu
 +* Defining Faces::      How to define a face with @code{defface}.
 +* Face Attributes::     What is in a face?
 +* Attribute Functions::  Functions to examine and set face attributes.
 +* Displaying Faces::     How Emacs combines the faces specified for a character.
 +* Font Selection::      Finding the best available font for a face.
 +* Face Functions::      How to define and examine faces.
 +* Auto Faces::          Hook for automatic face assignment.
 +* Font Lookup::         Looking up the names of available fonts
 +                          and information about them.
 +* Fontsets::            A fontset is a collection of fonts
 +                          that handle a range of character sets.
 +@end menu
 +
 +@node Defining Faces
 +@subsection Defining Faces
 +
 +  The way to define a new face is with @code{defface}.  This creates a
 +kind of customization item (@pxref{Customization}) which the user can
 +customize using the Customization buffer (@pxref{Easy Customization,,,
 +emacs, The GNU Emacs Manual}).
 +
 +@defmac defface face spec doc [keyword value]@dots{}
 +This declares @var{face} as a customizable face that defaults
 +according to @var{spec}.  You should not quote the symbol @var{face},
 +and it should not end in @samp{-face} (that would be redundant).  The
 +argument @var{doc} specifies the face documentation.  The keywords you
 +can use in @code{defface} are the same as in @code{defgroup} and
 +@code{defcustom} (@pxref{Common Keywords}).
 +
 +When @code{defface} executes, it defines the face according to
 +@var{spec}, then uses any customizations that were read from the
 +init file (@pxref{Init File}) to override that specification.
 +
 +When you evaluate a @code{defface} form with @kbd{C-M-x} in Emacs
 +Lisp mode (@code{eval-defun}), a special feature of @code{eval-defun}
 +overrides any customizations of the face.  This way, the face reflects
 +exactly what the @code{defface} says.
 +
 +The purpose of @var{spec} is to specify how the face should appear on
 +different kinds of terminals.  It should be an alist whose elements
 +have the form @code{(@var{display} @var{atts})}.  Each element's
 +@sc{car}, @var{display}, specifies a class of terminals.  (The first
 +element, if its @sc{car} is @code{default}, is special---it specifies
 +defaults for the remaining elements).  The element's @sc{cadr},
 +@var{atts}, is a list of face attributes and their values; it
 +specifies what the face should look like on that kind of terminal.
 +The possible attributes are defined in the value of
 +@code{custom-face-attributes}.
 +
 +The @var{display} part of an element of @var{spec} determines which
 +frames the element matches.  If more than one element of @var{spec}
 +matches a given frame, the first element that matches is the one used
 +for that frame.  There are three possibilities for @var{display}:
 +
 +@table @asis
 +@item @code{default}
 +This element of @var{spec} doesn't match any frames; instead, it
 +specifies defaults that apply to all frames.  This kind of element, if
 +used, must be the first element of @var{spec}.  Each of the following
 +elements can override any or all of these defaults.
 +
 +@item @code{t}
 +This element of @var{spec} matches all frames.  Therefore, any
 +subsequent elements of @var{spec} are never used.  Normally
 +@code{t} is used in the last (or only) element of @var{spec}.
 +
 +@item a list
 +If @var{display} is a list, each element should have the form
 +@code{(@var{characteristic} @var{value}@dots{})}.  Here
 +@var{characteristic} specifies a way of classifying frames, and the
 +@var{value}s are possible classifications which @var{display} should
 +apply to.  Here are the possible values of @var{characteristic}:
 +
 +@table @code
 +@item type
 +The kind of window system the frame uses---either @code{graphic} (any
 +graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console),
 +@code{w32} (for MS Windows 9X/NT/2K/XP), @code{mac} (for the Macintosh
 +display), or @code{tty} (a non-graphics-capable display).
 +@xref{Window Systems, window-system}.
 +
 +@item class
 +What kinds of colors the frame supports---either @code{color},
 +@code{grayscale}, or @code{mono}.
 +
 +@item background
 +The kind of background---either @code{light} or @code{dark}.
 +
 +@item min-colors
 +An integer that represents the minimum number of colors the frame
 +should support.  This matches a frame if its
 +@code{display-color-cells} value is at least the specified integer.
 +
 +@item supports
 +Whether or not the frame can display the face attributes given in
 +@var{value}@dots{} (@pxref{Face Attributes}).  See the documentation
 +for the function @code{display-supports-face-attributes-p} for more
 +information on exactly how this testing is done.  @xref{Display Face
 +Attribute Testing}.
 +@end table
 +
 +If an element of @var{display} specifies more than one @var{value} for a
 +given @var{characteristic}, any of those values is acceptable.  If
 +@var{display} has more than one element, each element should specify a
 +different @var{characteristic}; then @emph{each} characteristic of the
 +frame must match one of the @var{value}s specified for it in
 +@var{display}.
 +@end table
 +@end defmac
 +
 +  Here's how the standard face @code{region} is defined:
 +
 +@example
 +@group
 +(defface region
 +  '((((class color) (min-colors 88) (background dark))
 +     :background "blue3")
 +@end group
 +    (((class color) (min-colors 88) (background light))
 +     :background "lightgoldenrod2")
 +    (((class color) (min-colors 16) (background dark))
 +     :background "blue3")
 +    (((class color) (min-colors 16) (background light))
 +     :background "lightgoldenrod2")
 +    (((class color) (min-colors 8))
 +     :background "blue" :foreground "white")
 +    (((type tty) (class mono))
 +     :inverse-video t)
 +    (t :background "gray"))
 +@group
 +  "Basic face for highlighting the region."
 +  :group 'basic-faces)
 +@end group
 +@end example
 +
 +  Internally, @code{defface} uses the symbol property
 +@code{face-defface-spec} to record the face attributes specified in
 +@code{defface}, @code{saved-face} for the attributes saved by the user
 +with the customization buffer, @code{customized-face} for the
 +attributes customized by the user for the current session, but not
 +saved, and @code{face-documentation} for the documentation string.
 +
 +@defopt frame-background-mode
 +This option, if non-@code{nil}, specifies the background type to use for
 +interpreting face definitions.  If it is @code{dark}, then Emacs treats
 +all frames as if they had a dark background, regardless of their actual
 +background colors.  If it is @code{light}, then Emacs treats all frames
 +as if they had a light background.
 +@end defopt
 +
 +@node Face Attributes
 +@subsection Face Attributes
 +@cindex face attributes
 +
 +  The effect of using a face is determined by a fixed set of @dfn{face
 +attributes}.  This table lists all the face attributes, and what they
 +mean.  You can specify more than one face for a given piece of text;
 +Emacs merges the attributes of all the faces to determine how to
 +display the text.  @xref{Displaying Faces}.
 +
 +  Any attribute in a face can have the value @code{unspecified}.  This
 +means the face doesn't specify that attribute.  In face merging, when
 +the first face fails to specify a particular attribute, that means the
 +next face gets a chance.  However, the @code{default} face must
 +specify all attributes.
 +
 +  Some of these font attributes are meaningful only on certain kinds of
 +displays---if your display cannot handle a certain attribute, the
 +attribute is ignored.  (The attributes @code{:family}, @code{:width},
 +@code{:height}, @code{:weight}, and @code{:slant} correspond to parts of
 +an X Logical Font Descriptor.)
 +
 +@table @code
 +@item :family
 +Font family name, or fontset name (@pxref{Fontsets}).  If you specify a
 +font family name, the wild-card characters @samp{*} and @samp{?} are
 +allowed.
 +
 +@item :width
 +Relative proportionate width, also known as the character set width or
 +set width.  This should be one of the symbols @code{ultra-condensed},
 +@code{extra-condensed}, @code{condensed}, @code{semi-condensed},
 +@code{normal}, @code{semi-expanded}, @code{expanded},
 +@code{extra-expanded}, or @code{ultra-expanded}.
 +
 +@item :height
 +Either the font height, an integer in units of 1/10 point, a floating
 +point number specifying the amount by which to scale the height of any
 +underlying face, or a function, which is called with the old height
 +(from the underlying face), and should return the new height.
 +
 +@item :weight
 +Font weight---a symbol from this series (from most dense to most faint):
 +@code{ultra-bold}, @code{extra-bold}, @code{bold}, @code{semi-bold},
 +@code{normal}, @code{semi-light}, @code{light}, @code{extra-light},
 +or @code{ultra-light}.
 +
 +On a text-only terminal, any weight greater than normal is displayed as
 +extra bright, and any weight less than normal is displayed as
 +half-bright (provided the terminal supports the feature).
 +
 +@item :slant
 +Font slant---one of the symbols @code{italic}, @code{oblique}, @code{normal},
 +@code{reverse-italic}, or @code{reverse-oblique}.
 +
 +On a text-only terminal, slanted text is displayed as half-bright, if
 +the terminal supports the feature.
 +
 +@item :foreground
 +Foreground color, a string.  The value can be a system-defined color
 +name, or a hexadecimal color specification of the form
 +@samp{#@var{rr}@var{gg}@var{bb}}.  (@samp{#000000} is black,
 +@samp{#ff0000} is red, @samp{#00ff00} is green, @samp{#0000ff} is
 +blue, and @samp{#ffffff} is white.)
 +
 +@item :background
 +Background color, a string, like the foreground color.
 +
 +@item :inverse-video
 +Whether or not characters should be displayed in inverse video.  The
 +value should be @code{t} (yes) or @code{nil} (no).
 +
 +@item :stipple
 +The background stipple, a bitmap.
 +
 +The value can be a string; that should be the name of a file containing
 +external-format X bitmap data.  The file is found in the directories
 +listed in the variable @code{x-bitmap-file-path}.
 +
 +Alternatively, the value can specify the bitmap directly, with a list
 +of the form @code{(@var{width} @var{height} @var{data})}.  Here,
 +@var{width} and @var{height} specify the size in pixels, and
 +@var{data} is a string containing the raw bits of the bitmap, row by
 +row.  Each row occupies @math{(@var{width} + 7) / 8} consecutive bytes
 +in the string (which should be a unibyte string for best results).
 +This means that each row always occupies at least one whole byte.
 +
 +If the value is @code{nil}, that means use no stipple pattern.
 +
 +Normally you do not need to set the stipple attribute, because it is
 +used automatically to handle certain shades of gray.
 +
 +@item :underline
 +Whether or not characters should be underlined, and in what color.  If
 +the value is @code{t}, underlining uses the foreground color of the
 +face.  If the value is a string, underlining uses that color.  The
 +value @code{nil} means do not underline.
 +
 +@item :overline
 +Whether or not characters should be overlined, and in what color.
 +The value is used like that of @code{:underline}.
 +
 +@item :strike-through
 +Whether or not characters should be strike-through, and in what
 +color.  The value is used like that of @code{:underline}.
 +
 +@item :inherit
 +The name of a face from which to inherit attributes, or a list of face
 +names.  Attributes from inherited faces are merged into the face like an
 +underlying face would be, with higher priority than underlying faces.
 +If a list of faces is used, attributes from faces earlier in the list
 +override those from later faces.
 +
 +@item :box
 +Whether or not a box should be drawn around characters, its color, the
 +width of the box lines, and 3D appearance.
 +@end table
 +
 +  Here are the possible values of the @code{:box} attribute, and what
 +they mean:
 +
 +@table @asis
 +@item @code{nil}
 +Don't draw a box.
 +
 +@item @code{t}
 +Draw a box with lines of width 1, in the foreground color.
 +
 +@item @var{color}
 +Draw a box with lines of width 1, in color @var{color}.
 +
 +@item @code{(:line-width @var{width} :color @var{color} :style @var{style})}
 +This way you can explicitly specify all aspects of the box.  The value
 +@var{width} specifies the width of the lines to draw; it defaults to 1.
 +
 +The value @var{color} specifies the color to draw with.  The default is
 +the foreground color of the face for simple boxes, and the background
 +color of the face for 3D boxes.
 +
 +The value @var{style} specifies whether to draw a 3D box.  If it is
 +@code{released-button}, the box looks like a 3D button that is not being
 +pressed.  If it is @code{pressed-button}, the box looks like a 3D button
 +that is being pressed.  If it is @code{nil} or omitted, a plain 2D box
 +is used.
 +@end table
 +
 +  In older versions of Emacs, before @code{:family}, @code{:height},
 +@code{:width}, @code{:weight}, and @code{:slant} existed, these
 +attributes were used to specify the type face.  They are now
 +semi-obsolete, but they still work:
 +
 +@table @code
 +@item :font
 +This attribute specifies the font name.
 +
 +@item :bold
 +A non-@code{nil} value specifies a bold font.
 +
 +@item :italic
 +A non-@code{nil} value specifies an italic font.
 +@end table
 +
 +  For compatibility, you can still set these ``attributes,'' even
 +though they are not real face attributes.  Here is what that does:
 +
 +@table @code
 +@item :font
 +You can specify an X font name as the ``value'' of this ``attribute'';
 +that sets the @code{:family}, @code{:width}, @code{:height},
 +@code{:weight}, and @code{:slant} attributes according to the font name.
 +
 +If the value is a pattern with wildcards, the first font that matches
 +the pattern is used to set these attributes.
 +
 +@item :bold
 +A non-@code{nil} makes the face bold; @code{nil} makes it normal.
 +This actually works by setting the @code{:weight} attribute.
 +
 +@item :italic
 +A non-@code{nil} makes the face italic; @code{nil} makes it normal.
 +This actually works by setting the @code{:slant} attribute.
 +@end table
 +
 +@defvar x-bitmap-file-path
 +This variable specifies a list of directories for searching
 +for bitmap files, for the @code{:stipple} attribute.
 +@end defvar
 +
 +@defun bitmap-spec-p object
 +This returns @code{t} if @var{object} is a valid bitmap specification,
 +suitable for use with @code{:stipple} (see above).  It returns
 +@code{nil} otherwise.
 +@end defun
 +
 +@node Attribute Functions
 +@subsection Face Attribute Functions
 +
 +  This section describes the functions for accessing and modifying the
 +attributes of an existing face.
 +
 +@defun set-face-attribute face frame &rest arguments
 +This function sets one or more attributes of face @var{face} for frame
 +@var{frame}.  The attributes you specify this way override whatever
 +the @code{defface} says.
 +
 +The extra arguments @var{arguments} specify the attributes to set, and
 +the values for them.  They should consist of alternating attribute names
 +(such as @code{:family} or @code{:underline}) and corresponding values.
 +Thus,
 +
 +@example
 +(set-face-attribute 'foo nil
 +                    :width 'extended
 +                    :weight 'bold
 +                    :underline "red")
 +@end example
 +
 +@noindent
 +sets the attributes @code{:width}, @code{:weight} and @code{:underline}
 +to the corresponding values.
 +
 +If @var{frame} is @code{t}, this function sets the default attributes
 +for new frames.  Default attribute values specified this way override
 +the @code{defface} for newly created frames.
 +
 +If @var{frame} is @code{nil}, this function sets the attributes for
 +all existing frames, and the default for new frames.
 +@end defun
 +
 +@defun face-attribute face attribute &optional frame inherit
 +This returns the value of the @var{attribute} attribute of face
 +@var{face} on @var{frame}.  If @var{frame} is @code{nil},
 +that means the selected frame (@pxref{Input Focus}).
 +
 +If @var{frame} is @code{t}, this returns whatever new-frames default
 +value you previously specified with @code{set-face-attribute} for the
 +@var{attribute} attribute of @var{face}.  If you have not specified
 +one, it returns @code{nil}.
 +
 +If @var{inherit} is @code{nil}, only attributes directly defined by
 +@var{face} are considered, so the return value may be
 +@code{unspecified}, or a relative value.  If @var{inherit} is
 +non-@code{nil}, @var{face}'s definition of @var{attribute} is merged
 +with the faces specified by its @code{:inherit} attribute; however the
 +return value may still be @code{unspecified} or relative.  If
 +@var{inherit} is a face or a list of faces, then the result is further
 +merged with that face (or faces), until it becomes specified and
 +absolute.
 +
 +To ensure that the return value is always specified and absolute, use
 +a value of @code{default} for @var{inherit}; this will resolve any
 +unspecified or relative values by merging with the @code{default} face
 +(which is always completely specified).
 +
 +For example,
 +
 +@example
 +(face-attribute 'bold :weight)
 +     @result{} bold
 +@end example
 +@end defun
 +
 +@defun face-attribute-relative-p attribute value
 +This function returns non-@code{nil} if @var{value}, when used as the
 +value of the face attribute @var{attribute}, is relative.  This means
 +it would modify, rather than completely override, any value that comes
 +from a subsequent face in the face list or that is inherited from
 +another face.
 +
 +@code{unspecified} is a relative value for all attributes.
 +For @code{:height}, floating point values are also relative.
 +
 +For example:
 +
 +@example
 +(face-attribute-relative-p :height 2.0)
 +     @result{} t
 +@end example
 +@end defun
 +
 +@defun merge-face-attribute attribute value1 value2
 +If @var{value1} is a relative value for the face attribute
 +@var{attribute}, returns it merged with the underlying value
 +@var{value2}; otherwise, if @var{value1} is an absolute value for the
 +face attribute @var{attribute}, returns @var{value1} unchanged.
 +@end defun
 +
 +  The functions above did not exist before Emacs 21.  For compatibility
 +with older Emacs versions, you can use the following functions to set
 +and examine the face attributes which existed in those versions.
 +They use values of @code{t} and @code{nil} for @var{frame}
 +just like @code{set-face-attribute} and @code{face-attribute}.
 +
 +@defun set-face-foreground face color &optional frame
 +@defunx set-face-background face color &optional frame
 +These functions set the foreground (or background, respectively) color
 +of face @var{face} to @var{color}.  The argument @var{color} should be a
 +string, the name of a color.
 +
 +Certain shades of gray are implemented by stipple patterns on
 +black-and-white screens.
 +@end defun
 +
 +@defun set-face-stipple face pattern &optional frame
 +This function sets the background stipple pattern of face @var{face}
 +to @var{pattern}.  The argument @var{pattern} should be the name of a
 +stipple pattern defined by the X server, or actual bitmap data
 +(@pxref{Face Attributes}), or @code{nil} meaning don't use stipple.
 +
 +Normally there is no need to pay attention to stipple patterns, because
 +they are used automatically to handle certain shades of gray.
 +@end defun
 +
 +@defun set-face-font face font &optional frame
 +This function sets the font of face @var{face}.  This actually sets
 +the attributes @code{:family}, @code{:width}, @code{:height},
 +@code{:weight}, and @code{:slant} according to the font name
 +@var{font}.
 +@end defun
 +
 +@defun set-face-bold-p face bold-p &optional frame
 +This function specifies whether @var{face} should be bold.  If
 +@var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no.
 +This actually sets the @code{:weight} attribute.
 +@end defun
 +
 +@defun set-face-italic-p face italic-p &optional frame
 +This function specifies whether @var{face} should be italic.  If
 +@var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no.
 +This actually sets the @code{:slant} attribute.
 +@end defun
 +
 +@defun set-face-underline-p face underline &optional frame
 +This function sets the underline attribute of face @var{face}.
 +Non-@code{nil} means do underline; @code{nil} means don't.
 +If @var{underline} is a string, underline with that color.
 +@end defun
 +
 +@defun set-face-inverse-video-p face inverse-video-p &optional frame
 +This function sets the @code{:inverse-video} attribute of face
 +@var{face}.
 +@end defun
 +
 +@defun invert-face face &optional frame
 +This function swaps the foreground and background colors of face
 +@var{face}.
 +@end defun
 +
 +  These functions examine the attributes of a face.  If you don't
 +specify @var{frame}, they refer to the selected frame; @code{t} refers
 +to the default data for new frames.  They return the symbol
 +@code{unspecified} if the face doesn't define any value for that
 +attribute.
 +
 +@defun face-foreground face &optional frame inherit
 +@defunx face-background face &optional frame inherit
 +These functions return the foreground color (or background color,
 +respectively) of face @var{face}, as a string.
 +
 +If @var{inherit} is @code{nil}, only a color directly defined by the face is
 +returned.  If @var{inherit} is non-@code{nil}, any faces specified by its
 +@code{:inherit} attribute are considered as well, and if @var{inherit}
 +is a face or a list of faces, then they are also considered, until a
 +specified color is found.  To ensure that the return value is always
 +specified, use a value of @code{default} for @var{inherit}.
 +@end defun
 +
 +@defun face-stipple face &optional frame inherit
 +This function returns the name of the background stipple pattern of face
 +@var{face}, or @code{nil} if it doesn't have one.
 +
 +If @var{inherit} is @code{nil}, only a stipple directly defined by the
 +face is returned.  If @var{inherit} is non-@code{nil}, any faces
 +specified by its @code{:inherit} attribute are considered as well, and
 +if @var{inherit} is a face or a list of faces, then they are also
 +considered, until a specified stipple is found.  To ensure that the
 +return value is always specified, use a value of @code{default} for
 +@var{inherit}.
 +@end defun
 +
 +@defun face-font face &optional frame
 +This function returns the name of the font of face @var{face}.
 +@end defun
 +
 +@defun face-bold-p face &optional frame
 +This function returns @code{t} if @var{face} is bold---that is, if it is
 +bolder than normal.  It returns @code{nil} otherwise.
 +@end defun
 +
 +@defun face-italic-p face &optional frame
 +This function returns @code{t} if @var{face} is italic or oblique,
 +@code{nil} otherwise.
 +@end defun
 +
 +@defun face-underline-p face &optional frame
 +This function returns the @code{:underline} attribute of face @var{face}.
 +@end defun
 +
 +@defun face-inverse-video-p face &optional frame
 +This function returns the @code{:inverse-video} attribute of face @var{face}.
 +@end defun
 +
 +@node Displaying Faces
 +@subsection Displaying Faces
 +
 +  Here are the ways to specify which faces to use for display of text:
 +
 +@itemize @bullet
 +@item
 +With defaults.  The @code{default} face is used as the ultimate
 +default for all text.  (In Emacs 19 and 20, the @code{default}
 +face is used only when no other face is specified.)
 +
 +@item
 +For a mode line or header line, the face @code{mode-line} or
 +@code{mode-line-inactive}, or @code{header-line}, is merged in just
 +before @code{default}.
 +
 +@item
 +With text properties.  A character can have a @code{face} property; if
 +so, the faces and face attributes specified there apply.  @xref{Special
 +Properties}.
 +
 +If the character has a @code{mouse-face} property, that is used instead
 +of the @code{face} property when the mouse is ``near enough'' to the
 +character.
 +
 +@item
 +With overlays.  An overlay can have @code{face} and @code{mouse-face}
 +properties too; they apply to all the text covered by the overlay.
 +
 +@item
 +With a region that is active.  In Transient Mark mode, the region is
 +highlighted with the face @code{region} (@pxref{Standard Faces,,,
 +emacs, The GNU Emacs Manual}).
 +
 +@item
 +With special glyphs.  Each glyph can specify a particular face
 +number.  @xref{Glyphs}.
 +@end itemize
 +
 +  If these various sources together specify more than one face for a
 +particular character, Emacs merges the attributes of the various faces
 +specified.  For each attribute, Emacs tries first the face of any
 +special glyph; then the face for region highlighting, if appropriate;
 +then the faces specified by overlays, followed by those specified by
 +text properties, then the @code{mode-line} or
 +@code{mode-line-inactive} or @code{header-line} face (if in a mode
 +line or a header line), and last the @code{default} face.
 +
 +  When multiple overlays cover one character, an overlay with higher
 +priority overrides those with lower priority.  @xref{Overlays}.
 +
 +@node Font Selection
 +@subsection Font Selection
 +
 +  @dfn{Selecting a font} means mapping the specified face attributes for
 +a character to a font that is available on a particular display.  The
 +face attributes, as determined by face merging, specify most of the
 +font choice, but not all.  Part of the choice depends on what character
 +it is.
 +
 +  If the face specifies a fontset name, that fontset determines a
 +pattern for fonts of the given charset.  If the face specifies a font
 +family, a font pattern is constructed.
 +
 +  Emacs tries to find an available font for the given face attributes
 +and character's registry and encoding.  If there is a font that matches
 +exactly, it is used, of course.  The hard case is when no available font
 +exactly fits the specification.  Then Emacs looks for one that is
 +``close''---one attribute at a time.  You can specify the order to
 +consider the attributes.  In the case where a specified font family is
 +not available, you can specify a set of mappings for alternatives to
 +try.
 +
 +@defvar face-font-selection-order
 +This variable specifies the order of importance of the face attributes
 +@code{:width}, @code{:height}, @code{:weight}, and @code{:slant}.  The
 +value should be a list containing those four symbols, in order of
 +decreasing importance.
 +
 +Font selection first finds the best available matches for the first
 +attribute listed; then, among the fonts which are best in that way, it
 +searches for the best matches in the second attribute, and so on.
 +
 +The attributes @code{:weight} and @code{:width} have symbolic values in
 +a range centered around @code{normal}.  Matches that are more extreme
 +(farther from @code{normal}) are somewhat preferred to matches that are
 +less extreme (closer to @code{normal}); this is designed to ensure that
 +non-normal faces contrast with normal ones, whenever possible.
 +
 +The default is @code{(:width :height :weight :slant)}, which means first
 +find the fonts closest to the specified @code{:width}, then---among the
 +fonts with that width---find a best match for the specified font height,
 +and so on.
 +
 +One example of a case where this variable makes a difference is when the
 +default font has no italic equivalent.  With the default ordering, the
 +@code{italic} face will use a non-italic font that is similar to the
 +default one.  But if you put @code{:slant} before @code{:height}, the
 +@code{italic} face will use an italic font, even if its height is not
 +quite right.
 +@end defvar
 +
 +@defvar face-font-family-alternatives
 +This variable lets you specify alternative font families to try, if a
 +given family is specified and doesn't exist.  Each element should have
 +this form:
 +
 +@example
 +(@var{family} @var{alternate-families}@dots{})
 +@end example
 +
 +If @var{family} is specified but not available, Emacs will try the other
 +families given in @var{alternate-families}, one by one, until it finds a
 +family that does exist.
 +@end defvar
 +
 +@defvar face-font-registry-alternatives
 +This variable lets you specify alternative font registries to try, if a
 +given registry is specified and doesn't exist.  Each element should have
 +this form:
 +
 +@example
 +(@var{registry} @var{alternate-registries}@dots{})
 +@end example
 +
 +If @var{registry} is specified but not available, Emacs will try the
 +other registries given in @var{alternate-registries}, one by one,
 +until it finds a registry that does exist.
 +@end defvar
 +
 +  Emacs can make use of scalable fonts, but by default it does not use
 +them, since the use of too many or too big scalable fonts can crash
 +XFree86 servers.
 +
 +@defvar scalable-fonts-allowed
 +This variable controls which scalable fonts to use.  A value of
 +@code{nil}, the default, means do not use scalable fonts.  @code{t}
 +means to use any scalable font that seems appropriate for the text.
 +
 +Otherwise, the value must be a list of regular expressions.  Then a
 +scalable font is enabled for use if its name matches any regular
 +expression in the list.  For example,
 +
 +@example
 +(setq scalable-fonts-allowed '("muleindian-2$"))
 +@end example
 +
 +@noindent
 +allows the use of scalable fonts with registry @code{muleindian-2}.
 +@end defvar
 +
 +@defvar face-font-rescale-alist
 +This variable specifies scaling for certain faces.  Its value should
 +be a list of elements of the form
 +
 +@example
 +(@var{fontname-regexp} . @var{scale-factor})
 +@end example
 +
 +If @var{fontname-regexp} matches the font name that is about to be
 +used, this says to choose a larger similar font according to the
 +factor @var{scale-factor}.  You would use this feature to normalize
 +the font size if certain fonts are bigger or smaller than their
 +nominal heights and widths would suggest.
 +@end defvar
 +
 +@node Face Functions
 +@subsection Functions for Working with Faces
 +
 +  Here are additional functions for creating and working with faces.
 +
 +@defun make-face name
 +This function defines a new face named @var{name}, initially with all
 +attributes @code{nil}.  It does nothing if there is already a face named
 +@var{name}.
 +@end defun
 +
 +@defun face-list
 +This function returns a list of all defined face names.
 +@end defun
 +
 +@defun copy-face old-face new-name &optional frame new-frame
 +This function defines a face named @var{new-name} as a copy of the existing
 +face named @var{old-face}.  It creates the face @var{new-name} if that
 +doesn't already exist.
 +
 +If the optional argument @var{frame} is given, this function applies
 +only to that frame.  Otherwise it applies to each frame individually,
 +copying attributes from @var{old-face} in each frame to @var{new-face}
 +in the same frame.
 +
 +If the optional argument @var{new-frame} is given, then @code{copy-face}
 +copies the attributes of @var{old-face} in @var{frame} to @var{new-name}
 +in @var{new-frame}.
 +@end defun
 +
 +@defun face-id face
 +This function returns the face number of face @var{face}.
 +@end defun
 +
 +@defun face-documentation face
 +This function returns the documentation string of face @var{face}, or
 +@code{nil} if none was specified for it.
 +@end defun
 +
 +@defun face-equal face1 face2 &optional frame
 +This returns @code{t} if the faces @var{face1} and @var{face2} have the
 +same attributes for display.
 +@end defun
 +
 +@defun face-differs-from-default-p face &optional frame
 +This returns non-@code{nil} if the face @var{face} displays
 +differently from the default face.
 +@end defun
 +
 +@cindex face alias
 +A @dfn{face alias} provides an equivalent name for a face.  You can
 +define a face alias by giving the alias symbol the @code{face-alias}
 +property, with a value of the target face name.  The following example
 +makes @code{modeline} an alias for the @code{mode-line} face.
 +
 +@example
 +(put 'modeline 'face-alias 'mode-line)
 +@end example
 +
 +
 +@node Auto Faces
 +@subsection Automatic Face Assignment
 +@cindex automatic face assignment
 +@cindex faces, automatic choice
 +
 +  This hook is used for automatically assigning faces to text in the
 +buffer.  It is part of the implementation of Jit-Lock mode, used by
 +Font-Lock.
 +
 +@defvar fontification-functions
 +This variable holds a list of functions that are called by Emacs
 +redisplay as needed to assign faces automatically to text in the buffer.
 +
 +The functions are called in the order listed, with one argument, a
 +buffer position @var{pos}.  Each function should attempt to assign faces
 +to the text in the current buffer starting at @var{pos}.
 +
 +Each function should record the faces they assign by setting the
 +@code{face} property.  It should also add a non-@code{nil}
 +@code{fontified} property for all the text it has assigned faces to.
 +That property tells redisplay that faces have been assigned to that text
 +already.
 +
 +It is probably a good idea for each function to do nothing if the
 +character after @var{pos} already has a non-@code{nil} @code{fontified}
 +property, but this is not required.  If one function overrides the
 +assignments made by a previous one, the properties as they are
 +after the last function finishes are the ones that really matter.
 +
 +For efficiency, we recommend writing these functions so that they
 +usually assign faces to around 400 to 600 characters at each call.
 +@end defvar
 +
 +@node Font Lookup
 +@subsection Looking Up Fonts
 +
 +@defun x-list-fonts pattern &optional face frame maximum
 +This function returns a list of available font names that match
 +@var{pattern}.  If the optional arguments @var{face} and @var{frame} are
 +specified, then the list is limited to fonts that are the same size as
 +@var{face} currently is on @var{frame}.
 +
 +The argument @var{pattern} should be a string, perhaps with wildcard
 +characters: the @samp{*} character matches any substring, and the
 +@samp{?} character matches any single character.  Pattern matching
 +of font names ignores case.
 +
 +If you specify @var{face} and @var{frame}, @var{face} should be a face name
 +(a symbol) and @var{frame} should be a frame.
 +
 +The optional argument @var{maximum} sets a limit on how many fonts to
 +return.  If this is non-@code{nil}, then the return value is truncated
 +after the first @var{maximum} matching fonts.  Specifying a small value
 +for @var{maximum} can make this function much faster, in cases where
 +many fonts match the pattern.
 +@end defun
 +
 +@defun x-family-fonts &optional family frame
 +This function returns a list describing the available fonts for family
 +@var{family} on @var{frame}.  If @var{family} is omitted or @code{nil},
 +this list applies to all families, and therefore, it contains all
 +available fonts.  Otherwise, @var{family} must be a string; it may
 +contain the wildcards @samp{?} and @samp{*}.
 +
 +The list describes the display that @var{frame} is on; if @var{frame} is
 +omitted or @code{nil}, it applies to the selected frame's display
 +(@pxref{Input Focus}).
 +
 +The list contains a vector of the following form for each font:
 +
 +@example
 +[@var{family} @var{width} @var{point-size} @var{weight} @var{slant}
 + @var{fixed-p} @var{full} @var{registry-and-encoding}]
 +@end example
 +
 +The first five elements correspond to face attributes; if you
 +specify these attributes for a face, it will use this font.
 +
 +The last three elements give additional information about the font.
 +@var{fixed-p} is non-@code{nil} if the font is fixed-pitch.
 +@var{full} is the full name of the font, and
 +@var{registry-and-encoding} is a string giving the registry and
 +encoding of the font.
 +
 +The result list is sorted according to the current face font sort order.
 +@end defun
 +
 +@defun x-font-family-list &optional frame
 +This function returns a list of the font families available for
 +@var{frame}'s display.  If @var{frame} is omitted or @code{nil}, it
 +describes the selected frame's display (@pxref{Input Focus}).
 +
 +The value is a list of elements of this form:
 +
 +@example
 +(@var{family} . @var{fixed-p})
 +@end example
 +
 +@noindent
 +Here @var{family} is a font family, and @var{fixed-p} is
 +non-@code{nil} if fonts of that family are fixed-pitch.
 +@end defun
 +
 +@defvar font-list-limit
 +This variable specifies maximum number of fonts to consider in font
 +matching.  The function @code{x-family-fonts} will not return more than
 +that many fonts, and font selection will consider only that many fonts
 +when searching a matching font for face attributes.  The default is
 +currently 100.
 +@end defvar
 +
 +@node Fontsets
 +@subsection Fontsets
 +
 +  A @dfn{fontset} is a list of fonts, each assigned to a range of
 +character codes.  An individual font cannot display the whole range of
 +characters that Emacs supports, but a fontset can.  Fontsets have names,
 +just as fonts do, and you can use a fontset name in place of a font name
 +when you specify the ``font'' for a frame or a face.  Here is
 +information about defining a fontset under Lisp program control.
 +
 +@defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror
 +This function defines a new fontset according to the specification
 +string @var{fontset-spec}.  The string should have this format:
 +
 +@smallexample
 +@var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}}
 +@end smallexample
 +
 +@noindent
 +Whitespace characters before and after the commas are ignored.
 +
 +The first part of the string, @var{fontpattern}, should have the form of
 +a standard X font name, except that the last two fields should be
 +@samp{fontset-@var{alias}}.
 +
 +The new fontset has two names, one long and one short.  The long name is
 +@var{fontpattern} in its entirety.  The short name is
 +@samp{fontset-@var{alias}}.  You can refer to the fontset by either
 +name.  If a fontset with the same name already exists, an error is
 +signaled, unless @var{noerror} is non-@code{nil}, in which case this
 +function does nothing.
 +
 +If optional argument @var{style-variant-p} is non-@code{nil}, that says
 +to create bold, italic and bold-italic variants of the fontset as well.
 +These variant fontsets do not have a short name, only a long one, which
 +is made by altering @var{fontpattern} to indicate the bold or italic
 +status.
 +
 +The specification string also says which fonts to use in the fontset.
 +See below for the details.
 +@end defun
 +
 +  The construct @samp{@var{charset}:@var{font}} specifies which font to
 +use (in this fontset) for one particular character set.  Here,
 +@var{charset} is the name of a character set, and @var{font} is the font
 +to use for that character set.  You can use this construct any number of
 +times in the specification string.
 +
 +  For the remaining character sets, those that you don't specify
 +explicitly, Emacs chooses a font based on @var{fontpattern}: it replaces
 +@samp{fontset-@var{alias}} with a value that names one character set.
 +For the @acronym{ASCII} character set, @samp{fontset-@var{alias}} is replaced
 +with @samp{ISO8859-1}.
 +
 +  In addition, when several consecutive fields are wildcards, Emacs
 +collapses them into a single wildcard.  This is to prevent use of
 +auto-scaled fonts.  Fonts made by scaling larger fonts are not usable
 +for editing, and scaling a smaller font is not useful because it is
 +better to use the smaller font in its own size, which Emacs does.
 +
 +  Thus if @var{fontpattern} is this,
 +
 +@example
 +-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
 +@end example
 +
 +@noindent
 +the font specification for @acronym{ASCII} characters would be this:
 +
 +@example
 +-*-fixed-medium-r-normal-*-24-*-ISO8859-1
 +@end example
 +
 +@noindent
 +and the font specification for Chinese GB2312 characters would be this:
 +
 +@example
 +-*-fixed-medium-r-normal-*-24-*-gb2312*-*
 +@end example
 +
 +  You may not have any Chinese font matching the above font
 +specification.  Most X distributions include only Chinese fonts that
 +have @samp{song ti} or @samp{fangsong ti} in the @var{family} field.  In
 +such a case, @samp{Fontset-@var{n}} can be specified as below:
 +
 +@smallexample
 +Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
 +        chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
 +@end smallexample
 +
 +@noindent
 +Then, the font specifications for all but Chinese GB2312 characters have
 +@samp{fixed} in the @var{family} field, and the font specification for
 +Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
 +field.
 +
 +@defun set-fontset-font name character fontname &optional frame
 +This function modifies the existing fontset @var{name} to
 +use the font name @var{fontname} for the character @var{character}.
 +
 +If @var{name} is @code{nil}, this function modifies the default
 +fontset, whose short name is @samp{fontset-default}.
 +
 +@var{character} may be a cons; @code{(@var{from} . @var{to})}, where
 +@var{from} and @var{to} are non-generic characters.  In that case, use
 +@var{fontname} for all characters in the range @var{from} and @var{to}
 +(inclusive).
 +
 +@var{character} may be a charset.  In that case, use
 +@var{fontname} for all character in the charsets.
 +
 +@var{fontname} may be a cons; @code{(@var{family} . @var{registry})},
 +where @var{family} is a family name of a font (possibly including a
 +foundry name at the head), @var{registry} is a registry name of a font
 +(possibly including an encoding name at the tail).
 +
 +For instance, this changes the default fontset to use a font of which
 +registry name is @samp{JISX0208.1983} for all characters belonging to
 +the charset @code{japanese-jisx0208}.
 +
 +@smallexample
 +(set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983"))
 +@end smallexample
 +@end defun
 +
 +@defun char-displayable-p char
 +This function returns @code{t} if Emacs ought to be able to display
 +@var{char}.  More precisely, if the selected frame's fontset has a
 +font to display the character set that @var{char} belongs to.
 +
 +Fontsets can specify a font on a per-character basis; when the fontset
 +does that, this function's value may not be accurate.
 +@end defun
 +
 +@node Fringes
 +@section Fringes
 +@cindex fringes
 +
 +  The @dfn{fringes} of a window are thin vertical strips down the
 +sides that are used for displaying bitmaps that indicate truncation,
 +continuation, horizontal scrolling, and the overlay arrow.
 +
 +@menu
 +* Fringe Size/Pos::     Specifying where to put the window fringes.
 +* Fringe Indicators::   Displaying indicator icons in the window fringes.
 +* Fringe Cursors::      Displaying cursors in the right fringe.
 +* Fringe Bitmaps::      Specifying bitmaps for fringe indicators.
 +* Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes.
 +* Overlay Arrow::       Display of an arrow to indicate position.
 +@end menu
 +
 +@node Fringe Size/Pos
 +@subsection Fringe Size and Position
 +
 +  The following buffer-local variables control the position and width
 +of the window fringes.
 +
 +@defvar fringes-outside-margins
 +The fringes normally appear between the display margins and the window
 +text.  If the value is non-@code{nil}, they appear outside the display
 +margins.  @xref{Display Margins}.
 +@end defvar
 +
 +@defvar left-fringe-width
 +This variable, if non-@code{nil}, specifies the width of the left
 +fringe in pixels.  A value of @code{nil} means to use the left fringe
 +width from the window's frame.
 +@end defvar
 +
 +@defvar right-fringe-width
 +This variable, if non-@code{nil}, specifies the width of the right
 +fringe in pixels.  A value of @code{nil} means to use the right fringe
 +width from the window's frame.
 +@end defvar
 +
 +  The values of these variables take effect when you display the
 +buffer in a window.  If you change them while the buffer is visible,
 +you can call @code{set-window-buffer} to display it once again in the
 +same window, to make the changes take effect.
 +
 +@defun set-window-fringes window left &optional right outside-margins
 +This function sets the fringe widths of window @var{window}.
 +If @var{window} is @code{nil}, the selected window is used.
 +
 +The argument @var{left} specifies the width in pixels of the left
 +fringe, and likewise @var{right} for the right fringe.  A value of
 +@code{nil} for either one stands for the default width.  If
 +@var{outside-margins} is non-@code{nil}, that specifies that fringes
 +should appear outside of the display margins.
 +@end defun
 +
 +@defun window-fringes &optional window
 +This function returns information about the fringes of a window
 +@var{window}.  If @var{window} is omitted or @code{nil}, the selected
 +window is used.  The value has the form @code{(@var{left-width}
 +@var{right-width} @var{outside-margins})}.
 +@end defun
 +
 +
 +@node Fringe Indicators
 +@subsection Fringe Indicators
 +@cindex fringe indicators
 +@cindex indicators, fringe
 +
 +  The @dfn{fringe indicators} are tiny icons Emacs displays in the
 +window fringe (on a graphic display) to indicate truncated or
 +continued lines, buffer boundaries, overlay arrow, etc.
 +
 +@defopt indicate-empty-lines
 +@cindex fringes, and empty line indication
 +When this is non-@code{nil}, Emacs displays a special glyph in the
 +fringe of each empty line at the end of the buffer, on graphical
 +displays.  @xref{Fringes}.  This variable is automatically
 +buffer-local in every buffer.
 +@end defopt
 +
 +@defvar indicate-buffer-boundaries
 +This buffer-local variable controls how the buffer boundaries and
 +window scrolling are indicated in the window fringes.
 +
 +Emacs can indicate the buffer boundaries---that is, the first and last
 +line in the buffer---with angle icons when they appear on the screen.
 +In addition, Emacs can display an up-arrow in the fringe to show
 +that there is text above the screen, and a down-arrow to show
 +there is text below the screen.
 +
 +There are three kinds of basic values:
 +
 +@table @asis
 +@item @code{nil}
 +Don't display any of these fringe icons.
 +@item @code{left}
 +Display the angle icons and arrows in the left fringe.
 +@item @code{right}
 +Display the angle icons and arrows in the right fringe.
 +@item any non-alist
 +Display the angle icons in the left fringe
 +and don't display the arrows.
 +@end table
 +
 +Otherwise the value should be an alist that specifies which fringe
 +indicators to display and where.  Each element of the alist should
 +have the form @code{(@var{indicator} . @var{position})}.  Here,
 +@var{indicator} is one of @code{top}, @code{bottom}, @code{up},
 +@code{down}, and @code{t} (which covers all the icons not yet
 +specified), while @var{position} is one of @code{left}, @code{right}
 +and @code{nil}.
 +
 +For example, @code{((top . left) (t . right))} places the top angle
 +bitmap in left fringe, and the bottom angle bitmap as well as both
 +arrow bitmaps in right fringe.  To show the angle bitmaps in the left
 +fringe, and no arrow bitmaps, use @code{((top .  left) (bottom . left))}.
 +@end defvar
 +
 +@defvar default-indicate-buffer-boundaries
 +The value of this variable is the default value for
 +@code{indicate-buffer-boundaries} in buffers that do not override it.
 +@end defvar
 +
 +@defvar fringe-indicator-alist
 +This buffer-local variable specifies the mapping from logical fringe
 +indicators to the actual bitmaps displayed in the window fringes.
 +
 +These symbols identify the logical fringe indicators:
 +
 +@table @asis
 +@item Truncation and continuation line indicators:
 +@code{truncation}, @code{continuation}.
 +
 +@item Buffer position indicators:
 +@code{up}, @code{down},
 +@code{top}, @code{bottom},
 +@code{top-bottom}.
 +
 +@item Empty line indicator:
 +@code{empty-line}.
 +
 +@item Overlay arrow indicator:
 +@code{overlay-arrow}.
 +
 +@item Unknown bitmap indicator:
 +@code{unknown}.
 +@end table
 +
 +  The value is an alist where each element @code{(@var{indicator} . @var{bitmaps})}
 +specifies the fringe bitmaps used to display a specific logical
 +fringe indicator.
 +
 +Here, @var{indicator} specifies the logical indicator type, and
 +@var{bitmaps} is list of symbols @code{(@var{left} @var{right}
 +[@var{left1} @var{right1}])} which specifies the actual bitmap shown
 +in the left or right fringe for the logical indicator.
 +
 +The @var{left} and @var{right} symbols specify the bitmaps shown in
 +the left and/or right fringe for the specific indicator.  The
 +@var{left1} or @var{right1} bitmaps are used only for the `bottom' and
 +`top-bottom indicators when the last (only) line in has no final
 +newline.  Alternatively, @var{bitmaps} may be a single symbol which is
 +used in both left and right fringes.
 +
 +When @code{fringe-indicator-alist} has a buffer-local value, and there
 +is no bitmap defined for a logical indicator, or the bitmap is
 +@code{t}, the corresponding value from the (non-local)
 +@code{default-fringe-indicator-alist} is used.
 +
 +To completely hide a specific indicator, set the bitmap to @code{nil}.
 +@end defvar
 +
 +@defvar default-fringe-indicator-alist
 +The value of this variable is the default value for
 +@code{fringe-indicator-alist} in buffers that do not override it.
 +@end defvar
 +
 +Standard fringe bitmaps for indicators:
 +@example
 +left-arrow right-arrow up-arrow down-arrow
 +left-curly-arrow right-curly-arrow
 +left-triangle right-triangle
 +top-left-angle top-right-angle
 +bottom-left-angle bottom-right-angle
 +left-bracket right-bracket
 +filled-rectangle hollow-rectangle
 +filled-square hollow-square
 +vertical-bar horizontal-bar
 +empty-line question-mark
 +@end example
 +
 +@node Fringe Cursors
 +@subsection Fringe Cursors
 +@cindex fringe cursors
 +@cindex cursor, fringe
 +
 +  When a line is exactly as wide as the window, Emacs displays the
 +cursor in the right fringe instead of using two lines.  Different
 +bitmaps are used to represent the cursor in the fringe depending on
 +the current buffer's cursor type.
 +
 +@table @asis
 +@item Logical cursor types:
 +@code{box} , @code{hollow}, @code{bar},
 +@code{hbar}, @code{hollow-small}.
 +@end table
 +
 +The @code{hollow-small} type is used instead of @code{hollow} when the
 +normal @code{hollow-rectangle} bitmap is too tall to fit on a specific
 +display line.
 +
 +@defvar overflow-newline-into-fringe
 +If this is non-@code{nil}, lines exactly as wide as the window (not
 +counting the final newline character) are not continued.  Instead,
 +when point is at the end of the line, the cursor appears in the right
 +fringe.
 +@end defvar
 +
 +@defvar fringe-cursor-alist
 +This variable specifies the mapping from logical cursor type to the
 +actual fringe bitmaps displayed in the right fringe.  The value is an
 +alist where each element @code{(@var{cursor} . @var{bitmap})} specifies
 +the fringe bitmaps used to display a specific logical cursor type in
 +the fringe.  Here, @var{cursor} specifies the logical cursor type and
 +@var{bitmap} is a symbol specifying the fringe bitmap to be displayed
 +for that logical cursor type.
 +
 +When @code{fringe-cursor-alist} has a buffer-local value, and there is
 +no bitmap defined for a cursor type, the corresponding value from the
 +(non-local) @code{default-fringes-indicator-alist} is used.
 +@end defvar
 +
 +@defvar default-fringes-cursor-alist
 +The value of this variable is the default value for
 +@code{fringe-cursor-alist} in buffers that do not override it.
 +@end defvar
 +
 +Standard bitmaps for displaying the cursor in right fringe:
 +@example
 +filled-rectangle hollow-rectangle filled-square hollow-square
 +vertical-bar horizontal-bar
 +@end example
 +
 +
 +@node Fringe Bitmaps
 +@subsection Fringe Bitmaps
 +@cindex fringe bitmaps
 +@cindex bitmaps, fringe
 +
 +  The @dfn{fringe bitmaps} are the actual bitmaps which represent the
 +logical fringe indicators for truncated or continued lines, buffer
 +boundaries, overlay arrow, etc.  Fringe bitmap symbols have their own
 +name space.  The fringe bitmaps are shared by all frames and windows.
 +You can redefine the built-in fringe bitmaps, and you can define new
 +fringe bitmaps.
 +
 +  The way to display a bitmap in the left or right fringes for a given
 +line in a window is by specifying the @code{display} property for one
 +of the characters that appears in it.  Use a display specification of
 +the form @code{(left-fringe @var{bitmap} [@var{face}])} or
 +@code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display
 +Property}).  Here, @var{bitmap} is a symbol identifying the bitmap you
 +want, and @var{face} (which is optional) is the name of the face whose
 +colors should be used for displaying the bitmap, instead of the
 +default @code{fringe} face.  @var{face} is automatically merged with
 +the @code{fringe} face, so normally @var{face} need only specify the
 +foreground color for the bitmap.
 +
 +@defun fringe-bitmaps-at-pos &optional pos window
 +This function returns the fringe bitmaps of the display line
 +containing position @var{pos} in window @var{window}.  The return
 +value has the form @code{(@var{left} @var{right} @var{ov})}, where @var{left}
 +is the symbol for the fringe bitmap in the left fringe (or @code{nil}
 +if no bitmap), @var{right} is similar for the right fringe, and @var{ov}
 +is non-@code{nil} if there is an overlay arrow in the left fringe.
 +
 +The value is @code{nil} if @var{pos} is not visible in @var{window}.
 +If @var{window} is @code{nil}, that stands for the selected window.
 +If @var{pos} is @code{nil}, that stands for the value of point in
 +@var{window}.
 +@end defun
 +
 +@node Customizing Bitmaps
 +@subsection Customizing Fringe Bitmaps
 +
 +@defun define-fringe-bitmap bitmap bits &optional height width align
 +This function defines the symbol @var{bitmap} as a new fringe bitmap,
 +or replaces an existing bitmap with that name.
 +
 +The argument @var{bits} specifies the image to use.  It should be
 +either a string or a vector of integers, where each element (an
 +integer) corresponds to one row of the bitmap.  Each bit of an integer
 +corresponds to one pixel of the bitmap, where the low bit corresponds
 +to the rightmost pixel of the bitmap.
 +
 +The height is normally the length of @var{bits}.  However, you
 +can specify a different height with non-@code{nil} @var{height}.  The width
 +is normally 8, but you can specify a different width with non-@code{nil}
 +@var{width}.  The width must be an integer between 1 and 16.
 +
 +The argument @var{align} specifies the positioning of the bitmap
 +relative to the range of rows where it is used; the default is to
 +center the bitmap.  The allowed values are @code{top}, @code{center},
 +or @code{bottom}.
 +
 +The @var{align} argument may also be a list @code{(@var{align}
 +@var{periodic})} where @var{align} is interpreted as described above.
 +If @var{periodic} is non-@code{nil}, it specifies that the rows in
 +@code{bits} should be repeated enough times to reach the specified
 +height.
 +@end defun
 +
 +@defun destroy-fringe-bitmap bitmap
 +This function destroy the fringe bitmap identified by @var{bitmap}.
 +If @var{bitmap} identifies a standard fringe bitmap, it actually
 +restores the standard definition of that bitmap, instead of
 +eliminating it entirely.
 +@end defun
 +
 +@defun set-fringe-bitmap-face bitmap &optional face
 +This sets the face for the fringe bitmap @var{bitmap} to @var{face}.
 +If @var{face} is @code{nil}, it selects the @code{fringe} face.  The
 +bitmap's face controls the color to draw it in.
 +
 +@var{face} is merged with the @code{fringe} face, so normally
 +@var{face} should specify only the foreground color.
 +@end defun
 +
 +@node Overlay Arrow
 +@subsection The Overlay Arrow
 +@c @cindex overlay arrow  Duplicates variable names
 +
 +  The @dfn{overlay arrow} is useful for directing the user's attention
 +to a particular line in a buffer.  For example, in the modes used for
 +interface to debuggers, the overlay arrow indicates the line of code
 +about to be executed.  This feature has nothing to do with
 +@dfn{overlays} (@pxref{Overlays}).
 +
 +@defvar overlay-arrow-string
 +This variable holds the string to display to call attention to a
 +particular line, or @code{nil} if the arrow feature is not in use.
 +On a graphical display the contents of the string are ignored; instead a
 +glyph is displayed in the fringe area to the left of the display area.
 +@end defvar
 +
 +@defvar overlay-arrow-position
 +This variable holds a marker that indicates where to display the overlay
 +arrow.  It should point at the beginning of a line.  On a non-graphical
 +display the arrow text
 +appears at the beginning of that line, overlaying any text that would
 +otherwise appear.  Since the arrow is usually short, and the line
 +usually begins with indentation, normally nothing significant is
 +overwritten.
 +
 +The overlay-arrow string is displayed in any given buffer if the value
 +of @code{overlay-arrow-position} in that buffer points into that
 +buffer.  Thus, it is possible to display multiple overlay arrow strings
 +by creating buffer-local bindings of @code{overlay-arrow-position}.
 +However, it is usually cleaner to use
 +@code{overlay-arrow-variable-list} to achieve this result.
 +@c !!! overlay-arrow-position: but the overlay string may remain in the display
 +@c of some other buffer until an update is required.  This should be fixed
 +@c now.  Is it?
 +@end defvar
 +
 +  You can do a similar job by creating an overlay with a
 +@code{before-string} property.  @xref{Overlay Properties}.
 +
 +  You can define multiple overlay arrows via the variable
 +@code{overlay-arrow-variable-list}.
 +
 +@defvar overlay-arrow-variable-list
 +This variable's value is a list of variables, each of which specifies
 +the position of an overlay arrow.  The variable
 +@code{overlay-arrow-position} has its normal meaning because it is on
 +this list.
 +@end defvar
 +
 +Each variable on this list can have properties
 +@code{overlay-arrow-string} and @code{overlay-arrow-bitmap} that
 +specify an overlay arrow string (for text-only terminals) or fringe
 +bitmap (for graphical terminals) to display at the corresponding
 +overlay arrow position.  If either property is not set, the default
 +@code{overlay-arrow-string} or @code{overlay-arrow} fringe indicator
 +is used.
 +
 +@node Scroll Bars
 +@section Scroll Bars
 +@cindex scroll bars
 +
 +Normally the frame parameter @code{vertical-scroll-bars} controls
 +whether the windows in the frame have vertical scroll bars, and
 +whether they are on the left or right.  The frame parameter
 +@code{scroll-bar-width} specifies how wide they are (@code{nil}
 +meaning the default).  @xref{Layout Parameters}.
 +
 +@defun frame-current-scroll-bars &optional frame
 +This function reports the scroll bar type settings for frame
 +@var{frame}.  The value is a cons cell
 +@code{(@var{vertical-type} .@: @var{horizontal-type})}, where
 +@var{vertical-type} is either @code{left}, @code{right}, or @code{nil}
 +(which means no scroll bar.)  @var{horizontal-type} is meant to
 +specify the horizontal scroll bar type, but since they are not
 +implemented, it is always @code{nil}.
 +@end defun
 +
 +@vindex vertical-scroll-bar
 +  You can enable or disable scroll bars for a particular buffer,
 +by setting the variable @code{vertical-scroll-bar}.  This variable
 +automatically becomes buffer-local when set.  The possible values are
 +@code{left}, @code{right}, @code{t}, which means to use the
 +frame's default, and @code{nil} for no scroll bar.
 +
 +  You can also control this for individual windows.  Call the function
 +@code{set-window-scroll-bars} to specify what to do for a specific window:
 +
 +@defun set-window-scroll-bars window width &optional vertical-type horizontal-type
 +This function sets the width and type of scroll bars for window
 +@var{window}.
 +
 +@var{width} specifies the scroll bar width in pixels (@code{nil} means
 +use the width specified for the frame).  @var{vertical-type} specifies
 +whether to have a vertical scroll bar and, if so, where.  The possible
 +values are @code{left}, @code{right} and @code{nil}, just like the
 +values of the @code{vertical-scroll-bars} frame parameter.
 +
 +The argument @var{horizontal-type} is meant to specify whether and
 +where to have horizontal scroll bars, but since they are not
 +implemented, it has no effect.  If @var{window} is @code{nil}, the
 +selected window is used.
 +@end defun
 +
 +@defun window-scroll-bars &optional window
 +Report the width and type of scroll bars specified for @var{window}.
 +If @var{window} is omitted or @code{nil}, the selected window is used.
 +The value is a list of the form @code{(@var{width}
 +@var{cols} @var{vertical-type} @var{horizontal-type})}.  The value
 +@var{width} is the value that was specified for the width (which may
 +be @code{nil}); @var{cols} is the number of columns that the scroll
 +bar actually occupies.
 +
 +@var{horizontal-type} is not actually meaningful.
 +@end defun
 +
 +If you don't specify these values for a window with
 +@code{set-window-scroll-bars}, the buffer-local variables
 +@code{scroll-bar-mode} and @code{scroll-bar-width} in the buffer being
 +displayed control the window's vertical scroll bars.  The function
 +@code{set-window-buffer} examines these variables.  If you change them
 +in a buffer that is already visible in a window, you can make the
 +window take note of the new values by calling @code{set-window-buffer}
 +specifying the same buffer that is already displayed.
 +
 +@defvar scroll-bar-mode
 +This variable, always local in all buffers, controls whether and where
 +to put scroll bars in windows displaying the buffer.  The possible values
 +are @code{nil} for no scroll bar, @code{left} to put a scroll bar on
 +the left, and @code{right} to put a scroll bar on the right.
 +@end defvar
 +
 +@defun window-current-scroll-bars &optional window
 +This function reports the scroll bar type for window @var{window}.
 +If @var{window} is omitted or @code{nil}, the selected window is used.
 +The value is a cons cell
 +@code{(@var{vertical-type} .@: @var{horizontal-type})}.  Unlike
 +@code{window-scroll-bars}, this reports the scroll bar type actually
 +used, once frame defaults and @code{scroll-bar-mode} are taken into
 +account.
 +@end defun
 +
 +@defvar scroll-bar-width
 +This variable, always local in all buffers, specifies the width of the
 +buffer's scroll bars, measured in pixels.  A value of @code{nil} means
 +to use the value specified by the frame.
 +@end defvar
 +
 +@node Display Property
 +@section The @code{display} Property
 +@cindex display specification
 +@kindex display @r{(text property)}
 +
 +  The @code{display} text property (or overlay property) is used to
 +insert images into text, and also control other aspects of how text
 +displays.  The value of the @code{display} property should be a
 +display specification, or a list or vector containing several display
- display instead of the text that has the property.  If a list of
- display specifications includes more than one of this kind, the first
- is effective and the rest are ignored.  You cannot interactively move
- point into the middle of the text that is thus replaced.
-   For these specifications, ``the text that has the property'' means
- all the consecutive characters that have the same Lisp object as their
- @code{display} property; these characters are replaced as a single
- unit.  By contrast, characters that have similar but distinct Lisp
- objects as their @code{display} properties are handled separately.
- Here's a function that illustrates this point:
++specifications.  Display specifications in the same @code{display}
++property value generally apply in parallel to the text they cover.
++
++  If several sources (overlays and/or a text property) specify values
++for the @code{display} property, only one of the values takes effect,
++following the rules of @code{get-char-property}.  @xref{Examining
++Properties}.
++
++  The rest of this section describes several kinds of
++display specifications and what they mean.
++
++@menu
++* Replacing Specs::      Display specs that replace the text.
++* Specified Space::      Displaying one space with a specified width.
++* Pixel Specification::  Specifying space width or height in pixels.
++* Other Display Specs::  Displaying an image; magnifying text; moving it
++                          up or down on the page; adjusting the width
++                          of spaces within text.
++* Display Margins::     Displaying text or images to the side of the main text.
++@end menu
++
++@node Replacing Specs
++@subsection Display Specs That Replace The Text
 +
 +  Some kinds of @code{display} specifications specify something to
-   The rest of this section describes several kinds of
- display specifications and what they mean.
- @menu
- * Specified Space::      Displaying one space with a specified width.
- * Pixel Specification::  Specifying space width or height in pixels.
- * Other Display Specs::  Displaying an image; magnifying text; moving it
-                           up or down on the page; adjusting the width
-                           of spaces within text.
- * Display Margins::     Displaying text or images to the side of the main text.
- @end menu
++display instead of the text that has the property.  These are called
++@dfn{replacing} display specifications.  Emacs does not allow the user
++to interactively move point into the middle of buffer text that is
++replaced in this way.
++
++  If a list of display specifications includes more than one replacing
++display specification, the first overrides the rest.  Replacing
++display specifications make most other display specifications
++irrelevant, since those don't apply to the replacement.
++
++  For replacing display specifications, ``the text that has the
++property'' means all the consecutive characters that have the same
++Lisp object as their @code{display} property; these characters are
++replaced as a single unit.  By contrast, characters that have similar
++but distinct Lisp objects as their @code{display} properties are
++handled separately.  Here's a function that illustrates this point:
 +
 +@smallexample
 +(defun foo ()
 +  (goto-char (point-min))
 +  (dotimes (i 5)
 +    (let ((string (concat "A")))
 +      (put-text-property (point) (1+ (point)) 'display string)
 +      (forward-char 1)
 +      (put-text-property (point) (1+ (point)) 'display string)
 +      (forward-char 1))))
 +@end smallexample
 +
 +@noindent
 +It gives each of the first ten characters in the buffer string
 +@code{"A"} as the @code{display} property, but they don't all get the
 +same string.  The first two characters get the same string, so they
 +together are replaced with one @samp{A}.  The next two characters get
 +a second string, so they together are replaced with one @samp{A}.
 +Likewise for each following pair of characters.  Thus, the ten
 +characters appear as five A's.  This function would have the same
 +results:
 +
 +@smallexample
 +(defun foo ()
 +  (goto-char (point-min))
 +  (dotimes (i 5)
 +    (let ((string (concat "A")))
 +      (put-text-property (point) (+ 2 (point)) 'display string)
 +      (put-text-property (point) (1+ (point)) 'display string)
 +      (forward-char 2))))
 +@end smallexample
 +
 +@noindent
 +This illustrates that what matters is the property value for
 +each character.  If two consecutive characters have the same
 +object as the @code{display} property value, it's irrelevant
 +whether they got this property from a single call to
 +@code{put-text-property} or from two different calls.
 +
-   A buffer can have blank areas called @dfn{display margins} on the left
- and on the right.  Ordinary text never appears in these areas, but you
- can put things into the display margins using the @code{display}
- property.
-   To put text in the left or right display margin of the window, use a
- display specification of the form @code{(margin right-margin)} or
- @code{(margin left-margin)} on it.  To put an image in a display margin,
- use that display specification along with the display specification for
- the image.  Unfortunately, there is currently no way to make
- text or images in the margin mouse-sensitive.
-   If you put such a display specification directly on text in the
- buffer, the specified margin display appears @emph{instead of} that
- buffer text itself.  To put something in the margin @emph{in
- association with} certain buffer text without preventing or altering
- the display of that text, put a @code{before-string} property on the
- text and put the display specification on the contents of the
- before-string.
 +@node Specified Space
 +@subsection Specified Spaces
 +@cindex spaces, specified height or width
 +@cindex variable-width spaces
 +
 +  To display a space of specified width and/or height, use a display
 +specification of the form @code{(space . @var{props})}, where
 +@var{props} is a property list (a list of alternating properties and
 +values).  You can put this property on one or more consecutive
 +characters; a space of the specified height and width is displayed in
 +place of @emph{all} of those characters.  These are the properties you
 +can use in @var{props} to specify the weight of the space:
 +
 +@table @code
 +@item :width @var{width}
 +If @var{width} is an integer or floating point number, it specifies
 +that the space width should be @var{width} times the normal character
 +width.  @var{width} can also be a @dfn{pixel width} specification
 +(@pxref{Pixel Specification}).
 +
 +@item :relative-width @var{factor}
 +Specifies that the width of the stretch should be computed from the
 +first character in the group of consecutive characters that have the
 +same @code{display} property.  The space width is the width of that
 +character, multiplied by @var{factor}.
 +
 +@item :align-to @var{hpos}
 +Specifies that the space should be wide enough to reach @var{hpos}.
 +If @var{hpos} is a number, it is measured in units of the normal
 +character width.  @var{hpos} can also be a @dfn{pixel width}
 +specification (@pxref{Pixel Specification}).
 +@end table
 +
 +  You should use one and only one of the above properties.  You can
 +also specify the height of the space, with these properties:
 +
 +@table @code
 +@item :height @var{height}
 +Specifies the height of the space.
 +If @var{height} is an integer or floating point number, it specifies
 +that the space height should be @var{height} times the normal character
 +height.  The @var{height} may also be a @dfn{pixel height} specification
 +(@pxref{Pixel Specification}).
 +
 +@item :relative-height @var{factor}
 +Specifies the height of the space, multiplying the ordinary height
 +of the text having this display specification by @var{factor}.
 +
 +@item :ascent @var{ascent}
 +If the value of @var{ascent} is a non-negative number no greater than
 +100, it specifies that @var{ascent} percent of the height of the space
 +should be considered as the ascent of the space---that is, the part
 +above the baseline.  The ascent may also be specified in pixel units
 +with a @dfn{pixel ascent} specification (@pxref{Pixel Specification}).
 +
 +@end table
 +
 +  Don't use both @code{:height} and @code{:relative-height} together.
 +
 +  The @code{:width} and @code{:align-to} properties are supported on
 +non-graphic terminals, but the other space properties in this section
 +are not.
 +
 +@node Pixel Specification
 +@subsection Pixel Specification for Spaces
 +@cindex spaces, pixel specification
 +
 +  The value of the @code{:width}, @code{:align-to}, @code{:height},
 +and @code{:ascent} properties can be a special kind of expression that
 +is evaluated during redisplay.  The result of the evaluation is used
 +as an absolute number of pixels.
 +
 +  The following expressions are supported:
 +
 +@smallexample
 +@group
 +  @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form}
 +  @var{num}  ::= @var{integer} | @var{float} | @var{symbol}
 +  @var{unit} ::= in | mm | cm | width | height
 +@end group
 +@group
 +  @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
 +        |  scroll-bar | text
 +  @var{pos}  ::= left | center | right
 +  @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
 +  @var{op}   ::= + | -
 +@end group
 +@end smallexample
 +
 +  The form @var{num} specifies a fraction of the default frame font
 +height or width.  The form @code{(@var{num})} specifies an absolute
 +number of pixels.  If @var{num} is a symbol, @var{symbol}, its
 +buffer-local variable binding is used.
 +
 +  The @code{in}, @code{mm}, and @code{cm} units specify the number of
 +pixels per inch, millimeter, and centimeter, respectively.  The
 +@code{width} and @code{height} units correspond to the default width
 +and height of the current face.  An image specification @code{image}
 +corresponds to the width or height of the image.
 +
 +  The @code{left-fringe}, @code{right-fringe}, @code{left-margin},
 +@code{right-margin}, @code{scroll-bar}, and @code{text} elements
 +specify to the width of the corresponding area of the window.
 +
 +  The @code{left}, @code{center}, and @code{right} positions can be
 +used with @code{:align-to} to specify a position relative to the left
 +edge, center, or right edge of the text area.
 +
 +  Any of the above window elements (except @code{text}) can also be
 +used with @code{:align-to} to specify that the position is relative to
 +the left edge of the given area.  Once the base offset for a relative
 +position has been set (by the first occurrence of one of these
 +symbols), further occurrences of these symbols are interpreted as the
 +width of the specified area.  For example, to align to the center of
 +the left-margin, use
 +
 +@example
 +:align-to (+ left-margin (0.5 . left-margin))
 +@end example
 +
 +  If no specific base offset is set for alignment, it is always relative
 +to the left edge of the text area.  For example, @samp{:align-to 0} in a
 +header-line aligns with the first text column in the text area.
 +
 +  A value of the form @code{(@var{num} . @var{expr})} stands for the
 +product of the values of @var{num} and @var{expr}.  For example,
 +@code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 .
 +@var{image})} specifies half the width (or height) of the specified
 +image.
 +
 +  The form @code{(+ @var{expr} ...)} adds up the value of the
 +expressions.  The form @code{(- @var{expr} ...)} negates or subtracts
 +the value of the expressions.
 +
 +@node Other Display Specs
 +@subsection Other Display Specifications
 +
 +  Here are the other sorts of display specifications that you can use
 +in the @code{display} text property.
 +
 +@table @code
 +@item @var{string}
 +Display @var{string} instead of the text that has this property.
 +
 +Recursive display specifications are not supported---@var{string}'s
 +@code{display} properties, if any, are not used.
 +
 +@item (image . @var{image-props})
 +This kind of display specification is an image descriptor (@pxref{Images}).
 +When used as a display specification, it means to display the image
 +instead of the text that has the display specification.
 +
 +@item (slice @var{x} @var{y} @var{width} @var{height})
 +This specification together with @code{image} specifies a @dfn{slice}
 +(a partial area) of the image to display.  The elements @var{y} and
 +@var{x} specify the top left corner of the slice, within the image;
 +@var{width} and @var{height} specify the width and height of the
 +slice.  Integer values are numbers of pixels.  A floating point number
 +in the range 0.0--1.0 stands for that fraction of the width or height
 +of the entire image.
 +
 +@item ((margin nil) @var{string})
 +A display specification of this form means to display @var{string}
 +instead of the text that has the display specification, at the same
 +position as that text.  It is equivalent to using just @var{string},
 +but it is done as a special case of marginal display (@pxref{Display
 +Margins}).
 +
 +@item (space-width @var{factor})
 +This display specification affects all the space characters within the
 +text that has the specification.  It displays all of these spaces
 +@var{factor} times as wide as normal.  The element @var{factor} should
 +be an integer or float.  Characters other than spaces are not affected
 +at all; in particular, this has no effect on tab characters.
 +
 +@item (height @var{height})
 +This display specification makes the text taller or shorter.
 +Here are the possibilities for @var{height}:
 +
 +@table @asis
 +@item @code{(+ @var{n})}
 +This means to use a font that is @var{n} steps larger.  A ``step'' is
 +defined by the set of available fonts---specifically, those that match
 +what was otherwise specified for this text, in all attributes except
 +height.  Each size for which a suitable font is available counts as
 +another step.  @var{n} should be an integer.
 +
 +@item @code{(- @var{n})}
 +This means to use a font that is @var{n} steps smaller.
 +
 +@item a number, @var{factor}
 +A number, @var{factor}, means to use a font that is @var{factor} times
 +as tall as the default font.
 +
 +@item a symbol, @var{function}
 +A symbol is a function to compute the height.  It is called with the
 +current height as argument, and should return the new height to use.
 +
 +@item anything else, @var{form}
 +If the @var{height} value doesn't fit the previous possibilities, it is
 +a form.  Emacs evaluates it to get the new height, with the symbol
 +@code{height} bound to the current specified font height.
 +@end table
 +
 +@item (raise @var{factor})
 +This kind of display specification raises or lowers the text
 +it applies to, relative to the baseline of the line.
 +
 +@var{factor} must be a number, which is interpreted as a multiple of the
 +height of the affected text.  If it is positive, that means to display
 +the characters raised.  If it is negative, that means to display them
 +lower down.
 +
 +If the text also has a @code{height} display specification, that does
 +not affect the amount of raising or lowering, which is based on the
 +faces used for the text.
 +@end table
 +
 +@c We put all the `@code{(when ...)}' on one line to encourage
 +@c makeinfo's end-of-sentence heuristics to DTRT.  Previously, the dot
 +@c was at eol; the info file ended up w/ two spaces rendered after it.
 +  You can make any display specification conditional.  To do that,
 +package it in another list of the form
 +@code{(when @var{condition} . @var{spec})}.
 +Then the specification @var{spec} applies only when
 +@var{condition} evaluates to a non-@code{nil} value.  During the
 +evaluation, @code{object} is bound to the string or buffer having the
 +conditional @code{display} property.  @code{position} and
 +@code{buffer-position} are bound to the position within @code{object}
 +and the buffer position where the @code{display} property was found,
 +respectively.  Both positions can be different when @code{object} is a
 +string.
 +
 +@node Display Margins
 +@subsection Displaying in the Margins
 +@cindex display margins
 +@cindex margins, display
 +
++  A buffer can have blank areas called @dfn{display margins} on the
++left and on the right.  Ordinary text never appears in these areas,
++but you can put things into the display margins using the
++@code{display} property.  There is currently no way to make text or
++images in the margin mouse-sensitive.
++
++  The way to display something in the margins is to specify it in a
++margin display specification in the @code{display} property of some
++text.  This is a replacing display specification, meaning that the
++text you put it on does not get displayed; the margin display appears,
++but that text does not.
++
++  A margin display specification looks like @code{((margin
++right-margin) @var{spec}} or @code{((margin left-margin) @var{spec})}.
++Here, @var{spec} is another display specification that says what to
++display in the margin.  Typically it is a string of text to display,
++or an image descriptor.
++
++  To display something in the margin @emph{in association with}
++certain buffer text, without altering or preventing the display of
++that text, put a @code{before-string} property on the text and put the
++margin display specification on the contents of the before-string.
 +
 +  Before the display margins can display anything, you must give
 +them a nonzero width.  The usual way to do that is to set these
 +variables:
 +
 +@defvar left-margin-width
 +This variable specifies the width of the left margin.
 +It is buffer-local in all buffers.
 +@end defvar
 +
 +@defvar right-margin-width
 +This variable specifies the width of the right margin.
 +It is buffer-local in all buffers.
 +@end defvar
 +
 +  Setting these variables does not immediately affect the window.  These
 +variables are checked when a new buffer is displayed in the window.
 +Thus, you can make changes take effect by calling
 +@code{set-window-buffer}.
 +
 +  You can also set the margin widths immediately.
 +
 +@defun set-window-margins window left &optional right
 +This function specifies the margin widths for window @var{window}.
 +The argument @var{left} controls the left margin and
 +@var{right} controls the right margin (default @code{0}).
 +@end defun
 +
 +@defun window-margins &optional window
 +This function returns the left and right margins of @var{window}
 +as a cons cell of the form @code{(@var{left} . @var{right})}.
 +If @var{window} is @code{nil}, the selected window is used.
 +@end defun
 +
 +@node Images
 +@section Images
 +@cindex images in buffers
 +
 +  To display an image in an Emacs buffer, you must first create an image
 +descriptor, then use it as a display specifier in the @code{display}
 +property of text that is displayed (@pxref{Display Property}).
 +
 +  Emacs is usually able to display images when it is run on a
 +graphical terminal.  Images cannot be displayed in a text terminal, on
 +certain graphical terminals that lack the support for this, or if
 +Emacs is compiled without image support.  You can use the function
 +@code{display-images-p} to determine if images can in principle be
 +displayed (@pxref{Display Feature Testing}).
 +
 +@menu
 +* Image Formats::       Supported image formats.
 +* Image Descriptors::   How to specify an image for use in @code{:display}.
 +* XBM Images::          Special features for XBM format.
 +* XPM Images::          Special features for XPM format.
 +* GIF Images::          Special features for GIF format.
 +* PostScript Images::   Special features for PostScript format.
 +* Other Image Types::   Various other formats are supported.
 +* Defining Images::     Convenient ways to define an image for later use.
 +* Showing Images::      Convenient ways to display an image once it is defined.
 +* Image Cache::         Internal mechanisms of image display.
 +@end menu
 +
 +@node Image Formats
 +@subsection Image Formats
 +@cindex image formats
 +@cindex image types
 +
 +  Emacs can display a number of different image formats; some of them
 +are supported only if particular support libraries are installed on
 +your machine.  In some environments, Emacs can load image
 +libraries on demand; if so, the variable @code{image-library-alist}
 +can be used to modify the set of known names for these dynamic
 +libraries (though it is not possible to add new image formats).
 +
 +  The supported image formats include XBM, XPM (this requires the
 +libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
 +@code{libungif} 4.1.0), PostScript, PBM, JPEG (requiring the
 +@code{libjpeg} library version v6a), TIFF (requiring @code{libtiff}
 +v3.4), PNG (requiring @code{libpng} 1.0.2), and SVG (requiring
 +@code{librsvg} 2.0.0).
 +
 +  You specify one of these formats with an image type symbol.  The image
 +type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript},
 +@code{pbm}, @code{jpeg}, @code{tiff}, @code{png}, and @code{svg}.
 +
 +@defvar image-types
 +This variable contains a list of those image type symbols that are
 +potentially supported in the current configuration.
 +@emph{Potentially} here means that Emacs knows about the image types,
 +not necessarily that they can be loaded (they could depend on
 +unavailable dynamic libraries, for example).
 +
 +To know which image types are really available, use
 +@code{image-type-available-p}.
 +@end defvar
 +
 +@defvar image-library-alist
 +This in an alist of image types vs external libraries needed to
 +display them.
 +
 +Each element is a list @code{(@var{image-type} @var{library}...)},
 +where the car is a supported image format from @code{image-types}, and
 +the rest are strings giving alternate filenames for the corresponding
 +external libraries to load.
 +
 +Emacs tries to load the libraries in the order they appear on the
 +list; if none is loaded, the running session of Emacs won't support
 +the image type.  @code{pbm} and @code{xbm} don't need to be listed;
 +they're always supported.
 +
 +This variable is ignored if the image libraries are statically linked
 +into Emacs.
 +@end defvar
 +
 +@defun image-type-available-p type
 +This function returns non-@code{nil} if image type @var{type} is
 +available, i.e., if images of this type can be loaded and displayed in
 +Emacs.  @var{type} should be one of the types contained in
 +@code{image-types}.
 +
 +For image types whose support libraries are statically linked, this
 +function always returns @code{t}; for other image types, it returns
 +@code{t} if the dynamic library could be loaded, @code{nil} otherwise.
 +@end defun
 +
 +@node Image Descriptors
 +@subsection Image Descriptors
 +@cindex image descriptor
 +
 +  An image description is a list of the form @code{(image . @var{props})},
 +where @var{props} is a property list containing alternating keyword
 +symbols (symbols whose names start with a colon) and their values.
 +You can use any Lisp object as a property, but the only properties
 +that have any special meaning are certain symbols, all of them keywords.
 +
 +  Every image descriptor must contain the property @code{:type
 +@var{type}} to specify the format of the image.  The value of @var{type}
 +should be an image type symbol; for example, @code{xpm} for an image in
 +XPM format.
 +
 +  Here is a list of other properties that are meaningful for all image
 +types:
 +
 +@table @code
 +@item :file @var{file}
 +The @code{:file} property says to load the image from file
 +@var{file}.  If @var{file} is not an absolute file name, it is expanded
 +in @code{data-directory}.
 +
 +@item :data @var{data}
 +The @code{:data} property says the actual contents of the image.
 +Each image must use either @code{:data} or @code{:file}, but not both.
 +For most image types, the value of the @code{:data} property should be a
 +string containing the image data; we recommend using a unibyte string.
 +
 +Before using @code{:data}, look for further information in the section
 +below describing the specific image format.  For some image types,
 +@code{:data} may not be supported; for some, it allows other data types;
 +for some, @code{:data} alone is not enough, so you need to use other
 +image properties along with @code{:data}.
 +
 +@item :margin @var{margin}
 +The @code{:margin} property specifies how many pixels to add as an
 +extra margin around the image.  The value, @var{margin}, must be a
 +non-negative number, or a pair @code{(@var{x} . @var{y})} of such
 +numbers.  If it is a pair, @var{x} specifies how many pixels to add
 +horizontally, and @var{y} specifies how many pixels to add vertically.
 +If @code{:margin} is not specified, the default is zero.
 +
 +@item :ascent @var{ascent}
 +The @code{:ascent} property specifies the amount of the image's
 +height to use for its ascent---that is, the part above the baseline.
 +The value, @var{ascent}, must be a number in the range 0 to 100, or
 +the symbol @code{center}.
 +
 +If @var{ascent} is a number, that percentage of the image's height is
 +used for its ascent.
 +
 +If @var{ascent} is @code{center}, the image is vertically centered
 +around a centerline which would be the vertical centerline of text drawn
 +at the position of the image, in the manner specified by the text
 +properties and overlays that apply to the image.
 +
 +If this property is omitted, it defaults to 50.
 +
 +@item :relief @var{relief}
 +The @code{:relief} property, if non-@code{nil}, adds a shadow rectangle
 +around the image.  The value, @var{relief}, specifies the width of the
 +shadow lines, in pixels.  If @var{relief} is negative, shadows are drawn
 +so that the image appears as a pressed button; otherwise, it appears as
 +an unpressed button.
 +
 +@item :conversion @var{algorithm}
 +The @code{:conversion} property, if non-@code{nil}, specifies a
 +conversion algorithm that should be applied to the image before it is
 +displayed; the value, @var{algorithm}, specifies which algorithm.
 +
 +@table @code
 +@item laplace
 +@itemx emboss
 +Specifies the Laplace edge detection algorithm, which blurs out small
 +differences in color while highlighting larger differences.  People
 +sometimes consider this useful for displaying the image for a
 +``disabled'' button.
 +
 +@item (edge-detection :matrix @var{matrix} :color-adjust @var{adjust})
 +Specifies a general edge-detection algorithm.  @var{matrix} must be
 +either a nine-element list or a nine-element vector of numbers.  A pixel
 +at position @math{x/y} in the transformed image is computed from
 +original pixels around that position.  @var{matrix} specifies, for each
 +pixel in the neighborhood of @math{x/y}, a factor with which that pixel
 +will influence the transformed pixel; element @math{0} specifies the
 +factor for the pixel at @math{x-1/y-1}, element @math{1} the factor for
 +the pixel at @math{x/y-1} etc., as shown below:
 +@iftex
 +@tex
 +$$\pmatrix{x-1/y-1 & x/y-1  & x+1/y-1 \cr
 +   x-1/y  &   x/y &    x+1/y \cr
 +   x-1/y+1&   x/y+1 &  x+1/y+1 \cr}$$
 +@end tex
 +@end iftex
 +@ifnottex
 +@display
 +  (x-1/y-1  x/y-1  x+1/y-1
 +   x-1/y    x/y    x+1/y
 +   x-1/y+1  x/y+1  x+1/y+1)
 +@end display
 +@end ifnottex
 +
 +The resulting pixel is computed from the color intensity of the color
 +resulting from summing up the RGB values of surrounding pixels,
 +multiplied by the specified factors, and dividing that sum by the sum
 +of the factors' absolute values.
 +
 +Laplace edge-detection currently uses a matrix of
 +@iftex
 +@tex
 +$$\pmatrix{1 & 0 & 0 \cr
 +   0&  0 &  0 \cr
 +   9 & 9 & -1 \cr}$$
 +@end tex
 +@end iftex
 +@ifnottex
 +@display
 +  (1  0  0
 +   0  0  0
 +   9  9 -1)
 +@end display
 +@end ifnottex
 +
 +Emboss edge-detection uses a matrix of
 +@iftex
 +@tex
 +$$\pmatrix{ 2 & -1 &  0 \cr
 +   -1 &  0 &  1 \cr
 +    0  & 1 & -2 \cr}$$
 +@end tex
 +@end iftex
 +@ifnottex
 +@display
 +  ( 2 -1  0
 +   -1  0  1
 +    0  1 -2)
 +@end display
 +@end ifnottex
 +
 +@item disabled
 +Specifies transforming the image so that it looks ``disabled.''
 +@end table
 +
 +@item :mask @var{mask}
 +If @var{mask} is @code{heuristic} or @code{(heuristic @var{bg})}, build
 +a clipping mask for the image, so that the background of a frame is
 +visible behind the image.  If @var{bg} is not specified, or if @var{bg}
 +is @code{t}, determine the background color of the image by looking at
 +the four corners of the image, assuming the most frequently occurring
 +color from the corners is the background color of the image.  Otherwise,
 +@var{bg} must be a list @code{(@var{red} @var{green} @var{blue})}
 +specifying the color to assume for the background of the image.
 +
 +If @var{mask} is @code{nil}, remove a mask from the image, if it has
 +one.  Images in some formats include a mask which can be removed by
 +specifying @code{:mask nil}.
 +
 +@item :pointer @var{shape}
 +This specifies the pointer shape when the mouse pointer is over this
 +image.  @xref{Pointer Shape}, for available pointer shapes.
 +
 +@item :map @var{map}
 +This associates an image map of @dfn{hot spots} with this image.
 +
 +An image map is an alist where each element has the format
 +@code{(@var{area} @var{id} @var{plist})}.  An @var{area} is specified
 +as either a rectangle, a circle, or a polygon.
 +
 +A rectangle is a cons
 +@code{(rect . ((@var{x0} . @var{y0}) . (@var{x1} . @var{y1})))}
 +which specifies the pixel coordinates of the upper left and bottom right
 +corners of the rectangle area.
 +
 +A circle is a cons
 +@code{(circle . ((@var{x0} . @var{y0}) . @var{r}))}
 +which specifies the center and the radius of the circle; @var{r} may
 +be a float or integer.
 +
 +A polygon is a cons
 +@code{(poly . [@var{x0} @var{y0} @var{x1} @var{y1} ...])}
 +where each pair in the vector describes one corner in the polygon.
 +
 +When the mouse pointer lies on a hot-spot area of an image, the
 +@var{plist} of that hot-spot is consulted; if it contains a @code{help-echo}
 +property, that defines a tool-tip for the hot-spot, and if it contains
 +a @code{pointer} property, that defines the shape of the mouse cursor when
 +it is on the hot-spot.
 +@xref{Pointer Shape}, for available pointer shapes.
 +
 +When you click the mouse when the mouse pointer is over a hot-spot, an
 +event is composed by combining the @var{id} of the hot-spot with the
 +mouse event; for instance, @code{[area4 mouse-1]} if the hot-spot's
 +@var{id} is @code{area4}.
 +@end table
 +
 +@defun image-mask-p spec &optional frame
 +This function returns @code{t} if image @var{spec} has a mask bitmap.
 +@var{frame} is the frame on which the image will be displayed.
 +@var{frame} @code{nil} or omitted means to use the selected frame
 +(@pxref{Input Focus}).
 +@end defun
 +
 +@node XBM Images
 +@subsection XBM Images
 +@cindex XBM
 +
 +  To use XBM format, specify @code{xbm} as the image type.  This image
 +format doesn't require an external library, so images of this type are
 +always supported.
 +
 +  Additional image properties supported for the @code{xbm} image type are:
 +
 +@table @code
 +@item :foreground @var{foreground}
 +The value, @var{foreground}, should be a string specifying the image
 +foreground color, or @code{nil} for the default color.  This color is
 +used for each pixel in the XBM that is 1.  The default is the frame's
 +foreground color.
 +
 +@item :background @var{background}
 +The value, @var{background}, should be a string specifying the image
 +background color, or @code{nil} for the default color.  This color is
 +used for each pixel in the XBM that is 0.  The default is the frame's
 +background color.
 +@end table
 +
 +  If you specify an XBM image using data within Emacs instead of an
 +external file, use the following three properties:
 +
 +@table @code
 +@item :data @var{data}
 +The value, @var{data}, specifies the contents of the image.
 +There are three formats you can use for @var{data}:
 +
 +@itemize @bullet
 +@item
 +A vector of strings or bool-vectors, each specifying one line of the
 +image.  Do specify @code{:height} and @code{:width}.
 +
 +@item
 +A string containing the same byte sequence as an XBM file would contain.
 +You must not specify @code{:height} and @code{:width} in this case,
 +because omitting them is what indicates the data has the format of an
 +XBM file.  The file contents specify the height and width of the image.
 +
 +@item
 +A string or a bool-vector containing the bits of the image (plus perhaps
 +some extra bits at the end that will not be used).  It should contain at
 +least @var{width} * @code{height} bits.  In this case, you must specify
 +@code{:height} and @code{:width}, both to indicate that the string
 +contains just the bits rather than a whole XBM file, and to specify the
 +size of the image.
 +@end itemize
 +
 +@item :width @var{width}
 +The value, @var{width}, specifies the width of the image, in pixels.
 +
 +@item :height @var{height}
 +The value, @var{height}, specifies the height of the image, in pixels.
 +@end table
 +
 +@node XPM Images
 +@subsection XPM Images
 +@cindex XPM
 +
 +  To use XPM format, specify @code{xpm} as the image type.  The
 +additional image property @code{:color-symbols} is also meaningful with
 +the @code{xpm} image type:
 +
 +@table @code
 +@item :color-symbols @var{symbols}
 +The value, @var{symbols}, should be an alist whose elements have the
 +form @code{(@var{name} . @var{color})}.  In each element, @var{name} is
 +the name of a color as it appears in the image file, and @var{color}
 +specifies the actual color to use for displaying that name.
 +@end table
 +
 +@node GIF Images
 +@subsection GIF Images
 +@cindex GIF
 +
 +  For GIF images, specify image type @code{gif}.
 +
 +@table @code
 +@item :index @var{index}
 +You can use @code{:index} to specify one image from a GIF file that
 +contains more than one image.  This property specifies use of image
 +number @var{index} from the file.  If the GIF file doesn't contain an
 +image with index @var{index}, the image displays as a hollow box.
 +@end table
 +
 +@ignore
 +This could be used to implement limited support for animated GIFs.
 +For example, the following function displays a multi-image GIF file
 +at point-min in the current buffer, switching between sub-images
 +every 0.1 seconds.
 +
 +(defun show-anim (file max)
 +  "Display multi-image GIF file FILE which contains MAX subimages."
 +  (display-anim (current-buffer) file 0 max t))
 +
 +(defun display-anim (buffer file idx max first-time)
 +  (when (= idx max)
 +    (setq idx 0))
 +  (let ((img (create-image file nil :image idx)))
 +    (save-excursion
 +      (set-buffer buffer)
 +      (goto-char (point-min))
 +      (unless first-time (delete-char 1))
 +      (insert-image img))
 +    (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
 +@end ignore
 +
 +@node PostScript Images
 +@subsection PostScript Images
 +@cindex postscript images
 +
 +  To use PostScript for an image, specify image type @code{postscript}.
 +This works only if you have Ghostscript installed.  You must always use
 +these three properties:
 +
 +@table @code
 +@item :pt-width @var{width}
 +The value, @var{width}, specifies the width of the image measured in
 +points (1/72 inch).  @var{width} must be an integer.
 +
 +@item :pt-height @var{height}
 +The value, @var{height}, specifies the height of the image in points
 +(1/72 inch).  @var{height} must be an integer.
 +
 +@item :bounding-box @var{box}
 +The value, @var{box}, must be a list or vector of four integers, which
 +specifying the bounding box of the PostScript image, analogous to the
 +@samp{BoundingBox} comment found in PostScript files.
 +
 +@example
 +%%BoundingBox: 22 171 567 738
 +@end example
 +@end table
 +
 +  Displaying PostScript images from Lisp data is not currently
 +implemented, but it may be implemented by the time you read this.
 +See the @file{etc/NEWS} file to make sure.
 +
 +@node Other Image Types
 +@subsection Other Image Types
 +@cindex PBM
 +
 +  For PBM images, specify image type @code{pbm}.  Color, gray-scale and
 +monochromatic images are supported.   For mono PBM images, two additional
 +image properties are supported.
 +
 +@table @code
 +@item :foreground @var{foreground}
 +The value, @var{foreground}, should be a string specifying the image
 +foreground color, or @code{nil} for the default color.  This color is
 +used for each pixel in the XBM that is 1.  The default is the frame's
 +foreground color.
 +
 +@item :background @var{background}
 +The value, @var{background}, should be a string specifying the image
 +background color, or @code{nil} for the default color.  This color is
 +used for each pixel in the XBM that is 0.  The default is the frame's
 +background color.
 +@end table
 +
 +  For JPEG images, specify image type @code{jpeg}.
 +
 +  For TIFF images, specify image type @code{tiff}.
 +
 +  For PNG images, specify image type @code{png}.
 +
 +  For SVG images, specify image type @code{svg}.
 +
 +@node Defining Images
 +@subsection Defining Images
 +
 +  The functions @code{create-image}, @code{defimage} and
 +@code{find-image} provide convenient ways to create image descriptors.
 +
 +@defun create-image file-or-data &optional type data-p &rest props
 +This function creates and returns an image descriptor which uses the
 +data in @var{file-or-data}.  @var{file-or-data} can be a file name or
 +a string containing the image data; @var{data-p} should be @code{nil}
 +for the former case, non-@code{nil} for the latter case.
 +
 +The optional argument @var{type} is a symbol specifying the image type.
 +If @var{type} is omitted or @code{nil}, @code{create-image} tries to
 +determine the image type from the file's first few bytes, or else
 +from the file's name.
 +
 +The remaining arguments, @var{props}, specify additional image
 +properties---for example,
 +
 +@example
 +(create-image "foo.xpm" 'xpm nil :heuristic-mask t)
 +@end example
 +
 +The function returns @code{nil} if images of this type are not
 +supported.  Otherwise it returns an image descriptor.
 +@end defun
 +
 +@defmac defimage symbol specs &optional doc
 +This macro defines @var{symbol} as an image name.  The arguments
 +@var{specs} is a list which specifies how to display the image.
 +The third argument, @var{doc}, is an optional documentation string.
 +
 +Each argument in @var{specs} has the form of a property list, and each
 +one should specify at least the @code{:type} property and either the
 +@code{:file} or the @code{:data} property.  The value of @code{:type}
 +should be a symbol specifying the image type, the value of
 +@code{:file} is the file to load the image from, and the value of
 +@code{:data} is a string containing the actual image data.  Here is an
 +example:
 +
 +@example
 +(defimage test-image
 +  ((:type xpm :file "~/test1.xpm")
 +   (:type xbm :file "~/test1.xbm")))
 +@end example
 +
 +@code{defimage} tests each argument, one by one, to see if it is
 +usable---that is, if the type is supported and the file exists.  The
 +first usable argument is used to make an image descriptor which is
 +stored in @var{symbol}.
 +
 +If none of the alternatives will work, then @var{symbol} is defined
 +as @code{nil}.
 +@end defmac
 +
 +@defun find-image specs
 +This function provides a convenient way to find an image satisfying one
 +of a list of image specifications @var{specs}.
 +
 +Each specification in @var{specs} is a property list with contents
 +depending on image type.  All specifications must at least contain the
 +properties @code{:type @var{type}} and either @w{@code{:file @var{file}}}
 +or @w{@code{:data @var{DATA}}}, where @var{type} is a symbol specifying
 +the image type, e.g.@: @code{xbm}, @var{file} is the file to load the
 +image from, and @var{data} is a string containing the actual image data.
 +The first specification in the list whose @var{type} is supported, and
 +@var{file} exists, is used to construct the image specification to be
 +returned.  If no specification is satisfied, @code{nil} is returned.
 +
 +The image is looked for in @code{image-load-path}.
 +@end defun
 +
 +@defvar image-load-path
 +This variable's value is a list of locations in which to search for
 +image files.  If an element is a string or a variable symbol whose
 +value is a string, the string is taken to be the name of a directory
 +to search.  If an element is a variable symbol whose value is a list,
 +that is taken to be a list of directory names to search.
 +
 +The default is to search in the @file{images} subdirectory of the
 +directory specified by @code{data-directory}, then the directory
 +specified by @code{data-directory}, and finally in the directories in
 +@code{load-path}.  Subdirectories are not automatically included in
 +the search, so if you put an image file in a subdirectory, you have to
 +supply the subdirectory name explicitly.  For example, to find the
 +image @file{images/foo/bar.xpm} within @code{data-directory}, you
 +should specify the image as follows:
 +
 +@example
 +(defimage foo-image '((:type xpm :file "foo/bar.xpm")))
 +@end example
 +@end defvar
 +
 +@defun image-load-path-for-library library image &optional path no-error
 +This function returns a suitable search path for images used by the
 +Lisp package @var{library}.
 +
 +The function searches for @var{image} first using @code{image-load-path},
 +excluding @file{@code{data-directory}/images}, and then in
 +@code{load-path}, followed by a path suitable for @var{library}, which
 +includes @file{../../etc/images} and @file{../etc/images} relative to
 +the library file itself, and finally in
 +@file{@code{data-directory}/images}.
 +
 +Then this function returns a list of directories which contains first
 +the directory in which @var{image} was found, followed by the value of
 +@code{load-path}.  If @var{path} is given, it is used instead of
 +@code{load-path}.
 +
 +If @var{no-error} is non-@code{nil} and a suitable path can't be
 +found, don't signal an error.  Instead, return a list of directories as
 +before, except that @code{nil} appears in place of the image directory.
 +
 +Here is an example that uses a common idiom to provide compatibility
 +with versions of Emacs that lack the variable @code{image-load-path}:
 +
 +@example
 +(defvar image-load-path) ; shush compiler
 +(let* ((load-path (image-load-path-for-library
 +                        "mh-e" "mh-logo.xpm"))
 +       (image-load-path (cons (car load-path)
 +                              (when (boundp 'image-load-path)
 +                                image-load-path))))
 +  (mh-tool-bar-folder-buttons-init))
 +@end example
 +@end defun
 +
 +@node Showing Images
 +@subsection Showing Images
 +
 +  You can use an image descriptor by setting up the @code{display}
 +property yourself, but it is easier to use the functions in this
 +section.
 +
 +@defun insert-image image &optional string area slice
 +This function inserts @var{image} in the current buffer at point.  The
 +value @var{image} should be an image descriptor; it could be a value
 +returned by @code{create-image}, or the value of a symbol defined with
 +@code{defimage}.  The argument @var{string} specifies the text to put
 +in the buffer to hold the image.  If it is omitted or @code{nil},
 +@code{insert-image} uses @code{" "} by default.
 +
 +The argument @var{area} specifies whether to put the image in a margin.
 +If it is @code{left-margin}, the image appears in the left margin;
 +@code{right-margin} specifies the right margin.  If @var{area} is
 +@code{nil} or omitted, the image is displayed at point within the
 +buffer's text.
 +
 +The argument @var{slice} specifies a slice of the image to insert.  If
 +@var{slice} is @code{nil} or omitted the whole image is inserted.
 +Otherwise, @var{slice} is a list @code{(@var{x} @var{y} @var{width}
 +@var{height})} which specifies the @var{x} and @var{y} positions and
 +@var{width} and @var{height} of the image area to insert.  Integer
 +values are in units of pixels.  A floating point number in the range
 +0.0--1.0 stands for that fraction of the width or height of the entire
 +image.
 +
 +Internally, this function inserts @var{string} in the buffer, and gives
 +it a @code{display} property which specifies @var{image}.  @xref{Display
 +Property}.
 +@end defun
 +
 +@defun insert-sliced-image image &optional string area rows cols
 +This function inserts @var{image} in the current buffer at point, like
 +@code{insert-image}, but splits the image into @var{rows}x@var{cols}
 +equally sized slices.
 +@end defun
 +
 +@defun put-image image pos &optional string area
 +This function puts image @var{image} in front of @var{pos} in the
 +current buffer.  The argument @var{pos} should be an integer or a
 +marker.  It specifies the buffer position where the image should appear.
 +The argument @var{string} specifies the text that should hold the image
 +as an alternative to the default.
 +
 +The argument @var{image} must be an image descriptor, perhaps returned
 +by @code{create-image} or stored by @code{defimage}.
 +
 +The argument @var{area} specifies whether to put the image in a margin.
 +If it is @code{left-margin}, the image appears in the left margin;
 +@code{right-margin} specifies the right margin.  If @var{area} is
 +@code{nil} or omitted, the image is displayed at point within the
 +buffer's text.
 +
 +Internally, this function creates an overlay, and gives it a
 +@code{before-string} property containing text that has a @code{display}
 +property whose value is the image.  (Whew!)
 +@end defun
 +
 +@defun remove-images start end &optional buffer
 +This function removes images in @var{buffer} between positions
 +@var{start} and @var{end}.  If @var{buffer} is omitted or @code{nil},
 +images are removed from the current buffer.
 +
 +This removes only images that were put into @var{buffer} the way
 +@code{put-image} does it, not images that were inserted with
 +@code{insert-image} or in other ways.
 +@end defun
 +
 +@defun image-size spec &optional pixels frame
 +This function returns the size of an image as a pair
 +@w{@code{(@var{width} . @var{height})}}.  @var{spec} is an image
 +specification.  @var{pixels} non-@code{nil} means return sizes
 +measured in pixels, otherwise return sizes measured in canonical
 +character units (fractions of the width/height of the frame's default
 +font).  @var{frame} is the frame on which the image will be displayed.
 +@var{frame} null or omitted means use the selected frame (@pxref{Input
 +Focus}).
 +@end defun
 +
 +@defvar max-image-size
 +This variable is used to define the maximum size of image that Emacs
 +will load.  Emacs will refuse to load (and display) any image that is
 +larger than this limit.
 +
 +If the value is an integer, it directly specifies the maximum
 +image height and width, measured in pixels.  If it is a floating
 +point number, it specifies the maximum image height and width
 +as a ratio to the frame height and width.  If the value is
 +non-numeric, there is no explicit limit on the size of images.
 +
 +The purpose of this variable is to prevent unreasonably large images
 +from accidentally being loaded into Emacs.  It only takes effect the
 +first time an image is loaded.  Once an image is placed in the image
 +cache, it can always be displayed, even if the value of
 +@var{max-image-size} is subsequently changed (@pxref{Image Cache}).
 +@end defvar
 +
 +@node Image Cache
 +@subsection Image Cache
 +@cindex image cache
 +
 +  Emacs stores images in an image cache so that it can display them
 +again more efficiently.  When Emacs displays an image, it searches the
 +image cache for an existing image specification @code{equal} to the
 +desired specification.  If a match is found, the image is displayed
 +from the cache; otherwise, Emacs loads the image normally.
 +
 +  Occasionally, you may need to tell Emacs to refresh the images
 +associated with a given image specification.  For example, suppose you
 +display an image using a specification that contains a @code{:file}
 +property.  The image is loaded from the given file and stored in the
 +image cache.  If you later display the image again, using the same
 +image specification, the image is displayed from the image cache.
 +Normally, this is not a problem.  However, if the image file has
 +changed in the meantime, Emacs would be displaying the old version of
 +the image.  In such a situation, it is necessary to ``refresh'' the
 +image using @code{image-refresh}.
 +
 +@defun image-refresh spec &optional frame
 +This function refreshes any images having image specifications
 +@code{equal} to @var{spec} on frame @var{frame}.  If @var{frame} is
 +@code{nil}, the selected frame is used.  If @var{frame} is @code{t},
 +the refresh is applied to all existing frames.
 +
 +This works by removing all image with image specifications matching
 +@var{spec} from the image cache.  Thus, the next time the image is
 +displayed, Emacs will load the image again.
 +@end defun
 +
 +@defun clear-image-cache &optional frame
 +This function clears the entire image cache.  If @var{frame} is
 +non-@code{nil}, only the cache for that frame is cleared.  Otherwise,
 +all frames' caches are cleared.
 +@end defun
 +
 +If an image in the image cache has not been displayed for a specified
 +period of time, Emacs removes it from the cache and frees the
 +associated memory.
 +
 +@defvar image-cache-eviction-delay
 +This variable specifies the number of seconds an image can remain in the
 +cache without being displayed.  When an image is not displayed for this
 +length of time, Emacs removes it from the image cache.
 +
 +If the value is @code{nil}, Emacs does not remove images from the cache
 +except when you explicitly clear it.  This mode can be useful for
 +debugging.
 +@end defvar
 +
 +@node Buttons
 +@section Buttons
 +@cindex buttons in buffers
 +@cindex clickable buttons in buffers
 +
 +  The @emph{button} package defines functions for inserting and
 +manipulating clickable (with the mouse, or via keyboard commands)
 +buttons in Emacs buffers, such as might be used for help hyper-links,
 +etc.  Emacs uses buttons for the hyper-links in help text and the like.
 +
 +  A button is essentially a set of properties attached (via text
 +properties or overlays) to a region of text in an Emacs buffer.  These
 +properties are called @dfn{button properties}.
 +
 +  One of these properties (@code{action}) is a function, which will
 +be called when the user invokes it using the keyboard or the mouse.
 +The invoked function may then examine the button and use its other
 +properties as desired.
 +
 +  In some ways the Emacs button package duplicates functionality offered
 +by the widget package (@pxref{Top, , Introduction, widget, The Emacs
 +Widget Library}), but the button package has the advantage that it is
 +much faster, much smaller, and much simpler to use (for elisp
 +programmers---for users, the result is about the same).  The extra
 +speed and space savings are useful mainly if you need to create many
 +buttons in a buffer (for instance an @code{*Apropos*} buffer uses
 +buttons to make entries clickable, and may contain many thousands of
 +entries).
 +
 +@menu
 +* Button Properties::      Button properties with special meanings.
 +* Button Types::           Defining common properties for classes of buttons.
 +* Making Buttons::         Adding buttons to Emacs buffers.
 +* Manipulating Buttons::   Getting and setting properties of buttons.
 +* Button Buffer Commands:: Buffer-wide commands and bindings for buttons.
 +@end menu
 +
 +@node Button Properties
 +@subsection Button Properties
 +@cindex button properties
 +
 +  Buttons have an associated list of properties defining their
 +appearance and behavior, and other arbitrary properties may be used
 +for application specific purposes.  Some properties that have special
 +meaning to the button package include:
 +
 +@table @code
 +@item action
 +@kindex action @r{(button property)}
 +The function to call when the user invokes the button, which is passed
 +the single argument @var{button}.  By default this is @code{ignore},
 +which does nothing.
 +
 +@item mouse-action
 +@kindex mouse-action @r{(button property)}
 +This is similar to @code{action}, and when present, will be used
 +instead of @code{action} for button invocations resulting from
 +mouse-clicks (instead of the user hitting @key{RET}).  If not
 +present, mouse-clicks use @code{action} instead.
 +
 +@item face
 +@kindex face @r{(button property)}
 +This is an Emacs face controlling how buttons of this type are
 +displayed; by default this is the @code{button} face.
 +
 +@item mouse-face
 +@kindex mouse-face @r{(button property)}
 +This is an additional face which controls appearance during
 +mouse-overs (merged with the usual button face); by default this is
 +the usual Emacs @code{highlight} face.
 +
 +@item keymap
 +@kindex keymap @r{(button property)}
 +The button's keymap, defining bindings active within the button
 +region.  By default this is the usual button region keymap, stored
 +in the variable @code{button-map}, which defines @key{RET} and
 +@key{mouse-2} to invoke the button.
 +
 +@item type
 +@kindex type @r{(button property)}
 +The button-type of the button.  When creating a button, this is
 +usually specified using the @code{:type} keyword argument.
 +@xref{Button Types}.
 +
 +@item help-echo
 +@kindex help-index @r{(button property)}
 +A string displayed by the Emacs tool-tip help system; by default,
 +@code{"mouse-2, RET: Push this button"}.
 +
 +@item follow-link
 +@kindex follow-link @r{(button property)}
 +The follow-link property, defining how a @key{Mouse-1} click behaves
 +on this button, @xref{Links and Mouse-1}.
 +
 +@item button
 +@kindex button @r{(button property)}
 +All buttons have a non-@code{nil} @code{button} property, which may be useful
 +in finding regions of text that comprise buttons (which is what the
 +standard button functions do).
 +@end table
 +
 +  There are other properties defined for the regions of text in a
 +button, but these are not generally interesting for typical uses.
 +
 +@node Button Types
 +@subsection Button Types
 +@cindex button types
 +
 +  Every button has a button @emph{type}, which defines default values
 +for the button's properties.  Button types are arranged in a
 +hierarchy, with specialized types inheriting from more general types,
 +so that it's easy to define special-purpose types of buttons for
 +specific tasks.
 +
 +@defun define-button-type name &rest properties
 +Define a `button type' called @var{name}.  The remaining arguments
 +form a sequence of @var{property value} pairs, specifying default
 +property values for buttons with this type (a button's type may be set
 +by giving it a @code{type} property when creating the button, using
 +the @code{:type} keyword argument).
 +
 +In addition, the keyword argument @code{:supertype} may be used to
 +specify a button-type from which @var{name} inherits its default
 +property values.  Note that this inheritance happens only when
 +@var{name} is defined; subsequent changes to a supertype are not
 +reflected in its subtypes.
 +@end defun
 +
 +  Using @code{define-button-type} to define default properties for
 +buttons is not necessary---buttons without any specified type use the
 +built-in button-type @code{button}---but it is encouraged, since
 +doing so usually makes the resulting code clearer and more efficient.
 +
 +@node Making Buttons
 +@subsection Making Buttons
 +@cindex making buttons
 +
 +  Buttons are associated with a region of text, using an overlay or
 +text properties to hold button-specific information, all of which are
 +initialized from the button's type (which defaults to the built-in
 +button type @code{button}).  Like all Emacs text, the appearance of
 +the button is governed by the @code{face} property; by default (via
 +the @code{face} property inherited from the @code{button} button-type)
 +this is a simple underline, like a typical web-page link.
 +
 +  For convenience, there are two sorts of button-creation functions,
 +those that add button properties to an existing region of a buffer,
 +called @code{make-...button}, and those that also insert the button
 +text, called @code{insert-...button}.
 +
 +  The button-creation functions all take the @code{&rest} argument
 +@var{properties}, which should be a sequence of @var{property value}
 +pairs, specifying properties to add to the button; see @ref{Button
 +Properties}.  In addition, the keyword argument @code{:type} may be
 +used to specify a button-type from which to inherit other properties;
 +see @ref{Button Types}.  Any properties not explicitly specified
 +during creation will be inherited from the button's type (if the type
 +defines such a property).
 +
 +  The following functions add a button using an overlay
 +(@pxref{Overlays}) to hold the button properties:
 +
 +@defun make-button beg end &rest properties
 +This makes a button from @var{beg} to @var{end} in the
 +current buffer, and returns it.
 +@end defun
 +
 +@defun insert-button label &rest properties
 +This insert a button with the label @var{label} at point,
 +and returns it.
 +@end defun
 +
 +  The following functions are similar, but use Emacs text properties
 +(@pxref{Text Properties}) to hold the button properties, making the
 +button actually part of the text instead of being a property of the
 +buffer.  Buttons using text properties do not create markers into the
 +buffer, which is important for speed when you use extremely large
 +numbers of buttons.  Both functions return the position of the start
 +of the new button:
 +
 +@defun make-text-button beg end &rest properties
 +This makes a button from @var{beg} to @var{end} in the current buffer, using
 +text properties.
 +@end defun
 +
 +@defun insert-text-button label &rest properties
 +This inserts a button with the label @var{label} at point, using text
 +properties.
 +@end defun
 +
 +@node Manipulating Buttons
 +@subsection Manipulating Buttons
 +@cindex manipulating buttons
 +
 +These are functions for getting and setting properties of buttons.
 +Often these are used by a button's invocation function to determine
 +what to do.
 +
 +Where a @var{button} parameter is specified, it means an object
 +referring to a specific button, either an overlay (for overlay
 +buttons), or a buffer-position or marker (for text property buttons).
 +Such an object is passed as the first argument to a button's
 +invocation function when it is invoked.
 +
 +@defun button-start button
 +Return the position at which @var{button} starts.
 +@end defun
 +
 +@defun button-end button
 +Return the position at which @var{button} ends.
 +@end defun
 +
 +@defun button-get button prop
 +Get the property of button @var{button} named @var{prop}.
 +@end defun
 +
 +@defun button-put button prop val
 +Set @var{button}'s @var{prop} property to @var{val}.
 +@end defun
 +
 +@defun button-activate button &optional use-mouse-action
 +Call @var{button}'s @code{action} property (i.e., invoke it).  If
 +@var{use-mouse-action} is non-@code{nil}, try to invoke the button's
 +@code{mouse-action} property instead of @code{action}; if the button
 +has no @code{mouse-action} property, use @code{action} as normal.
 +@end defun
 +
 +@defun button-label button
 +Return @var{button}'s text label.
 +@end defun
 +
 +@defun button-type button
 +Return @var{button}'s button-type.
 +@end defun
 +
 +@defun button-has-type-p button type
 +Return @code{t} if @var{button} has button-type @var{type}, or one of
 +@var{type}'s subtypes.
 +@end defun
 +
 +@defun button-at pos
 +Return the button at position @var{pos} in the current buffer, or @code{nil}.
 +@end defun
 +
 +@defun button-type-put type prop val
 +Set the button-type @var{type}'s @var{prop} property to @var{val}.
 +@end defun
 +
 +@defun button-type-get type prop
 +Get the property of button-type @var{type} named @var{prop}.
 +@end defun
 +
 +@defun button-type-subtype-p type supertype
 +Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
 +@end defun
 +
 +@node Button Buffer Commands
 +@subsection Button Buffer Commands
 +@cindex button buffer commands
 +
 +These are commands and functions for locating and operating on
 +buttons in an Emacs buffer.
 +
 +@code{push-button} is the command that a user uses to actually `push'
 +a button, and is bound by default in the button itself to @key{RET}
 +and to @key{mouse-2} using a region-specific keymap.  Commands
 +that are useful outside the buttons itself, such as
 +@code{forward-button} and @code{backward-button} are additionally
 +available in the keymap stored in @code{button-buffer-map}; a mode
 +which uses buttons may want to use @code{button-buffer-map} as a
 +parent keymap for its keymap.
 +
 +If the button has a non-@code{nil} @code{follow-link} property, and
 +@var{mouse-1-click-follows-link} is set, a quick @key{Mouse-1} click
 +will also activate the @code{push-button} command.
 +@xref{Links and Mouse-1}.
 +
 +@deffn Command push-button &optional pos use-mouse-action
 +Perform the action specified by a button at location @var{pos}.
 +@var{pos} may be either a buffer position or a mouse-event.  If
 +@var{use-mouse-action} is non-@code{nil}, or @var{pos} is a
 +mouse-event (@pxref{Mouse Events}), try to invoke the button's
 +@code{mouse-action} property instead of @code{action}; if the button
 +has no @code{mouse-action} property, use @code{action} as normal.
 +@var{pos} defaults to point, except when @code{push-button} is invoked
 +interactively as the result of a mouse-event, in which case, the mouse
 +event's position is used.  If there's no button at @var{pos}, do
 +nothing and return @code{nil}, otherwise return @code{t}.
 +@end deffn
 +
 +@deffn Command forward-button n &optional wrap display-message
 +Move to the @var{n}th next button, or @var{n}th previous button if
 +@var{n} is negative.  If @var{n} is zero, move to the start of any
 +button at point.  If @var{wrap} is non-@code{nil}, moving past either
 +end of the buffer continues from the other end.  If
 +@var{display-message} is non-@code{nil}, the button's help-echo string
 +is displayed.  Any button with a non-@code{nil} @code{skip} property
 +is skipped over.  Returns the button found.
 +@end deffn
 +
 +@deffn Command backward-button n &optional wrap display-message
 +Move to the @var{n}th previous button, or @var{n}th next button if
 +@var{n} is negative.  If @var{n} is zero, move to the start of any
 +button at point.  If @var{wrap} is non-@code{nil}, moving past either
 +end of the buffer continues from the other end.  If
 +@var{display-message} is non-@code{nil}, the button's help-echo string
 +is displayed.  Any button with a non-@code{nil} @code{skip} property
 +is skipped over.  Returns the button found.
 +@end deffn
 +
 +@defun next-button pos &optional count-current
 +@defunx previous-button pos &optional count-current
 +Return the next button after (for @code{next-button} or before (for
 +@code{previous-button}) position @var{pos} in the current buffer.  If
 +@var{count-current} is non-@code{nil}, count any button at @var{pos}
 +in the search, instead of starting at the next button.
 +@end defun
 +
 +@node Abstract Display
 +@section Abstract Display
 +@cindex ewoc
 +@cindex display, abstract
 +@cindex display, arbitrary objects
 +@cindex model/view/controller
 +@cindex view part, model/view/controller
 +
 +  The Ewoc package constructs buffer text that represents a structure
 +of Lisp objects, and updates the text to follow changes in that
 +structure.  This is like the ``view'' component in the
 +``model/view/controller'' design paradigm.
 +
 +  An @dfn{ewoc} is a structure that organizes information required to
 +construct buffer text that represents certain Lisp data.  The buffer
 +text of the ewoc has three parts, in order: first, fixed @dfn{header}
 +text; next, textual descriptions of a series of data elements (Lisp
 +objects that you specify); and last, fixed @dfn{footer} text.
 +Specifically, an ewoc contains information on:
 +
 +@itemize @bullet
 +@item
 +The buffer which its text is generated in.
 +
 +@item
 +The text's start position in the buffer.
 +
 +@item
 +The header and footer strings.
 +
 +@item
 +A doubly-linked chain of @dfn{nodes}, each of which contains:
 +
 +@itemize
 +@item
 +A @dfn{data element}, a single Lisp object.
 +
 +@item
 +Links to the preceding and following nodes in the chain.
 +@end itemize
 +
 +@item
 +A @dfn{pretty-printer} function which is responsible for
 +inserting the textual representation of a data
 +element value into the current buffer.
 +@end itemize
 +
 +  Typically, you define an ewoc with @code{ewoc-create}, and then pass
 +the resulting ewoc structure to other functions in the Ewoc package to
 +build nodes within it, and display it in the buffer.  Once it is
 +displayed in the buffer, other functions determine the correspondance
 +between buffer positions and nodes, move point from one node's textual
 +representation to another, and so forth.  @xref{Abstract Display
 +Functions}.
 +
 +  A node @dfn{encapsulates} a data element much the way a variable
 +holds a value.  Normally, encapsulation occurs as a part of adding a
 +node to the ewoc.  You can retrieve the data element value and place a
 +new value in its place, like so:
 +
 +@lisp
 +(ewoc-data @var{node})
 +@result{} value
 +
 +(ewoc-set-data @var{node} @var{new-value})
 +@result{} @var{new-value}
 +@end lisp
 +
 +@noindent
 +You can also use, as the data element value, a Lisp object (list or
 +vector) that is a container for the ``real'' value, or an index into
 +some other structure.  The example (@pxref{Abstract Display Example})
 +uses the latter approach.
 +
 +  When the data changes, you will want to update the text in the
 +buffer.  You can update all nodes by calling @code{ewoc-refresh}, or
 +just specific nodes using @code{ewoc-invalidate}, or all nodes
 +satisfying a predicate using @code{ewoc-map}.  Alternatively, you can
 +delete invalid nodes using @code{ewoc-delete} or @code{ewoc-filter},
 +and add new nodes in their place.  Deleting a node from an ewoc deletes
 +its associated textual description from buffer, as well.
 +
 +@menu
 +* Abstract Display Functions::
 +* Abstract Display Example::
 +@end menu
 +
 +@node Abstract Display Functions
 +@subsection Abstract Display Functions
 +
 +  In this subsection, @var{ewoc} and @var{node} stand for the
 +structures described above (@pxref{Abstract Display}), while
 +@var{data} stands for an arbitrary Lisp object used as a data element.
 +
 +@defun ewoc-create pretty-printer &optional header footer nosep
 +This constructs and returns a new ewoc, with no nodes (and thus no data
 +elements).  @var{pretty-printer} should be a function that takes one
 +argument, a data element of the sort you plan to use in this ewoc, and
 +inserts its textual description at point using @code{insert} (and never
 +@code{insert-before-markers}, because that would interfere with the
 +Ewoc package's internal mechanisms).
 +
 +Normally, a newline is automatically inserted after the header,
 +the footer and every node's textual description.  If @var{nosep}
 +is non-@code{nil}, no newline is inserted.  This may be useful for
 +displaying an entire ewoc on a single line, for example, or for
 +making nodes ``invisible'' by arranging for @var{pretty-printer}
 +to do nothing for those nodes.
 +
 +An ewoc maintains its text in the buffer that is current when
 +you create it, so switch to the intended buffer before calling
 +@code{ewoc-create}.
 +@end defun
 +
 +@defun ewoc-buffer ewoc
 +This returns the buffer where @var{ewoc} maintains its text.
 +@end defun
 +
 +@defun ewoc-get-hf ewoc
 +This returns a cons cell @code{(@var{header} . @var{footer})}
 +made from @var{ewoc}'s header and footer.
 +@end defun
 +
 +@defun ewoc-set-hf ewoc header footer
 +This sets the header and footer of @var{ewoc} to the strings
 +@var{header} and @var{footer}, respectively.
 +@end defun
 +
 +@defun ewoc-enter-first ewoc data
 +@defunx ewoc-enter-last ewoc data
 +These add a new node encapsulating @var{data}, putting it, respectively,
 +at the beginning or end of @var{ewoc}'s chain of nodes.
 +@end defun
 +
 +@defun ewoc-enter-before ewoc node data
 +@defunx ewoc-enter-after ewoc node data
 +These add a new node encapsulating @var{data}, adding it to
 +@var{ewoc} before or after @var{node}, respectively.
 +@end defun
 +
 +@defun ewoc-prev ewoc node
 +@defunx ewoc-next ewoc node
 +These return, respectively, the previous node and the next node of @var{node}
 +in @var{ewoc}.
 +@end defun
 +
 +@defun ewoc-nth ewoc n
 +This returns the node in @var{ewoc} found at zero-based index @var{n}.
 +A negative @var{n} means count from the end.  @code{ewoc-nth} returns
 +@code{nil} if @var{n} is out of range.
 +@end defun
 +
 +@defun ewoc-data node
 +This extracts the data encapsulated by @var{node} and returns it.
 +@end defun
 +
 +@defun ewoc-set-data node data
 +This sets the data encapsulated by @var{node} to @var{data}.
 +@end defun
 +
 +@defun ewoc-locate ewoc &optional pos guess
 +This determines the node in @var{ewoc} which contains point (or
 +@var{pos} if specified), and returns that node.  If @var{ewoc} has no
 +nodes, it returns @code{nil}.  If @var{pos} is before the first node,
 +it returns the first node; if @var{pos} is after the last node, it returns
 +the last node.  The optional third arg @var{guess}
 +should be a node that is likely to be near @var{pos}; this doesn't
 +alter the result, but makes the function run faster.
 +@end defun
 +
 +@defun ewoc-location node
 +This returns the start position of @var{node}.
 +@end defun
 +
 +@defun ewoc-goto-prev ewoc arg
 +@defunx ewoc-goto-next ewoc arg
 +These move point to the previous or next, respectively, @var{arg}th node
 +in @var{ewoc}.  @code{ewoc-goto-prev} does not move if it is already at
 +the first node or if @var{ewoc} is empty, whereas @code{ewoc-goto-next}
 +moves past the last node, returning @code{nil}.  Excepting this special
 +case, these functions return the node moved to.
 +@end defun
 +
 +@defun ewoc-goto-node ewoc node
 +This moves point to the start of @var{node} in @var{ewoc}.
 +@end defun
 +
 +@defun ewoc-refresh ewoc
 +This function regenerates the text of @var{ewoc}.  It works by
 +deleting the text between the header and the footer, i.e., all the
 +data elements' representations, and then calling the pretty-printer
 +function for each node, one by one, in order.
 +@end defun
 +
 +@defun ewoc-invalidate ewoc &rest nodes
 +This is similar to @code{ewoc-refresh}, except that only @var{nodes} in
 +@var{ewoc} are updated instead of the entire set.
 +@end defun
 +
 +@defun ewoc-delete ewoc &rest nodes
 +This deletes each node in @var{nodes} from @var{ewoc}.
 +@end defun
 +
 +@defun ewoc-filter ewoc predicate &rest args
 +This calls @var{predicate} for each data element in @var{ewoc} and
 +deletes those nodes for which @var{predicate} returns @code{nil}.
 +Any @var{args} are passed to @var{predicate}.
 +@end defun
 +
 +@defun ewoc-collect ewoc predicate &rest args
 +This calls @var{predicate} for each data element in @var{ewoc}
 +and returns a list of those elements for which @var{predicate}
 +returns non-@code{nil}.  The elements in the list are ordered
 +as in the buffer.  Any @var{args} are passed to @var{predicate}.
 +@end defun
 +
 +@defun ewoc-map map-function ewoc &rest args
 +This calls @var{map-function} for each data element in @var{ewoc} and
 +updates those nodes for which @var{map-function} returns non-@code{nil}.
 +Any @var{args} are passed to @var{map-function}.
 +@end defun
 +
 +@node Abstract Display Example
 +@subsection Abstract Display Example
 +
 +  Here is a simple example using functions of the ewoc package to
 +implement a ``color components display,'' an area in a buffer that
 +represents a vector of three integers (itself representing a 24-bit RGB
 +value) in various ways.
 +
 +@example
 +(setq colorcomp-ewoc nil
 +      colorcomp-data nil
 +      colorcomp-mode-map nil
 +      colorcomp-labels ["Red" "Green" "Blue"])
 +
 +(defun colorcomp-pp (data)
 +  (if data
 +      (let ((comp (aref colorcomp-data data)))
 +        (insert (aref colorcomp-labels data) "\t: #x"
 +                (format "%02X" comp) " "
 +                (make-string (ash comp -2) ?#) "\n"))
 +    (let ((cstr (format "#%02X%02X%02X"
 +                        (aref colorcomp-data 0)
 +                        (aref colorcomp-data 1)
 +                        (aref colorcomp-data 2)))
 +          (samp " (sample text) "))
 +      (insert "Color\t: "
 +              (propertize samp 'face `(foreground-color . ,cstr))
 +              (propertize samp 'face `(background-color . ,cstr))
 +              "\n"))))
 +
 +(defun colorcomp (color)
 +  "Allow fiddling with COLOR in a new buffer.
 +The buffer is in Color Components mode."
 +  (interactive "sColor (name or #RGB or #RRGGBB): ")
 +  (when (string= "" color)
 +    (setq color "green"))
 +  (unless (color-values color)
 +    (error "No such color: %S" color))
 +  (switch-to-buffer
 +   (generate-new-buffer (format "originally: %s" color)))
 +  (kill-all-local-variables)
 +  (setq major-mode 'colorcomp-mode
 +        mode-name "Color Components")
 +  (use-local-map colorcomp-mode-map)
 +  (erase-buffer)
 +  (buffer-disable-undo)
 +  (let ((data (apply 'vector (mapcar (lambda (n) (ash n -8))
 +                                     (color-values color))))
 +        (ewoc (ewoc-create 'colorcomp-pp
 +                           "\nColor Components\n\n"
 +                           (substitute-command-keys
 +                            "\n\\@{colorcomp-mode-map@}"))))
 +    (set (make-local-variable 'colorcomp-data) data)
 +    (set (make-local-variable 'colorcomp-ewoc) ewoc)
 +    (ewoc-enter-last ewoc 0)
 +    (ewoc-enter-last ewoc 1)
 +    (ewoc-enter-last ewoc 2)
 +    (ewoc-enter-last ewoc nil)))
 +@end example
 +
 +@cindex controller part, model/view/controller
 +  This example can be extended to be a ``color selection widget'' (in
 +other words, the controller part of the ``model/view/controller''
 +design paradigm) by defining commands to modify @code{colorcomp-data}
 +and to ``finish'' the selection process, and a keymap to tie it all
 +together conveniently.
 +
 +@smallexample
 +(defun colorcomp-mod (index limit delta)
 +  (let ((cur (aref colorcomp-data index)))
 +    (unless (= limit cur)
 +      (aset colorcomp-data index (+ cur delta)))
 +    (ewoc-invalidate
 +     colorcomp-ewoc
 +     (ewoc-nth colorcomp-ewoc index)
 +     (ewoc-nth colorcomp-ewoc -1))))
 +
 +(defun colorcomp-R-more () (interactive) (colorcomp-mod 0 255 1))
 +(defun colorcomp-G-more () (interactive) (colorcomp-mod 1 255 1))
 +(defun colorcomp-B-more () (interactive) (colorcomp-mod 2 255 1))
 +(defun colorcomp-R-less () (interactive) (colorcomp-mod 0 0 -1))
 +(defun colorcomp-G-less () (interactive) (colorcomp-mod 1 0 -1))
 +(defun colorcomp-B-less () (interactive) (colorcomp-mod 2 0 -1))
 +
 +(defun colorcomp-copy-as-kill-and-exit ()
 +  "Copy the color components into the kill ring and kill the buffer.
 +The string is formatted #RRGGBB (hash followed by six hex digits)."
 +  (interactive)
 +  (kill-new (format "#%02X%02X%02X"
 +                    (aref colorcomp-data 0)
 +                    (aref colorcomp-data 1)
 +                    (aref colorcomp-data 2)))
 +  (kill-buffer nil))
 +
 +(setq colorcomp-mode-map
 +      (let ((m (make-sparse-keymap)))
 +        (suppress-keymap m)
 +        (define-key m "i" 'colorcomp-R-less)
 +        (define-key m "o" 'colorcomp-R-more)
 +        (define-key m "k" 'colorcomp-G-less)
 +        (define-key m "l" 'colorcomp-G-more)
 +        (define-key m "," 'colorcomp-B-less)
 +        (define-key m "." 'colorcomp-B-more)
 +        (define-key m " " 'colorcomp-copy-as-kill-and-exit)
 +        m))
 +@end smallexample
 +
 +Note that we never modify the data in each node, which is fixed when the
 +ewoc is created to be either @code{nil} or an index into the vector
 +@code{colorcomp-data}, the actual color components.
 +
 +@node Blinking
 +@section Blinking Parentheses
 +@cindex parenthesis matching
 +@cindex blinking parentheses
 +@cindex balancing parentheses
 +
 +  This section describes the mechanism by which Emacs shows a matching
 +open parenthesis when the user inserts a close parenthesis.
 +
 +@defvar blink-paren-function
 +The value of this variable should be a function (of no arguments) to
 +be called whenever a character with close parenthesis syntax is inserted.
 +The value of @code{blink-paren-function} may be @code{nil}, in which
 +case nothing is done.
 +@end defvar
 +
 +@defopt blink-matching-paren
 +If this variable is @code{nil}, then @code{blink-matching-open} does
 +nothing.
 +@end defopt
 +
 +@defopt blink-matching-paren-distance
 +This variable specifies the maximum distance to scan for a matching
 +parenthesis before giving up.
 +@end defopt
 +
 +@defopt blink-matching-delay
 +This variable specifies the number of seconds for the cursor to remain
 +at the matching parenthesis.  A fraction of a second often gives
 +good results, but the default is 1, which works on all systems.
 +@end defopt
 +
 +@deffn Command blink-matching-open
 +This function is the default value of @code{blink-paren-function}.  It
 +assumes that point follows a character with close parenthesis syntax and
 +moves the cursor momentarily to the matching opening character.  If that
 +character is not already on the screen, it displays the character's
 +context in the echo area.  To avoid long delays, this function does not
 +search farther than @code{blink-matching-paren-distance} characters.
 +
 +Here is an example of calling this function explicitly.
 +
 +@smallexample
 +@group
 +(defun interactive-blink-matching-open ()
 +@c Do not break this line! -- rms.
 +@c The first line of a doc string
 +@c must stand alone.
 +  "Indicate momentarily the start of sexp before point."
 +  (interactive)
 +@end group
 +@group
 +  (let ((blink-matching-paren-distance
 +         (buffer-size))
 +        (blink-matching-paren t))
 +    (blink-matching-open)))
 +@end group
 +@end smallexample
 +@end deffn
 +
 +@node Usual Display
 +@section Usual Display Conventions
 +
 +  The usual display conventions define how to display each character
 +code.  You can override these conventions by setting up a display table
 +(@pxref{Display Tables}).  Here are the usual display conventions:
 +
 +@itemize @bullet
 +@item
 +Character codes 32 through 126 map to glyph codes 32 through 126.
 +Normally this means they display as themselves.
 +
 +@item
 +Character code 9 is a horizontal tab.  It displays as whitespace
 +up to a position determined by @code{tab-width}.
 +
 +@item
 +Character code 10 is a newline.
 +
 +@item
 +All other codes in the range 0 through 31, and code 127, display in one
 +of two ways according to the value of @code{ctl-arrow}.  If it is
 +non-@code{nil}, these codes map to sequences of two glyphs, where the
 +first glyph is the @acronym{ASCII} code for @samp{^}.  (A display table can
 +specify a glyph to use instead of @samp{^}.)  Otherwise, these codes map
 +just like the codes in the range 128 to 255.
 +
 +On MS-DOS terminals, Emacs arranges by default for the character code
 +127 to be mapped to the glyph code 127, which normally displays as an
 +empty polygon.  This glyph is used to display non-@acronym{ASCII} characters
 +that the MS-DOS terminal doesn't support.  @xref{MS-DOS and MULE,,,
 +emacs, The GNU Emacs Manual}.
 +
 +@item
 +Character codes 128 through 255 map to sequences of four glyphs, where
 +the first glyph is the @acronym{ASCII} code for @samp{\}, and the others are
 +digit characters representing the character code in octal.  (A display
 +table can specify a glyph to use instead of @samp{\}.)
 +
 +@item
 +Multibyte character codes above 256 are displayed as themselves, or as a
 +question mark or empty box if the terminal cannot display that
 +character.
 +@end itemize
 +
 +  The usual display conventions apply even when there is a display
 +table, for any character whose entry in the active display table is
 +@code{nil}.  Thus, when you set up a display table, you need only
 +specify the characters for which you want special behavior.
 +
 +  These display rules apply to carriage return (character code 13), when
 +it appears in the buffer.  But that character may not appear in the
 +buffer where you expect it, if it was eliminated as part of end-of-line
 +conversion (@pxref{Coding System Basics}).
 +
 +  These variables affect the way certain characters are displayed on the
 +screen.  Since they change the number of columns the characters occupy,
 +they also affect the indentation functions.  These variables also affect
 +how the mode line is displayed; if you want to force redisplay of the
 +mode line using the new values, call the function
 +@code{force-mode-line-update} (@pxref{Mode Line Format}).
 +
 +@defopt ctl-arrow
 +@cindex control characters in display
 +This buffer-local variable controls how control characters are
 +displayed.  If it is non-@code{nil}, they are displayed as a caret
 +followed by the character: @samp{^A}.  If it is @code{nil}, they are
 +displayed as a backslash followed by three octal digits: @samp{\001}.
 +@end defopt
 +
 +@c Following may have overfull hbox.
 +@defvar default-ctl-arrow
 +The value of this variable is the default value for @code{ctl-arrow} in
 +buffers that do not override it.  @xref{Default Value}.
 +@end defvar
 +
 +@defopt tab-width
 +The value of this buffer-local variable is the spacing between tab
 +stops used for displaying tab characters in Emacs buffers.  The value
 +is in units of columns, and the default is 8.  Note that this feature
 +is completely independent of the user-settable tab stops used by the
 +command @code{tab-to-tab-stop}.  @xref{Indent Tabs}.
 +@end defopt
 +
 +@node Display Tables
 +@section Display Tables
 +
 +@cindex display table
 +You can use the @dfn{display table} feature to control how all possible
 +character codes display on the screen.  This is useful for displaying
 +European languages that have letters not in the @acronym{ASCII} character
 +set.
 +
 +The display table maps each character code into a sequence of
 +@dfn{glyphs}, each glyph being a graphic that takes up one character
 +position on the screen.  You can also define how to display each glyph
 +on your terminal, using the @dfn{glyph table}.
 +
 +Display tables affect how the mode line is displayed; if you want to
 +force redisplay of the mode line using a new display table, call
 +@code{force-mode-line-update} (@pxref{Mode Line Format}).
 +
 +@menu
 +* Display Table Format::  What a display table consists of.
 +* Active Display Table::  How Emacs selects a display table to use.
 +* Glyphs::              How to define a glyph, and what glyphs mean.
 +@end menu
 +
 +@node Display Table Format
 +@subsection Display Table Format
 +
 +  A display table is actually a char-table (@pxref{Char-Tables}) with
 +@code{display-table} as its subtype.
 +
 +@defun make-display-table
 +This creates and returns a display table.  The table initially has
 +@code{nil} in all elements.
 +@end defun
 +
 +  The ordinary elements of the display table are indexed by character
 +codes; the element at index @var{c} says how to display the character
 +code @var{c}.  The value should be @code{nil} or a vector of the
 +glyphs to be output (@pxref{Glyphs}).  @code{nil} says to display the
 +character @var{c} according to the usual display conventions
 +(@pxref{Usual Display}).
 +
 +  @strong{Warning:} if you use the display table to change the display
 +of newline characters, the whole buffer will be displayed as one long
 +``line.''
 +
 +  The display table also has six ``extra slots'' which serve special
 +purposes.  Here is a table of their meanings; @code{nil} in any slot
 +means to use the default for that slot, as stated below.
 +
 +@table @asis
 +@item 0
 +The glyph for the end of a truncated screen line (the default for this
 +is @samp{$}).  @xref{Glyphs}.  On graphical terminals, Emacs uses
 +arrows in the fringes to indicate truncation, so the display table has
 +no effect.
 +
 +@item 1
 +The glyph for the end of a continued line (the default is @samp{\}).
 +On graphical terminals, Emacs uses curved arrows in the fringes to
 +indicate continuation, so the display table has no effect.
 +
 +@item 2
 +The glyph for indicating a character displayed as an octal character
 +code (the default is @samp{\}).
 +
 +@item 3
 +The glyph for indicating a control character (the default is @samp{^}).
 +
 +@item 4
 +A vector of glyphs for indicating the presence of invisible lines (the
 +default is @samp{...}).  @xref{Selective Display}.
 +
 +@item 5
 +The glyph used to draw the border between side-by-side windows (the
 +default is @samp{|}).  @xref{Splitting Windows}.  This takes effect only
 +when there are no scroll bars; if scroll bars are supported and in use,
 +a scroll bar separates the two windows.
 +@end table
 +
 +  For example, here is how to construct a display table that mimics the
 +effect of setting @code{ctl-arrow} to a non-@code{nil} value:
 +
 +@example
 +(setq disptab (make-display-table))
 +(let ((i 0))
 +  (while (< i 32)
 +    (or (= i ?\t) (= i ?\n)
 +        (aset disptab i (vector ?^ (+ i 64))))
 +    (setq i (1+ i)))
 +  (aset disptab 127 (vector ?^ ??)))
 +@end example
 +
 +@defun display-table-slot display-table slot
 +This function returns the value of the extra slot @var{slot} of
 +@var{display-table}.  The argument @var{slot} may be a number from 0 to
 +5 inclusive, or a slot name (symbol).  Valid symbols are
 +@code{truncation}, @code{wrap}, @code{escape}, @code{control},
 +@code{selective-display}, and @code{vertical-border}.
 +@end defun
 +
 +@defun set-display-table-slot display-table slot value
 +This function stores @var{value} in the extra slot @var{slot} of
 +@var{display-table}.  The argument @var{slot} may be a number from 0 to
 +5 inclusive, or a slot name (symbol).  Valid symbols are
 +@code{truncation}, @code{wrap}, @code{escape}, @code{control},
 +@code{selective-display}, and @code{vertical-border}.
 +@end defun
 +
 +@defun describe-display-table display-table
 +This function displays a description of the display table
 +@var{display-table} in a help buffer.
 +@end defun
 +
 +@deffn Command describe-current-display-table
 +This command displays a description of the current display table in a
 +help buffer.
 +@end deffn
 +
 +@node Active Display Table
 +@subsection Active Display Table
 +@cindex active display table
 +
 +  Each window can specify a display table, and so can each buffer.  When
 +a buffer @var{b} is displayed in window @var{w}, display uses the
 +display table for window @var{w} if it has one; otherwise, the display
 +table for buffer @var{b} if it has one; otherwise, the standard display
 +table if any.  The display table chosen is called the @dfn{active}
 +display table.
 +
 +@defun window-display-table &optional window
 +This function returns @var{window}'s display table, or @code{nil}
 +if @var{window} does not have an assigned display table.  The default
 +for @var{window} is the selected window.
 +@end defun
 +
 +@defun set-window-display-table window table
 +This function sets the display table of @var{window} to @var{table}.
 +The argument @var{table} should be either a display table or
 +@code{nil}.
 +@end defun
 +
 +@defvar buffer-display-table
 +This variable is automatically buffer-local in all buffers; its value in
 +a particular buffer specifies the display table for that buffer.  If it
 +is @code{nil}, that means the buffer does not have an assigned display
 +table.
 +@end defvar
 +
 +@defvar standard-display-table
 +This variable's value is the default display table, used whenever a
 +window has no display table and neither does the buffer displayed in
 +that window.  This variable is @code{nil} by default.
 +@end defvar
 +
 +  If there is no display table to use for a particular window---that is,
 +if the window specifies none, its buffer specifies none, and
 +@code{standard-display-table} is @code{nil}---then Emacs uses the usual
 +display conventions for all character codes in that window.  @xref{Usual
 +Display}.
 +
 +A number of functions for changing the standard display table
 +are defined in the library @file{disp-table}.
 +
 +@node Glyphs
 +@subsection Glyphs
 +
 +@cindex glyph
 +  A @dfn{glyph} is a generalization of a character; it stands for an
 +image that takes up a single character position on the screen.  Normally
 +glyphs come from vectors in the display table (@pxref{Display Tables}).
 +
 +  A glyph is represented in Lisp as a @dfn{glyph code}.  A glyph code
 +can be @dfn{simple} or it can be defined by the @dfn{glyph table}.  A
 +simple glyph code is just a way of specifying a character and a face
 +to output it in.  @xref{Faces}.
 +
 +  The following functions are used to manipulate simple glyph codes:
 +
 +@defun make-glyph-code char &optional face
 +This function returns a simple glyph code representing char @var{char}
 +with face @var{face}.
 +@end defun
 +
 +@defun glyph-char glyph
 +This function returns the character of simple glyph code @var{glyph}.
 +@end defun
 +
 +@defun glyph-face glyph
 +This function returns face of simple glyph code @var{glyph}, or
 +@code{nil} if @var{glyph} has the default face (face-id 0).
 +@end defun
 +
 +  On character terminals, you can set up a @dfn{glyph table} to define
 +the meaning of glyph codes (represented as small integers).
 +
 +@defvar glyph-table
 +The value of this variable is the current glyph table.  It should be
 +@code{nil} or a vector whose @var{g}th element defines glyph code
 +@var{g}.
 +
 +If a glyph code is greater than or equal to the length of the glyph
 +table, that code is automatically simple.  If @code{glyph-table} is
 +@code{nil} then all glyph codes are simple.
 +
 +The glyph table is used only on character terminals.  On graphical
 +displays, all glyph codes are simple.
 +@end defvar
 +
 +  Here are the meaningful types of elements in the glyph table:
 +
 +@table @asis
 +@item @var{string}
 +Send the characters in @var{string} to the terminal to output
 +this glyph code.
 +
 +@item @var{code}
 +Define this glyph code as an alias for glyph code @var{code} created
 +by @code{make-glyph-code}.  You can use such an alias to define a
 +small-numbered glyph code which specifies a character with a face.
 +
 +@item @code{nil}
 +This glyph code is simple.
 +@end table
 +
 +@defun create-glyph string
 +This function returns a newly-allocated glyph code which is set up to
 +display by sending @var{string} to the terminal.
 +@end defun
 +
 +@node Beeping
 +@section Beeping
 +@c  @cindex beeping   "beep" is adjacent
 +@cindex bell
 +
 +  This section describes how to make Emacs ring the bell (or blink the
 +screen) to attract the user's attention.  Be conservative about how
 +often you do this; frequent bells can become irritating.  Also be
 +careful not to use just beeping when signaling an error is more
 +appropriate.  (@xref{Errors}.)
 +
 +@defun ding &optional do-not-terminate
 +@cindex keyboard macro termination
 +This function beeps, or flashes the screen (see @code{visible-bell} below).
 +It also terminates any keyboard macro currently executing unless
 +@var{do-not-terminate} is non-@code{nil}.
 +@end defun
 +
 +@defun beep &optional do-not-terminate
 +This is a synonym for @code{ding}.
 +@end defun
 +
 +@defopt visible-bell
 +This variable determines whether Emacs should flash the screen to
 +represent a bell.  Non-@code{nil} means yes, @code{nil} means no.  This
 +is effective on graphical displays, and on text-only terminals
 +provided the terminal's Termcap entry defines the visible bell
 +capability (@samp{vb}).
 +@end defopt
 +
 +@defvar ring-bell-function
 +If this is non-@code{nil}, it specifies how Emacs should ``ring the
 +bell.''  Its value should be a function of no arguments.  If this is
 +non-@code{nil}, it takes precedence over the @code{visible-bell}
 +variable.
 +@end defvar
 +
 +@node Window Systems
 +@section Window Systems
 +
 +  Emacs works with several window systems, most notably the X Window
 +System.  Both Emacs and X use the term ``window,'' but use it
 +differently.  An Emacs frame is a single window as far as X is
 +concerned; the individual Emacs windows are not known to X at all.
 +
 +@defvar window-system
 +This variable tells Lisp programs what window system Emacs is running
 +under.  The possible values are
 +
 +@table @code
 +@item x
 +@cindex X Window System
 +Emacs is displaying using X.
 +@item pc
 +Emacs is displaying using MS-DOS.
 +@item w32
 +Emacs is displaying using Windows.
 +@item mac
 +Emacs is displaying using a Macintosh.
 +@item nil
 +Emacs is using a character-based terminal.
 +@end table
 +@end defvar
 +
 +@defvar window-setup-hook
 +This variable is a normal hook which Emacs runs after handling the
 +initialization files.  Emacs runs this hook after it has completed
 +loading your init file, the default initialization file (if
 +any), and the terminal-specific Lisp code, and running the hook
 +@code{term-setup-hook}.
 +
 +This hook is used for internal purposes: setting up communication with
 +the window system, and creating the initial window.  Users should not
 +interfere with it.
 +@end defvar
 +
 +@ignore
 +   arch-tag: ffdf5714-7ecf-415b-9023-fbc6b409c2c6
 +@end ignore
index f9d11a5dd1f942a671f9d15ca27fa97db24174f2,0000000000000000000000000000000000000000..8cd25ed59d33dab4b89ce32b2b7d167765315b3d
mode 100644,000000..100644
--- /dev/null
@@@ -1,1483 -1,0 +1,1484 @@@
 +\input texinfo  @c -*-texinfo-*-
 +@c %**start of header
 +@setfilename elisp
 +@settitle GNU Emacs Lisp Reference Manual
 +@c %**end of header
 +
 +@c Version of the manual and of Emacs.
 +@c Please remember to update the edition number in README as well.
 +@set VERSION  2.9
 +@set EMACSVER 23.0.50
 +
 +@c in general, keep the following line commented out, unless doing a
 +@c copy of this manual that will be published.  The manual should go
 +@c onto the distribution in the full, 8.5 x 11" size.
 +@c set smallbook
 +
 +@ifset smallbook
 +@smallbook
 +@end ifset
 +
 +@c per rms and peterb, use 10pt fonts for the main text, mostly to
 +@c save on paper cost.  
 +@c Do this inside @tex for now, so current makeinfo does not complain.
 +@tex
 +@ifset smallbook
 +@fonttextsize 10
 +@set EMACSVER 22.1
 +\global\let\urlcolor=\Black % don't print links in grayscale
 +\global\let\linkcolor=\Black
 +@end ifset
 +\global\hbadness=6666 % don't worry about not-too-underfull boxes
 +@end tex
 +
 +@c Combine indices.
 +@synindex cp fn
 +@syncodeindex vr fn
 +@syncodeindex ky fn
 +@syncodeindex pg fn
 +@c We use the "type index" to index new functions and variables.
 +@c @syncodeindex tp fn
 +
 +@copying
 +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  Free Software
 +Foundation, Inc.
 +
 +@quotation
 +Permission is granted to copy, distribute and/or modify this document
 +under the terms of the GNU Free Documentation License, Version 1.2 or
 +any later version published by the Free Software Foundation; with the
 +Invariant Sections being ``GNU General Public License,'' with the
 +Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
 +Texts as in (a) below.  A copy of the license is included in the
 +section entitled ``GNU Free Documentation License.''
 +
 +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
 +this GNU Manual. Buying copies from GNU Press supports the FSF in
 +developing GNU and promoting software freedom.''
 +@end quotation
 +@end copying
 +
 +@dircategory Emacs
 +@direntry
 +* Elisp: (elisp).       The Emacs Lisp Reference Manual.
 +@end direntry
 +
 +@titlepage
 +@title GNU Emacs Lisp Reference Manual
 +@subtitle For Emacs Version @value{EMACSVER}
 +@subtitle Revision @value{VERSION}, April 2007
 +
 +@author by Bil Lewis, Dan LaLiberte, Richard Stallman
 +@author and the GNU Manual Group
 +@page
 +@vskip 0pt plus 1filll
 +@insertcopying
 +
 +@sp 2
 +Published by the Free Software Foundation @*
 +51 Franklin St, Fifth Floor @*
 +Boston, MA 02110-1301 @*
 +USA @*
 +ISBN 1-882114-74-4
 +
 +@sp 2
 +Cover art by Etienne Suvasa.
 +@end titlepage
 +
 +
 +@c Print the tables of contents
 +@summarycontents
 +@contents
 +
 +
 +@ifnottex
 +@node Top, Introduction, (dir), (dir)
 +@top Emacs Lisp
 +
 +This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
 +Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
 +@end ifnottex
 +
 +@menu
 +* Introduction::            Introduction and conventions used.
 +
 +* Lisp Data Types::         Data types of objects in Emacs Lisp.
 +* Numbers::                 Numbers and arithmetic functions.
 +* Strings and Characters::  Strings, and functions that work on them.
 +* Lists::                   Lists, cons cells, and related functions.
 +* Sequences Arrays Vectors::  Lists, strings and vectors are called sequences.
 +                                Certain functions act on any kind of sequence.
 +                                The description of vectors is here as well.
 +* Hash Tables::             Very fast lookup-tables.
 +* Symbols::                 Symbols represent names, uniquely.
 +
 +* Evaluation::              How Lisp expressions are evaluated.
 +* Control Structures::      Conditionals, loops, nonlocal exits.
 +* Variables::               Using symbols in programs to stand for values.
 +* Functions::               A function is a Lisp program
 +                              that can be invoked from other functions.
 +* Macros::                  Macros are a way to extend the Lisp language.
 +* Customization::           Writing customization declarations.
 +
 +* Loading::                 Reading files of Lisp code into Lisp.
 +* Byte Compilation::        Compilation makes programs run faster.
 +* Advising Functions::      Adding to the definition of a function.
 +* Debugging::               Tools and tips for debugging Lisp programs.
 +
 +* Read and Print::          Converting Lisp objects to text and back.
 +* Minibuffers::             Using the minibuffer to read input.
 +* Command Loop::            How the editor command loop works,
 +                              and how you can call its subroutines.
 +* Keymaps::                 Defining the bindings from keys to commands.
 +* Modes::                   Defining major and minor modes.
 +* Documentation::           Writing and using documentation strings.
 +
 +* Files::                   Accessing files.
 +* Backups and Auto-Saving:: Controlling how backups and auto-save
 +                              files are made.
 +* Buffers::                 Creating and using buffer objects.
 +* Windows::                 Manipulating windows and displaying buffers.
 +* Frames::                Making multiple system-level windows.
 +* Positions::               Buffer positions and motion functions.
 +* Markers::                 Markers represent positions and update
 +                              automatically when the text is changed.
 +
 +* Text::                    Examining and changing text in buffers.
 +* Non-ASCII Characters::    Non-ASCII text in buffers and strings.
 +* Searching and Matching::  Searching buffers for strings or regexps.
 +* Syntax Tables::           The syntax table controls word and list parsing.
 +* Abbrevs::                 How Abbrev mode works, and its data structures.
 +
 +* Processes::               Running and communicating with subprocesses.
 +* Display::               Features for controlling the screen display.
 +* System Interface::        Getting the user id, system type, environment
 +                              variables, and other such things.
 +
 +Appendices
 +
 +* Antinews::                Info for users downgrading to Emacs 21.
 +* GNU Free Documentation License:: The license for this documentation
 +* GPL::                     Conditions for copying and changing GNU Emacs.
 +* Tips::                    Advice and coding conventions for Emacs Lisp.
 +* GNU Emacs Internals::     Building and dumping Emacs;
 +                              internal data structures.
 +* Standard Errors::         List of all error symbols.
 +* Standard Buffer-Local Variables::
 +                            List of variables buffer-local in all buffers.
 +* Standard Keymaps::        List of standard keymaps.
 +* Standard Hooks::          List of standard hook variables.
 +
 +* Index::                   Index including concepts, functions, variables,
 +                              and other terms.
 +
 +@ignore
 +* New Symbols::             New functions and variables in Emacs @value{EMACSVER}.
 +@end ignore
 +
 +@c Do NOT modify the following 3 lines!  They must have this form to
 +@c be correctly identified by `texinfo-multiple-files-update'.  In
 +@c particular, the detailed menu header line MUST be identical to the
 +@c value of `texinfo-master-menu-header'.  See texnfo-upd.el.
 +
 +@detailmenu
 + --- The Detailed Node Listing ---
 + ---------------------------------
 +
 +Here are other nodes that are inferiors of those already listed,
 +mentioned here so you can get to them in one step:
 +
 +Introduction
 +
 +* Caveats::                 Flaws and a request for help.
 +* Lisp History::            Emacs Lisp is descended from Maclisp.
 +* Conventions::             How the manual is formatted.
 +* Version Info::            Which Emacs version is running?
 +* Acknowledgements::        The authors, editors, and sponsors of this manual.
 +
 +Conventions
 +
 +* Some Terms::              Explanation of terms we use in this manual.
 +* nil and t::               How the symbols @code{nil} and @code{t} are used.
 +* Evaluation Notation::     The format we use for examples of evaluation.
 +* Printing Notation::       The format we use for examples that print output.
 +* Error Messages::          The format we use for examples of errors.
 +* Buffer Text Notation::    The format we use for buffer contents in examples.
 +* Format of Descriptions::  Notation for describing functions, variables, etc.
 +
 +Format of Descriptions
 +
 +* A Sample Function Description::  A description of an imaginary
 +                                     function, @code{foo}.
 +* A Sample Variable Description::  A description of an imaginary
 +                                     variable, @code{electric-future-map}.
 +
 +Lisp Data Types
 +
 +* Printed Representation::  How Lisp objects are represented as text.
 +* Comments::                Comments and their formatting conventions.
 +* Programming Types::       Types found in all Lisp systems.
 +* Editing Types::           Types specific to Emacs.
 +* Circular Objects::            Read syntax for circular structure.
 +* Type Predicates::         Tests related to types.
 +* Equality Predicates::     Tests of equality between any two objects.
 +
 +Programming Types
 +
 +* Integer Type::        Numbers without fractional parts.
 +* Floating Point Type:: Numbers with fractional parts and with a large range.
 +* Character Type::      The representation of letters, numbers and
 +                          control characters.
 +* Symbol Type::         A multi-use object that refers to a function,
 +                        variable, property list, or itself.
 +* Sequence Type::       Both lists and arrays are classified as sequences.
 +* Cons Cell Type::      Cons cells, and lists (which are made from cons cells).
 +* Array Type::          Arrays include strings and vectors.
 +* String Type::         An (efficient) array of characters.
 +* Vector Type::         One-dimensional arrays.
 +* Char-Table Type::     One-dimensional sparse arrays indexed by characters.
 +* Bool-Vector Type::    One-dimensional arrays of @code{t} or @code{nil}.
 +* Hash Table Type::     Super-fast lookup tables.
 +* Function Type::       A piece of executable code you can call from elsewhere.
 +* Macro Type::          A method of expanding an expression into another
 +                          expression, more fundamental but less pretty.
 +* Primitive Function Type::     A function written in C, callable from Lisp.
 +* Byte-Code Type::      A function written in Lisp, then compiled.
 +* Autoload Type::       A type used for automatically loading seldom-used
 +                          functions.
 +
 +Character Type
 +
 +* Basic Char Syntax::       Syntax for regular characters.
 +* General Escape Syntax::   How to specify characters by their codes.
 +* Ctl-Char Syntax::         Syntax for control characters.
 +* Meta-Char Syntax::        Syntax for meta-characters.
 +* Other Char Bits::         Syntax for hyper-, super-, and alt-characters.
 +
 +Cons Cell and List Types
 +
 +* Box Diagrams::            Drawing pictures of lists.
 +* Dotted Pair Notation::    An alternative syntax for lists.
 +* Association List Type::   A specially constructed list.
 +
 +String Type
 +
 +* Syntax for Strings::      How to specify Lisp strings.
 +* Non-ASCII in Strings::    International characters in strings.
 +* Nonprinting Characters::  Literal unprintable characters in strings.
 +* Text Props and Strings::  Strings with text properties.
 +
 +Editing Types
 +
 +* Buffer Type::             The basic object of editing.
 +* Marker Type::             A position in a buffer.
 +* Window Type::             What makes buffers visible.
 +* Frame Type::                    Windows subdivide frames.
 +* Window Configuration Type::  Recording the way a frame is subdivided.
 +* Frame Configuration Type::   Recording the status of all frames.
 +* Process Type::            A process running on the underlying OS.
 +* Stream Type::             Receive or send characters.
 +* Keymap Type::             What function a keystroke invokes.
 +* Overlay Type::            How an overlay is represented.
 +
 +Numbers
 +
 +* Integer Basics::          Representation and range of integers.
 +* Float Basics::          Representation and range of floating point.
 +* Predicates on Numbers::   Testing for numbers.
 +* Comparison of Numbers::   Equality and inequality predicates.
 +* Numeric Conversions::           Converting float to integer and vice versa.
 +* Arithmetic Operations::   How to add, subtract, multiply and divide.
 +* Rounding Operations::     Explicitly rounding floating point numbers.
 +* Bitwise Operations::      Logical and, or, not, shifting.
 +* Math Functions::          Trig, exponential and logarithmic functions.
 +* Random Numbers::          Obtaining random integers, predictable or not.
 +
 +Strings and Characters
 +
 +* String Basics::           Basic properties of strings and characters.
 +* Predicates for Strings::  Testing whether an object is a string or char.
 +* Creating Strings::        Functions to allocate new strings.
 +* Modifying Strings::         Altering the contents of an existing string.
 +* Text Comparison::         Comparing characters or strings.
 +* String Conversion::       Converting characters to strings and vice versa.
 +* Formatting Strings::      @code{format}: Emacs's analogue of @code{printf}.
 +* Case Conversion::         Case conversion functions.
 +* Case Tables::                   Customizing case conversion.
 +
 +Lists
 +
 +* Cons Cells::              How lists are made out of cons cells.
 +* List-related Predicates:: Is this object a list?  Comparing two lists.
 +* List Elements::           Extracting the pieces of a list.
 +* Building Lists::          Creating list structure.
 +* List Variables::          Modifying lists stored in variables.
 +* Modifying Lists::         Storing new pieces into an existing list.
 +* Sets And Lists::          A list can represent a finite mathematical set.
 +* Association Lists::       A list can represent a finite relation or mapping.
 +* Rings::                   Managing a fixed-size ring of objects.
 +
 +Modifying Existing List Structure
 +
 +* Setcar::                  Replacing an element in a list.
 +* Setcdr::                  Replacing part of the list backbone.
 +                              This can be used to remove or add elements.
 +* Rearrangement::           Reordering the elements in a list; combining lists.
 +
 +Sequences, Arrays, and Vectors
 +
 +* Sequence Functions::      Functions that accept any kind of sequence.
 +* Arrays::                  Characteristics of arrays in Emacs Lisp.
 +* Array Functions::         Functions specifically for arrays.
 +* Vectors::                 Special characteristics of Emacs Lisp vectors.
 +* Vector Functions::        Functions specifically for vectors.
 +* Char-Tables::             How to work with char-tables.
 +* Bool-Vectors::            How to work with bool-vectors.
 +
 +Hash Tables
 +
 +* Creating Hash::           Functions to create hash tables.
 +* Hash Access::             Reading and writing the hash table contents.
 +* Defining Hash::           Defining new comparison methods
 +* Other Hash::              Miscellaneous.
 +
 +Symbols
 +
 +* Symbol Components::       Symbols have names, values, function definitions
 +                              and property lists.
 +* Definitions::             A definition says how a symbol will be used.
 +* Creating Symbols::        How symbols are kept unique.
 +* Property Lists::          Each symbol has a property list
 +                              for recording miscellaneous information.
 +
 +Property Lists
 +
 +* Plists and Alists::       Comparison of the advantages of property
 +                              lists and association lists.
 +* Symbol Plists::           Functions to access symbols' property lists.
 +* Other Plists::            Accessing property lists stored elsewhere.
 +
 +Evaluation
 +
 +* Intro Eval::              Evaluation in the scheme of things.
 +* Forms::                   How various sorts of objects are evaluated.
 +* Quoting::                 Avoiding evaluation (to put constants in
 +                              the program).
 +* Eval::                    How to invoke the Lisp interpreter explicitly.
 +
 +Kinds of Forms
 +
 +* Self-Evaluating Forms::   Forms that evaluate to themselves.
 +* Symbol Forms::            Symbols evaluate as variables.
 +* Classifying Lists::       How to distinguish various sorts of list forms.
 +* Function Indirection::    When a symbol appears as the car of a list,
 +                            we find the real function via the symbol.
 +* Function Forms::          Forms that call functions.
 +* Macro Forms::             Forms that call macros.
 +* Special Forms::           "Special forms" are idiosyncratic primitives,
 +                              most of them extremely important.
 +* Autoloading::             Functions set up to load files
 +                              containing their real definitions.
 +
 +Control Structures
 +
 +* Sequencing::              Evaluation in textual order.
 +* Conditionals::            @code{if}, @code{cond}, @code{when}, @code{unless}.
 +* Combining Conditions::    @code{and}, @code{or}, @code{not}.
 +* Iteration::               @code{while} loops.
 +* Nonlocal Exits::          Jumping out of a sequence.
 +
 +Nonlocal Exits
 +
 +* Catch and Throw::         Nonlocal exits for the program's own purposes.
 +* Examples of Catch::       Showing how such nonlocal exits can be written.
 +* Errors::                  How errors are signaled and handled.
 +* Cleanups::                Arranging to run a cleanup form if an
 +                              error happens.
 +
 +Errors
 +
 +* Signaling Errors::        How to report an error.
 +* Processing of Errors::    What Emacs does when you report an error.
 +* Handling Errors::         How you can trap errors and continue execution.
 +* Error Symbols::           How errors are classified for trapping them.
 +* Standard Errors::         List of all error symbols.
 +
 +Variables
 +
 +* Global Variables::        Variable values that exist permanently, everywhere.
 +* Constant Variables::      Certain "variables" have values that never change.
 +* Local Variables::         Variable values that exist only temporarily.
 +* Void Variables::          Symbols that lack values.
 +* Defining Variables::      A definition says a symbol is used as a variable.
 +* Tips for Defining::       Things you should think about when you
 +                              define a variable.
 +* Accessing Variables::     Examining values of variables whose names
 +                              are known only at run time.
 +* Setting Variables::       Storing new values in variables.
 +* Variable Scoping::        How Lisp chooses among local and global values.
 +* Buffer-Local Variables::  Variable values in effect only in one buffer.
 +* Frame-Local Variables::   Variable values in effect only in one frame.
 +* Future Local Variables::  New kinds of local values we might add some day.
 +* File Local Variables::    Handling local variable lists in files.
 +* Variable Aliases::        Variables that are aliases for other variables.
 +* Variables with Restricted Values::  Non-constant variables whose value can
 +                                        @emph{not} be an arbitrary Lisp object.
 +* Standard Buffer-Local Variables::
 +                            List of variables buffer-local in all buffers.
 +
 +Scoping Rules for Variable Bindings
 +
 +* Scope::                   Scope means where in the program a value
 +                              is visible.  Comparison with other languages.
 +* Extent::                  Extent means how long in time a value exists.
 +* Impl of Scope::           Two ways to implement dynamic scoping.
 +* Using Scoping::           How to use dynamic scoping carefully and
 +                              avoid problems.
 +
 +Buffer-Local Variables
 +
 +* Intro to Buffer-Local::   Introduction and concepts.
 +* Creating Buffer-Local::   Creating and destroying buffer-local bindings.
 +* Default Value::           The default value is seen in buffers
 +                              that don't have their own buffer-local values.
 +
 +Functions
 +
 +* What Is a Function::      Lisp functions vs primitives; terminology.
 +* Lambda Expressions::      How functions are expressed as Lisp objects.
 +* Function Names::          A symbol can serve as the name of a function.
 +* Defining Functions::      Lisp expressions for defining functions.
 +* Calling Functions::       How to use an existing function.
 +* Mapping Functions::       Applying a function to each element of a list, etc.
 +* Anonymous Functions::     Lambda-expressions are functions with no names.
 +* Function Cells::          Accessing or setting the function definition
 +                              of a symbol.
 +* Obsolete Functions::      Declaring functions obsolete.
 +* Inline Functions::      Defining functions that the compiler will open code.
 +* Function Safety::         Determining whether a function is safe to call.
 +* Related Topics::          Cross-references to specific Lisp primitives
 +                              that have a special bearing on how
 +                              functions work.
 +
 +Lambda Expressions
 +
 +* Lambda Components::       The parts of a lambda expression.
 +* Simple Lambda::           A simple example.
 +* Argument List::           Details and special features of argument lists.
 +* Function Documentation::  How to put documentation in a function.
 +
 +Macros
 +
 +* Simple Macro::            A basic example.
 +* Expansion::               How, when and why macros are expanded.
 +* Compiling Macros::        How macros are expanded by the compiler.
 +* Defining Macros::         How to write a macro definition.
 +* Backquote::               Easier construction of list structure.
 +* Problems with Macros::    Don't evaluate the macro arguments too many times.
 +                              Don't hide the user's variables.
 +* Indenting Macros::        Specifying how to indent macro calls.
 +
 +Common Problems Using Macros
 +
 +* Wrong Time::             Do the work in the expansion, not in the macro.
 +* Argument Evaluation::    The expansion should evaluate each macro arg once.
 +* Surprising Local Vars::  Local variable bindings in the expansion
 +                              require special care.
 +* Eval During Expansion::  Don't evaluate them; put them in the expansion.
 +* Repeated Expansion::     Avoid depending on how many times expansion is done.
 +
 +Writing Customization Definitions
 +
 +* Common Keywords::         Common keyword arguments for all kinds of
 +                              customization declarations.
 +* Group Definitions::       Writing customization group definitions.
 +* Variable Definitions::    Declaring user options.
 +* Customization Types::     Specifying the type of a user option.
 +
 +Customization Types
 +
 +* Simple Types::            Simple customization types: sexp, integer, number,
 +                              string, file, directory, alist.
 +* Composite Types::         Build new types from other types or data.
 +* Splicing into Lists::     Splice elements into list with @code{:inline}.
 +* Type Keywords::           Keyword-argument pairs in a customization type.
 +* Defining New Types::      Give your type a name.
 +
 +Loading
 +
 +* How Programs Do Loading:: The @code{load} function and others.
 +* Load Suffixes::           Details about the suffixes that @code{load} tries.
 +* Library Search::          Finding a library to load.
 +* Loading Non-ASCII::       Non-@acronym{ASCII} characters in Emacs Lisp files.
 +* Autoload::                Setting up a function to autoload.
 +* Repeated Loading::        Precautions about loading a file twice.
 +* Named Features::          Loading a library if it isn't already loaded.
 +* Where Defined::           Finding which file defined a certain symbol.
 +* Unloading::             How to "unload" a library that was loaded.
 +* Hooks for Loading::     Providing code to be run when
 +                            particular libraries are loaded.
 +
 +Byte Compilation
 +
 +* Speed of Byte-Code::      An example of speedup from byte compilation.
 +* Compilation Functions::   Byte compilation functions.
 +* Docs and Compilation::    Dynamic loading of documentation strings.
 +* Dynamic Loading::         Dynamic loading of individual functions.
 +* Eval During Compile::     Code to be evaluated when you compile.
 +* Compiler Errors::         Handling compiler error messages.
 +* Byte-Code Objects::     The data type used for byte-compiled functions.
 +* Disassembly::             Disassembling byte-code; how to read byte-code.
 +
 +Advising Emacs Lisp Functions
 +
 +* Simple Advice::           A simple example to explain the basics of advice.
 +* Defining Advice::         Detailed description of @code{defadvice}.
 +* Around-Advice::           Wrapping advice around a function's definition.
 +* Computed Advice::         ...is to @code{defadvice} as @code{fset} is to @code{defun}.
 +* Activation of Advice::    Advice doesn't do anything until you activate it.
 +* Enabling Advice::         You can enable or disable each piece of advice.
 +* Preactivation::           Preactivation is a way of speeding up the
 +                              loading of compiled advice.
 +* Argument Access in Advice:: How advice can access the function's arguments.
 +* Advising Primitives::     Accessing arguments when advising a primitive.
 +* Combined Definition::     How advice is implemented.
 +
 +Debugging Lisp Programs
 +
 +* Debugger::                How the Emacs Lisp debugger is implemented.
 +* Edebug::                  A source-level Emacs Lisp debugger.
 +* Syntax Errors::           How to find syntax errors.
 +* Test Coverage::           Ensuring you have tested all branches in your code.
 +* Compilation Errors::      How to find errors that show up in
 +                              byte compilation.
 +
 +The Lisp Debugger
 +
 +* Error Debugging::         Entering the debugger when an error happens.
 +* Infinite Loops::        Stopping and debugging a program that doesn't exit.
 +* Function Debugging::      Entering it when a certain function is called.
 +* Explicit Debug::          Entering it at a certain point in the program.
 +* Using Debugger::          What the debugger does; what you see while in it.
 +* Debugger Commands::       Commands used while in the debugger.
 +* Invoking the Debugger::   How to call the function @code{debug}.
 +* Internals of Debugger::   Subroutines of the debugger, and global variables.
 +
 +Edebug
 +
 +* Using Edebug::          Introduction to use of Edebug.
 +* Instrumenting::         You must instrument your code
 +                            in order to debug it with Edebug.
 +* Edebug Execution Modes::  Execution modes, stopping more or less often.
 +* Jumping::               Commands to jump to a specified place.
 +* Edebug Misc::                   Miscellaneous commands.
 +* Breaks::                Setting breakpoints to make the program stop.
 +* Trapping Errors::       Trapping errors with Edebug.
 +* Edebug Views::          Views inside and outside of Edebug.
 +* Edebug Eval::                   Evaluating expressions within Edebug.
 +* Eval List::             Expressions whose values are displayed
 +                            each time you enter Edebug.
 +* Printing in Edebug::            Customization of printing.
 +* Trace Buffer::          How to produce trace output in a buffer.
 +* Coverage Testing::      How to test evaluation coverage.
 +* The Outside Context::           Data that Edebug saves and restores.
 +* Edebug and Macros::       Specifying how to handle macro calls.
 +* Edebug Options::        Option variables for customizing Edebug.
 +
 +Debugging Invalid Lisp Syntax
 +
 +* Excess Open::             How to find a spurious open paren or missing close.
 +* Excess Close::            How to find a spurious close paren or missing open.
 +
 +Reading and Printing Lisp Objects
 +
 +* Streams Intro::           Overview of streams, reading and printing.
 +* Input Streams::           Various data types that can be used as
 +                              input streams.
 +* Input Functions::         Functions to read Lisp objects from text.
 +* Output Streams::          Various data types that can be used as
 +                              output streams.
 +* Output Functions::        Functions to print Lisp objects as text.
 +* Output Variables::        Variables that control what the printing
 +                              functions do.
 +
 +Minibuffers
 +
 +* Intro to Minibuffers::    Basic information about minibuffers.
 +* Text from Minibuffer::    How to read a straight text string.
 +* Object from Minibuffer::  How to read a Lisp object or expression.
 +* Minibuffer History::            Recording previous minibuffer inputs
 +                            so the user can reuse them.
 +* Initial Input::           Specifying initial contents for the minibuffer.
 +* Completion::              How to invoke and customize completion.
 +* Yes-or-No Queries::       Asking a question with a simple answer.
 +* Multiple Queries::      Asking a series of similar questions.
 +* Reading a Password::            Reading a password from the terminal.
 +* Minibuffer Commands::     Commands used as key bindings in minibuffers.
 +* Minibuffer Contents::     How such commands access the minibuffer text.
 +* Minibuffer Windows::      Operating on the special minibuffer windows.
 +* Recursive Mini::          Whether recursive entry to minibuffer is allowed.
 +* Minibuffer Misc::         Various customization hooks and variables.
 +
 +Completion
 +
 +* Basic Completion::        Low-level functions for completing strings.
 +                              (These are too low level to use the minibuffer.)
 +* Minibuffer Completion::   Invoking the minibuffer with completion.
 +* Completion Commands::     Minibuffer commands that do completion.
 +* High-Level Completion::   Convenient special cases of completion
 +                              (reading buffer name, file name, etc.)
 +* Reading File Names::      Using completion to read file names.
 +* Programmed Completion::   Finding the completions for a given file name.
 +
 +Command Loop
 +
 +* Command Overview::    How the command loop reads commands.
 +* Defining Commands::   Specifying how a function should read arguments.
 +* Interactive Call::    Calling a command, so that it will read arguments.
++* Distinguish Interactive::     Making a command distinguish interactive calls.
 +* Command Loop Info::   Variables set by the command loop for you to examine.
 +* Adjusting Point::     Adjustment of point after a command.
 +* Input Events::      What input looks like when you read it.
 +* Reading Input::       How to read input events from the keyboard or mouse.
 +* Special Events::      Events processed immediately and individually.
 +* Waiting::             Waiting for user input or elapsed time.
 +* Quitting::            How @kbd{C-g} works.  How to catch or defer quitting.
 +* Prefix Command Arguments::    How the commands to set prefix args work.
 +* Recursive Editing::   Entering a recursive edit,
 +                          and why you usually shouldn't.
 +* Disabling Commands::  How the command loop handles disabled commands.
 +* Command History::     How the command history is set up, and how accessed.
 +* Keyboard Macros::     How keyboard macros are implemented.
 +
 +Defining Commands
 +
 +* Using Interactive::       General rules for @code{interactive}.
 +* Interactive Codes::       The standard letter-codes for reading arguments
 +                              in various ways.
 +* Interactive Examples::    Examples of how to read interactive arguments.
 +
 +Input Events
 +
 +* Keyboard Events::         Ordinary characters--keys with symbols on them.
 +* Function Keys::           Function keys--keys with names, not symbols.
 +* Mouse Events::            Overview of mouse events.
 +* Click Events::            Pushing and releasing a mouse button.
 +* Drag Events::             Moving the mouse before releasing the button.
 +* Button-Down Events::      A button was pushed and not yet released.
 +* Repeat Events::           Double and triple click (or drag, or down).
 +* Motion Events::           Just moving the mouse, not pushing a button.
 +* Focus Events::            Moving the mouse between frames.
 +* Misc Events::             Other events the system can generate.
 +* Event Examples::          Examples of the lists for mouse events.
 +* Classifying Events::      Finding the modifier keys in an event symbol.
 +* Accessing Events::        Functions to extract info from events.
 +* Strings of Events::       Special considerations for putting
 +                              keyboard character events in a string.
 +
 +Reading Input
 +
 +* Key Sequence Input::      How to read one key sequence.
 +* Reading One Event::       How to read just one event.
 +* Event Mod::               How Emacs modifies events as they are read.
 +* Invoking the Input Method::   How reading an event uses the input method.
 +* Quoted Character Input::  Asking the user to specify a character.
 +* Event Input Misc::        How to reread or throw away input events.
 +
 +Keymaps
 +
 +* Key Sequences::           Key sequences as Lisp objects.
 +* Keymap Basics::           Basic concepts of keymaps.
 +* Format of Keymaps::       What a keymap looks like as a Lisp object.
 +* Creating Keymaps::        Functions to create and copy keymaps.
 +* Inheritance and Keymaps:: How one keymap can inherit the bindings
 +                              of another keymap.
 +* Prefix Keys::             Defining a key with a keymap as its definition.
 +* Active Keymaps::          How Emacs searches the active keymaps
 +                              for a key binding.
 +* Searching Keymaps::       A pseudo-Lisp summary of searching active maps.
 +* Controlling Active Maps:: Each buffer has a local keymap
 +                               to override the standard (global) bindings.
 +                               A minor mode can also override them.
 +* Key Lookup::              How extracting elements from keymaps works.
 +* Functions for Key Lookup::    How to request key lookup.
 +* Changing Key Bindings::   Redefining a key in a keymap.
 +* Remapping Commands::      A keymap can translate one command to another.
 +* Translation Keymaps::     Keymaps for translating sequences of events.
 +* Key Binding Commands::    Interactive interfaces for redefining keys.
 +* Scanning Keymaps::        Looking through all keymaps, for printing help.
 +* Menu Keymaps::            A keymap can define a menu for X
 +                              or for use from the terminal.
 +* Standard Keymaps::        List of standard keymaps.
 +
 +Major and Minor Modes
 +
 +* Hooks::                   How to use hooks; how to write code that
 +                              provides hooks.
 +* Major Modes::             Defining major modes.
 +* Minor Modes::             Defining minor modes.
 +* Mode Line Format::        Customizing the text that appears in the mode line.
 +* Imenu::                   How a mode can provide a menu
 +                              of definitions in the buffer.
 +* Font Lock Mode::          How modes can highlight text according to syntax.
 +* Desktop Save Mode::       How modes can have buffer state saved between
 +                              Emacs sessions.
 +
 +Menu Keymaps
 +
 +* Defining Menus::          How to make a keymap that defines a menu.
 +* Mouse Menus::             How users actuate the menu with the mouse.
 +* Keyboard Menus::          How users actuate the menu with the keyboard.
 +* Menu Example::            Making a simple menu.
 +* Menu Bar::                How to customize the menu bar.
 +* Tool Bar::                A tool bar is a row of images.
 +* Modifying Menus::         How to add new items to a menu.
 +
 +Defining Menus
 +
 +* Simple Menu Items::       A simple kind of menu key binding,
 +                              limited in capabilities.
 +* Extended Menu Items::     More powerful menu item definitions
 +                              let you specify keywords to enable
 +                              various features.
 +* Menu Separators::         Drawing a horizontal line through a menu.
 +* Alias Menu Items::        Using command aliases in menu items.
 +
 +Major and Minor Modes
 +
 +* Hooks::              How to use hooks; how to write code that provides hooks.
 +* Major Modes::        Defining major modes.
 +* Minor Modes::        Defining minor modes.
 +* Mode Line Format::   Customizing the text that appears in the mode line.
 +* Imenu::              How a mode can provide a menu
 +                         of definitions in the buffer.
 +* Font Lock Mode::     How modes can highlight text according to syntax.
 +* Desktop Save Mode::  How modes can have buffer state saved between
 +                         Emacs sessions.
 +
 +Major Modes
 +
 +* Major Mode Basics::
 +* Major Mode Conventions::  Coding conventions for keymaps, etc.
 +* Example Major Modes::     Text mode and Lisp modes.
 +* Auto Major Mode::         How Emacs chooses the major mode automatically.
 +* Mode Help::               Finding out how to use a mode.
 +* Derived Modes::           Defining a new major mode based on another major
 +                              mode.
 +* Generic Modes::           Defining a simple major mode that supports
 +                              comment syntax and Font Lock mode.
 +* Mode Hooks::              Hooks run at the end of major mode functions.
 +
 +Minor Modes
 +
 +* Minor Mode Conventions::  Tips for writing a minor mode.
 +* Keymaps and Minor Modes:: How a minor mode can have its own keymap.
 +* Defining Minor Modes::    A convenient facility for defining minor modes.
 +
 +Mode Line Format
 +
 +* Mode Line Basics::
 +* Mode Line Data::          The data structure that controls the mode line.
 +* Mode Line Variables::     Variables used in that data structure.
 +* %-Constructs::            Putting information into a mode line.
 +* Properties in Mode::      Using text properties in the mode line.
 +* Header Lines::            Like a mode line, but at the top.
 +* Emulating Mode Line::     Formatting text as the mode line would.
 +
 +Font Lock Mode
 +
 +* Font Lock Basics::        Overview of customizing Font Lock.
 +* Search-based Fontification::  Fontification based on regexps.
 +* Customizing Keywords::    Customizing search-based fontification.
 +* Other Font Lock Variables::   Additional customization facilities.
 +* Levels of Font Lock::     Each mode can define alternative levels
 +                              so that the user can select more or less.
 +* Precalculated Fontification:: How Lisp programs that produce the buffer
 +                                  contents can also specify how to fontify it.
 +* Faces for Font Lock::     Special faces specifically for Font Lock.
 +* Syntactic Font Lock::     Fontification based on syntax tables.
 +* Setting Syntax Properties::   Defining character syntax based on context
 +                                  using the Font Lock mechanism.
 +* Multiline Font Lock::     How to coerce Font Lock into properly
 +                              highlighting multiline constructs.
 +
 +Multiline Font Lock Constructs
 +
 +* Font Lock Multiline::     Marking multiline chunks with a text property
 +* Region to Fontify::       Controlling which region gets refontified
 +                              after a buffer change.
 +
 +Documentation
 +
 +* Documentation Basics::    Good style for doc strings.
 +                              Where to put them.  How Emacs stores them.
 +* Accessing Documentation:: How Lisp programs can access doc strings.
 +* Keys in Documentation::   Substituting current key bindings.
 +* Describing Characters::   Making printable descriptions of
 +                              non-printing characters and key sequences.
 +* Help Functions::          Subroutines used by Emacs help facilities.
 +
 +Files
 +
 +* Visiting Files::          Reading files into Emacs buffers for editing.
 +* Saving Buffers::          Writing changed buffers back into files.
 +* Reading from Files::      Reading files into other buffers.
 +* Writing to Files::        Writing new files from parts of buffers.
 +* File Locks::              Locking and unlocking files, to prevent
 +                              simultaneous editing by two people.
 +* Information about Files:: Testing existence, accessibility, size of files.
 +* Changing Files::          Renaming files, changing protection, etc.
 +* File Names::              Decomposing and expanding file names.
 +* Contents of Directories:: Getting a list of the files in a directory.
 +* Create/Delete Dirs::            Creating and Deleting Directories.
 +* Magic File Names::      Defining "magic" special handling
 +                            for certain file names.
 +* Format Conversion::       Conversion to and from various file formats.
 +
 +Visiting Files
 +
 +* Visiting Functions::      The usual interface functions for visiting.
 +* Subroutines of Visiting:: Lower-level subroutines that they use.
 +
 +Information about Files
 +
 +* Testing Accessibility::   Is a given file readable?  Writable?
 +* Kinds of Files::          Is it a directory?  A symbolic link?
 +* Truenames::             Eliminating symbolic links from a file name.
 +* File Attributes::         How large is it?  Any other names?  Etc.
 +* Locating Files::          How to find a file in standard places.
 +
 +File Names
 +
 +* File Name Components::    The directory part of a file name, and the rest.
 +* Relative File Names::     Some file names are relative to a
 +                              current directory.
 +* Directory Names::         A directory's name as a directory
 +                              is different from its name as a file.
 +* File Name Expansion::     Converting relative file names to absolute ones.
 +* Unique File Names::       Generating names for temporary files.
 +* File Name Completion::    Finding the completions for a given file name.
 +* Standard File Names::     If your package uses a fixed file name,
 +                              how to handle various operating systems simply.
 +
 +Backups and Auto-Saving
 +
 +* Backup Files::            How backup files are made; how their names
 +                              are chosen.
 +* Auto-Saving::             How auto-save files are made; how their
 +                              names are chosen.
 +* Reverting::               @code{revert-buffer}, and how to customize
 +                              what it does.
 +
 +Backup Files
 +
 +* Making Backups::          How Emacs makes backup files, and when.
 +* Rename or Copy::          Two alternatives: renaming the old file
 +                              or copying it.
 +* Numbered Backups::        Keeping multiple backups for each source file.
 +* Backup Names::            How backup file names are computed; customization.
 +
 +Buffers
 +
 +* Buffer Basics::           What is a buffer?
 +* Current Buffer::          Designating a buffer as current
 +                              so primitives will access its contents.
 +* Buffer Names::            Accessing and changing buffer names.
 +* Buffer File Name::        The buffer file name indicates which file
 +                              is visited.
 +* Buffer Modification::     A buffer is @dfn{modified} if it needs to be saved.
 +* Modification Time::       Determining whether the visited file was changed
 +                              ``behind Emacs's back''.
 +* Read Only Buffers::       Modifying text is not allowed in a
 +                              read-only buffer.
 +* The Buffer List::         How to look at all the existing buffers.
 +* Creating Buffers::        Functions that create buffers.
 +* Killing Buffers::         Buffers exist until explicitly killed.
 +* Indirect Buffers::        An indirect buffer shares text with some
 +                              other buffer.
 +* Buffer Gap::              The gap in the buffer.
 +
 +Windows
 +
 +* Basic Windows::           Basic information on using windows.
 +* Splitting Windows::       Splitting one window into two windows.
 +* Deleting Windows::        Deleting a window gives its space to other windows.
 +* Selecting Windows::       The selected window is the one that you edit in.
 +* Cyclic Window Ordering::  Moving around the existing windows.
 +* Buffers and Windows::     Each window displays the contents of a buffer.
 +* Displaying Buffers::      Higher-level functions for displaying a buffer
 +                              and choosing a window for it.
 +* Choosing Window::       How to choose a window for displaying a buffer.
 +* Window Point::            Each window has its own location of point.
 +* Window Start::            The display-start position controls which text
 +                              is on-screen in the window.
 +* Textual Scrolling::       Moving text up and down through the window.
 +* Vertical Scrolling::      Moving the contents up and down on the window.
 +* Horizontal Scrolling::    Moving the contents sideways on the window.
 +* Size of Window::          Accessing the size of a window.
 +* Resizing Windows::        Changing the size of a window.
 +* Coordinates and Windows:: Converting coordinates to windows.
 +* Window Tree::             The layout and sizes of all windows in a frame.
 +* Window Configurations::   Saving and restoring the state of the screen.
 +* Window Hooks::            Hooks for scrolling, window size changes,
 +                              redisplay going past a certain point,
 +                              or window configuration changes.
 +
 +Frames
 +
 +* Creating Frames::       Creating additional frames.
 +* Multiple Displays::       Creating frames on other displays.
 +* Frame Parameters::      Controlling frame size, position, font, etc.
 +* Frame Titles::            Automatic updating of frame titles.
 +* Deleting Frames::       Frames last until explicitly deleted.
 +* Finding All Frames::            How to examine all existing frames.
 +* Frames and Windows::            A frame contains windows;
 +                            display of text always works through windows.
 +* Minibuffers and Frames::  How a frame finds the minibuffer to use.
 +* Input Focus::                   Specifying the selected frame.
 +* Visibility of Frames::    Frames may be visible or invisible, or icons.
 +* Raising and Lowering::    Raising a frame makes it hide other windows;
 +                            lowering it puts it underneath the others.
 +* Frame Configurations::    Saving the state of all frames.
 +* Mouse Tracking::        Getting events that say when the mouse moves.
 +* Mouse Position::        Asking where the mouse is, or moving it.
 +* Pop-Up Menus::          Displaying a menu for the user to select from.
 +* Dialog Boxes::            Displaying a box to ask yes or no.
 +* Pointer Shape::           Specifying the shape of the mouse pointer.
 +* Window System Selections::Transferring text to and from other windows.
 +* Drag and Drop::               Internals of Drag-and-Drop implementation.
 +* Color Names::                   Getting the definitions of color names.
 +* Text Terminal Colors::    Defining colors for text-only terminals.
 +* Resources::             Getting resource values from the server.
 +* Display Feature Testing:: Determining the features of a terminal.
 +
 +Frame Parameters
 +
 +* Parameter Access::        How to change a frame's parameters.
 +* Initial Parameters::            Specifying frame parameters when you make a frame.
 +* Window Frame Parameters:: List of frame parameters for window systems.
 +* Size and Position::       Changing the size and position of a frame.
 +* Geometry::                Parsing geometry specifications.
 +
 +Window Frame Parameters
 +
 +* Basic Parameters::        Parameters that are fundamental.
 +* Position Parameters::     The position of the frame on the screen.
 +* Size Parameters::         Frame's size.
 +* Layout Parameters::       Size of parts of the frame, and
 +                              enabling or disabling some parts.
 +* Buffer Parameters::       Which buffers have been or should be shown.
 +* Management Parameters::   Communicating with the window manager.
 +* Cursor Parameters::       Controlling the cursor appearance.
 +* Color Parameters::        Colors of various parts of the frame.
 +
 +Positions
 +
 +* Point::                   The special position where editing takes place.
 +* Motion::                  Changing point.
 +* Excursions::              Temporary motion and buffer changes.
 +* Narrowing::               Restricting editing to a portion of the buffer.
 +
 +Motion
 +
 +* Character Motion::        Moving in terms of characters.
 +* Word Motion::             Moving in terms of words.
 +* Buffer End Motion::       Moving to the beginning or end of the buffer.
 +* Text Lines::              Moving in terms of lines of text.
 +* Screen Lines::            Moving in terms of lines as displayed.
 +* List Motion::             Moving by parsing lists and sexps.
 +* Skipping Characters::     Skipping characters belonging to a certain set.
 +
 +Markers
 +
 +* Overview of Markers::     The components of a marker, and how it relocates.
 +* Predicates on Markers::   Testing whether an object is a marker.
 +* Creating Markers::        Making empty markers or markers at certain places.
 +* Information from Markers::Finding the marker's buffer or character
 +                              position.
 +* Marker Insertion Types::  Two ways a marker can relocate when you
 +                              insert where it points.
 +* Moving Markers::          Moving the marker to a new buffer or position.
 +* The Mark::                How "the mark" is implemented with a marker.
 +* The Region::              How to access "the region".
 +
 +Text
 +
 +* Near Point::              Examining text in the vicinity of point.
 +* Buffer Contents::         Examining text in a general fashion.
 +* Comparing Text::          Comparing substrings of buffers.
 +* Insertion::               Adding new text to a buffer.
 +* Commands for Insertion::  User-level commands to insert text.
 +* Deletion::                Removing text from a buffer.
 +* User-Level Deletion::     User-level commands to delete text.
 +* The Kill Ring::           Where removed text sometimes is saved for
 +                              later use.
 +* Undo::                    Undoing changes to the text of a buffer.
 +* Maintaining Undo::        How to enable and disable undo information.
 +                            How to control how much information is kept.
 +* Filling::                 Functions for explicit filling.
 +* Margins::                 How to specify margins for filling commands.
 +* Adaptive Fill::           Adaptive Fill mode chooses a fill prefix
 +                              from context.
 +* Auto Filling::            How auto-fill mode is implemented to break lines.
 +* Sorting::                 Functions for sorting parts of the buffer.
 +* Columns::                 Computing horizontal positions, and using them.
 +* Indentation::             Functions to insert or adjust indentation.
 +* Case Changes::            Case conversion of parts of the buffer.
 +* Text Properties::         Assigning Lisp property lists to text characters.
 +* Substitution::            Replacing a given character wherever it appears.
 +* Transposition::           Swapping two portions of a buffer.
 +* Registers::               How registers are implemented.  Accessing
 +                              the text or position stored in a register.
 +* Base 64::                 Conversion to or from base 64 encoding.
 +* MD5 Checksum::            Compute the MD5 "message digest"/"checksum".
 +* Atomic Changes::          Installing several buffer changes "atomically".
 +* Change Hooks::            Supplying functions to be run when text is changed.
 +
 +The Kill Ring
 +
 +* Kill Ring Concepts::      What text looks like in the kill ring.
 +* Kill Functions::          Functions that kill text.
 +* Yanking::                 How yanking is done.
 +* Yank Commands::           Commands that access the kill ring.
 +* Low-Level Kill Ring::           Functions and variables for kill ring access.
 +* Internals of Kill Ring::  Variables that hold kill-ring data.
 +
 +Indentation
 +
 +* Primitive Indent::        Functions used to count and insert indentation.
 +* Mode-Specific Indent::    Customize indentation for different modes.
 +* Region Indent::           Indent all the lines in a region.
 +* Relative Indent::         Indent the current line based on previous lines.
 +* Indent Tabs::             Adjustable, typewriter-like tab stops.
 +* Motion by Indent::        Move to first non-blank character.
 +
 +Text Properties
 +
 +* Examining Properties::    Looking at the properties of one character.
 +* Changing Properties::           Setting the properties of a range of text.
 +* Property Search::       Searching for where a property changes value.
 +* Special Properties::            Particular properties with special meanings.
 +* Format Properties::       Properties for representing formatting of text.
 +* Sticky Properties::       How inserted text gets properties from
 +                              neighboring text.
 +* Lazy Properties::         Computing text properties in a lazy fashion
 +                              only when text is examined.
 +* Clickable Text::          Using text properties to make regions of text
 +                              do something when you click on them.
 +* Links and Mouse-1::       How to make @key{Mouse-1} follow a link.
 +* Fields::                  The @code{field} property defines
 +                              fields within the buffer.
 +* Not Intervals::         Why text properties do not use
 +                            Lisp-visible text intervals.
 +
 +Non-ASCII Characters
 +
 +* Text Representations::    Unibyte and multibyte representations
 +* Converting Representations::  Converting unibyte to multibyte and vice versa.
 +* Selecting a Representation::  Treating a byte sequence as unibyte or multi.
 +* Character Codes::         How unibyte and multibyte relate to
 +                                codes of individual characters.
 +* Character Sets::          The space of possible character codes
 +                                is divided into various character sets.
 +* Chars and Bytes::         More information about multibyte encodings.
 +* Splitting Characters::    Converting a character to its byte sequence.
 +* Scanning Charsets::       Which character sets are used in a buffer?
 +* Translation of Characters::   Translation tables are used for conversion.
 +* Coding Systems::          Coding systems are conversions for saving files.
 +* Input Methods::           Input methods allow users to enter various
 +                                non-ASCII characters without special keyboards.
 +* Locales::                 Interacting with the POSIX locale.
 +
 +Coding Systems
 +
 +* Coding System Basics::    Basic concepts.
 +* Encoding and I/O::        How file I/O functions handle coding systems.
 +* Lisp and Coding Systems:: Functions to operate on coding system names.
 +* User-Chosen Coding Systems::  Asking the user to choose a coding system.
 +* Default Coding Systems::  Controlling the default choices.
 +* Specifying Coding Systems::   Requesting a particular coding system
 +                                    for a single file operation.
 +* Explicit Encoding::       Encoding or decoding text without doing I/O.
 +* Terminal I/O Encoding::   Use of encoding for terminal I/O.
 +* MS-DOS File Types::       How DOS "text" and "binary" files
 +                                relate to coding systems.
 +
 +Searching and Matching
 +
 +* String Search::           Search for an exact match.
 +* Searching and Case::      Case-independent or case-significant searching.
 +* Regular Expressions::     Describing classes of strings.
 +* Regexp Search::           Searching for a match for a regexp.
 +* POSIX Regexps::           Searching POSIX-style for the longest match.
 +* Match Data::              Finding out which part of the text matched,
 +                              after a string or regexp search.
 +* Search and Replace::            Commands that loop, searching and replacing.
 +* Standard Regexps::        Useful regexps for finding sentences, pages,...
 +
 +Regular Expressions
 +
 +* Syntax of Regexps::       Rules for writing regular expressions.
 +* Regexp Example::          Illustrates regular expression syntax.
 +* Regexp Functions::        Functions for operating on regular expressions.
 +
 +Syntax of Regular Expressions
 +
 +* Regexp Special::          Special characters in regular expressions.
 +* Char Classes::            Character classes used in regular expressions.
 +* Regexp Backslash::        Backslash-sequences in regular expressions.
 +
 +The Match Data
 +
 +* Replacing Match::       Replacing a substring that was matched.
 +* Simple Match Data::       Accessing single items of match data,
 +                            such as where a particular subexpression started.
 +* Entire Match Data::       Accessing the entire match data at once, as a list.
 +* Saving Match Data::       Saving and restoring the match data.
 +
 +Syntax Tables
 +
 +* Syntax Basics::           Basic concepts of syntax tables.
 +* Syntax Descriptors::      How characters are classified.
 +* Syntax Table Functions::  How to create, examine and alter syntax tables.
 +* Syntax Properties::       Overriding syntax with text properties.
 +* Motion and Syntax::     Moving over characters with certain syntaxes.
 +* Parsing Expressions::     Parsing balanced expressions
 +                              using the syntax table.
 +* Standard Syntax Tables::  Syntax tables used by various major modes.
 +* Syntax Table Internals::  How syntax table information is stored.
 +* Categories::              Another way of classifying character syntax.
 +
 +Syntax Descriptors
 +
 +* Syntax Class Table::      Table of syntax classes.
 +* Syntax Flags::            Additional flags each character can have.
 +
 +Parsing Expressions
 +
 +* Motion via Parsing::      Motion functions that work by parsing.
 +* Position Parse::          Determining the syntactic state of a position.
 +* Parser State::            How Emacs represents a syntactic state.
 +* Low-Level Parsing::       Parsing across a specified region.
 +* Control Parsing::         Parameters that affect parsing.
 +
 +Abbrevs And Abbrev Expansion
 +
 +* Abbrev Mode::             Setting up Emacs for abbreviation.
 +* Abbrev Tables::           Creating and working with abbrev tables.
 +* Defining Abbrevs::        Specifying abbreviations and their expansions.
 +* Abbrev Files::            Saving abbrevs in files.
 +* Abbrev Expansion::        Controlling expansion; expansion subroutines.
 +* Standard Abbrev Tables::  Abbrev tables used by various major modes.
 +
 +Processes
 +
 +* Subprocess Creation::     Functions that start subprocesses.
 +* Shell Arguments::         Quoting an argument to pass it to a shell.
 +* Synchronous Processes::   Details of using synchronous subprocesses.
 +* Asynchronous Processes::  Starting up an asynchronous subprocess.
 +* Deleting Processes::      Eliminating an asynchronous subprocess.
 +* Process Information::     Accessing run-status and other attributes.
 +* Input to Processes::      Sending input to an asynchronous subprocess.
 +* Signals to Processes::    Stopping, continuing or interrupting
 +                              an asynchronous subprocess.
 +* Output from Processes::   Collecting output from an asynchronous subprocess.
 +* Sentinels::               Sentinels run when process run-status changes.
 +* Query Before Exit::       Whether to query if exiting will kill a process.
 +* Transaction Queues::      Transaction-based communication with subprocesses.
 +* Network::                 Opening network connections.
 +* Network Servers::         Network servers let Emacs accept net connections.
 +* Datagrams::               UDP network connections.
 +* Low-Level Network::       Lower-level but more general function
 +                              to create connections and servers.
 +* Misc Network::            Additional relevant functions for network connections.
 +* Byte Packing::            Using bindat to pack and unpack binary data.
 +
 +Receiving Output from Processes
 +
 +* Process Buffers::         If no filter, output is put in a buffer.
 +* Filter Functions::        Filter functions accept output from the process.
 +* Decoding Output::         Filters can get unibyte or multibyte strings.
 +* Accepting Output::        How to wait until process output arrives.
 +
 +Low-Level Network Access
 +
 +* Proc: Network Processes.  Using @code{make-network-process}.
 +* Options: Network Options.  Further control over network connections.
 +* Features: Network Feature Testing.
 +                            Determining which network features work on
 +                              the machine you are using.
 +
 +Packing and Unpacking Byte Arrays
 +
 +* Bindat Spec::             Describing data layout.
 +* Bindat Functions::        Doing the unpacking and packing.
 +* Bindat Examples::         Samples of what bindat.el can do for you!
 +
 +Emacs Display
 +
 +* Refresh Screen::          Clearing the screen and redrawing everything on it.
 +* Forcing Redisplay::       Forcing redisplay.
 +* Truncation::              Folding or wrapping long text lines.
 +* The Echo Area::           Displaying messages at the bottom of the screen.
 +* Warnings::                Displaying warning messages for the user.
 +* Invisible Text::          Hiding part of the buffer text.
 +* Selective Display::       Hiding part of the buffer text (the old way).
 +* Temporary Displays::      Displays that go away automatically.
 +* Overlays::              Use overlays to highlight parts of the buffer.
 +* Width::                   How wide a character or string is on the screen.
 +* Line Height::             Controlling the height of lines.
 +* Faces::                 A face defines a graphics style
 +                              for text characters: font, colors, etc.
 +* Fringes::                 Controlling window fringes.
 +* Scroll Bars::             Controlling vertical scroll bars.
 +* Display Property::        Enabling special display features.
 +* Images::                  Displaying images in Emacs buffers.
 +* Buttons::                 Adding clickable buttons to Emacs buffers.
 +* Abstract Display::        Emacs' Widget for Object Collections.
 +* Blinking::                How Emacs shows the matching open parenthesis.
 +* Usual Display::         The usual conventions for displaying nonprinting chars.
 +* Display Tables::        How to specify other conventions.
 +* Beeping::                 Audible signal to the user.
 +* Window Systems::          Which window system is being used.
 +
 +The Echo Area
 +
 +* Displaying Messages::     Explicitly displaying text in the echo area.
 +* Progress::                Informing user about progress of a long operation.
 +* Logging Messages::        Echo area messages are logged for the user.
 +* Echo Area Customization:: Controlling the echo area.
 +
 +Reporting Warnings
 +
 +* Warning Basics::          Warnings concepts and functions to report them.
 +* Warning Variables::       Variables programs bind to customize their warnings.
 +* Warning Options::         Variables users set to control display of warnings.
 +
 +Overlays
 +
 +* Managing Overlays::       Creating and moving overlays.
 +* Overlay Properties::      How to read and set properties.
 +                          What properties do to the screen display.
 +* Finding Overlays::        Searching for overlays.
 +
 +Faces
 +
 +* Defining Faces::          How to define a face with @code{defface}.
 +* Face Attributes::         What is in a face?
 +* Attribute Functions::     Functions to examine and set face attributes.
 +* Displaying Faces::        How Emacs combines the faces specified for
 +                              a character.
 +* Font Selection::          Finding the best available font for a face.
 +* Face Functions::          How to define and examine faces.
 +* Auto Faces::              Hook for automatic face assignment.
 +* Font Lookup::             Looking up the names of available fonts
 +                              and information about them.
 +* Fontsets::                A fontset is a collection of fonts
 +                              that handle a range of character sets.
 +
 +Fringes
 +
 +* Fringe Size/Pos::         Specifying where to put the window fringes.
 +* Fringe Indicators::       Displaying indicator icons in the window fringes.
 +* Fringe Cursors::          Displaying cursors in the right fringe.
 +* Fringe Bitmaps::          Specifying bitmaps for fringe indicators.
 +* Customizing Bitmaps::     Specifying your own bitmaps to use in the fringes.
 +* Overlay Arrow::           Display of an arrow to indicate position.
 +
 +The @code{display} Property
 +
 +* Specified Space::         Displaying one space with a specified width.
 +* Pixel Specification::     Specifying space width or height in pixels.
 +* Other Display Specs::     Displaying an image; magnifying text; moving it
 +                              up or down on the page; adjusting the width
 +                              of spaces within text.
 +* Display Margins::         Displaying text or images to the side of
 +                              the main text.
 +
 +Images
 +
 +* Image Descriptors::       How to specify an image for use in @code{:display}.
 +* XBM Images::              Special features for XBM format.
 +* XPM Images::              Special features for XPM format.
 +* GIF Images::              Special features for GIF format.
 +* PostScript Images::       Special features for PostScript format.
 +* Other Image Types::       Various other formats are supported.
 +* Defining Images::         Convenient ways to define an image for later use.
 +* Showing Images::          Convenient ways to display an image once
 +                              it is defined.
 +* Image Cache::             Internal mechanisms of image display.
 +
 +Buttons
 +
 +* Button Properties::       Button properties with special meanings.
 +* Button Types::            Defining common properties for classes of buttons.
 +* Making Buttons::          Adding buttons to Emacs buffers.
 +* Manipulating Buttons::    Getting and setting properties of buttons.
 +* Button Buffer Commands::  Buffer-wide commands and bindings for buttons.
 +
 +Abstract Display
 +
 +* Abstract Display Functions::  Functions in the Ewoc package.
 +* Abstract Display Example::    Example of using Ewoc.
 +
 +Display Tables
 +
 +* Display Table Format::    What a display table consists of.
 +* Active Display Table::    How Emacs selects a display table to use.
 +* Glyphs::                  How to define a glyph, and what glyphs mean.
 +
 +Operating System Interface
 +
 +* Starting Up::             Customizing Emacs start-up processing.
 +* Getting Out::             How exiting works (permanent or temporary).
 +* System Environment::      Distinguish the name and kind of system.
 +* User Identification::     Finding the name and user id of the user.
 +* Time of Day::                   Getting the current time.
 +* Time Conversion::         Converting a time from numeric form to a string, or
 +                              to calendrical data (or vice versa).
 +* Time Parsing::            Converting a time from numeric form to text
 +                              and vice versa.
 +* Processor Run Time::      Getting the run time used by Emacs.
 +* Time Calculations::       Adding, subtracting, comparing times, etc.
 +* Timers::                Setting a timer to call a function at a certain time.
 +* Idle Timers::             Setting a timer to call a function when Emacs has
 +                              been idle for a certain length of time.
 +* Terminal Input::          Accessing and recording terminal input.
 +* Terminal Output::         Controlling and recording terminal output.
 +* Sound Output::            Playing sounds on the computer's speaker.
 +* X11 Keysyms::             Operating on key symbols for X Windows
 +* Batch Mode::              Running Emacs without terminal interaction.
 +* Session Management::      Saving and restoring state with X Session Management.
 +
 +Starting Up Emacs
 +
 +* Startup Summary::         Sequence of actions Emacs performs at start-up.
 +* Init File::               Details on reading the init file (@file{.emacs}).
 +* Terminal-Specific::       How the terminal-specific Lisp file is read.
 +* Command-Line Arguments::  How command-line arguments are processed,
 +                              and how you can customize them.
 +
 +Getting Out of Emacs
 +
 +* Killing Emacs::           Exiting Emacs irreversibly.
 +* Suspending Emacs::        Exiting Emacs reversibly.
 +
 +Terminal Input
 +
 +* Input Modes::                   Options for how input is processed.
 +* Recording Input::       Saving histories of recent or all input events.
 +
 +Tips and Conventions
 +
 +* Coding Conventions::      Conventions for clean and robust programs.
 +* Key Binding Conventions:: Which keys should be bound by which programs.
 +* Programming Tips::        Making Emacs code fit smoothly in Emacs.
 +* Compilation Tips::        Making compiled code run fast.
 +* Warning Tips::            Turning off compiler warnings.
 +* Documentation Tips::      Writing readable documentation strings.
 +* Comment Tips::          Conventions for writing comments.
 +* Library Headers::         Standard headers for library packages.
 +
 +GNU Emacs Internals
 +
 +* Building Emacs::          How the dumped Emacs is made.
 +* Pure Storage::            A kludge to make preloaded Lisp functions sharable.
 +* Garbage Collection::      Reclaiming space for Lisp objects no longer used.
 +* Memory Usage::            Info about total size of Lisp objects made so far.
 +* Writing Emacs Primitives::  Writing C code for Emacs.
 +* Object Internals::        Data formats of buffers, windows, processes.
 +
 +Object Internals
 +
 +* Buffer Internals::        Components of a buffer structure.
 +* Window Internals::        Components of a window structure.
 +* Process Internals::       Components of a process structure.
 +@end detailmenu
 +@end menu
 +
 +@include intro.texi
 +@include objects.texi
 +@include numbers.texi
 +@include strings.texi
 +
 +@include lists.texi
 +@include sequences.texi
 +@include hash.texi
 +@include symbols.texi
 +@include eval.texi
 +
 +@include control.texi
 +@include variables.texi
 +@include functions.texi
 +@include macros.texi
 +
 +@include customize.texi
 +@include loading.texi
 +@include compile.texi
 +@include advice.texi
 +
 +@include debugging.texi
 +@include streams.texi
 +@include minibuf.texi
 +@include commands.texi
 +
 +@include keymaps.texi
 +@include modes.texi
 +@include help.texi
 +@include files.texi
 +
 +@include backups.texi
 +@include buffers.texi
 +@include windows.texi
 +@include frames.texi
 +
 +@include positions.texi
 +@include markers.texi
 +@include text.texi
 +@include nonascii.texi
 +
 +@include searching.texi
 +@include syntax.texi
 +@include abbrevs.texi
 +@include processes.texi
 +
 +@include display.texi
 +@include os.texi
 +
 +@c MOVE to Emacs Manual:  include misc-modes.texi
 +
 +@c appendices
 +
 +@c  REMOVE this:  include non-hacker.texi
 +
 +@include anti.texi
 +@include doclicense.texi
 +@include gpl.texi
 +@include tips.texi
 +@include internals.texi
 +@include errors.texi
 +@include locals.texi
 +@include maps.texi
 +@include hooks.texi
 +
 +@include index.texi
 +
 +@ignore
 +@node New Symbols, , Index, Top
 +@unnumbered New Symbols Since the Previous Edition
 +
 +@printindex tp
 +@end ignore
 +
 +@bye
 +
 +\f
 +These words prevent "local variables" above from confusing Emacs.
 +
 +@ignore
 +   arch-tag: f7e9a219-a0e1-4776-b631-08eaa1d49b34
 +@end ignore
index c6da06b4a132eee46aaa593a3f1129beaeb66040,0000000000000000000000000000000000000000..daaaf6c9b9de23e8c0dc7d9aae33c24b617cb178
mode 100644,000000..100644
--- /dev/null
@@@ -1,4309 -1,0 +1,4309 @@@
- The argument @var{object} may be a string, a buffer, or a window.  If it
- is a window, then the buffer displayed in that window is used for text
- properties and overlays, but only the overlays active for that window
- are considered.  If @var{object} is a buffer, then all overlays in that
- buffer are considered, as well as text properties.  If @var{object} is a
- string, only text properties are considered, since strings never have
- overlays.
 +@c -*-texinfo-*-
 +@c This is part of the GNU Emacs Lisp Reference Manual.
 +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
 +@c   2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 +@c See the file elisp.texi for copying conditions.
 +@setfilename ../../info/text
 +@node Text, Non-ASCII Characters, Markers, Top
 +@chapter Text
 +@cindex text
 +
 +  This chapter describes the functions that deal with the text in a
 +buffer.  Most examine, insert, or delete text in the current buffer,
 +often operating at point or on text adjacent to point.  Many are
 +interactive.  All the functions that change the text provide for undoing
 +the changes (@pxref{Undo}).
 +
 +  Many text-related functions operate on a region of text defined by two
 +buffer positions passed in arguments named @var{start} and @var{end}.
 +These arguments should be either markers (@pxref{Markers}) or numeric
 +character positions (@pxref{Positions}).  The order of these arguments
 +does not matter; it is all right for @var{start} to be the end of the
 +region and @var{end} the beginning.  For example, @code{(delete-region 1
 +10)} and @code{(delete-region 10 1)} are equivalent.  An
 +@code{args-out-of-range} error is signaled if either @var{start} or
 +@var{end} is outside the accessible portion of the buffer.  In an
 +interactive call, point and the mark are used for these arguments.
 +
 +@cindex buffer contents
 +  Throughout this chapter, ``text'' refers to the characters in the
 +buffer, together with their properties (when relevant).  Keep in mind
 +that point is always between two characters, and the cursor appears on
 +the character after point.
 +
 +@menu
 +* Near Point::       Examining text in the vicinity of point.
 +* Buffer Contents::  Examining text in a general fashion.
 +* Comparing Text::   Comparing substrings of buffers.
 +* Insertion::        Adding new text to a buffer.
 +* Commands for Insertion::  User-level commands to insert text.
 +* Deletion::         Removing text from a buffer.
 +* User-Level Deletion::     User-level commands to delete text.
 +* The Kill Ring::    Where removed text sometimes is saved for later use.
 +* Undo::             Undoing changes to the text of a buffer.
 +* Maintaining Undo:: How to enable and disable undo information.
 +                      How to control how much information is kept.
 +* Filling::          Functions for explicit filling.
 +* Margins::          How to specify margins for filling commands.
 +* Adaptive Fill::    Adaptive Fill mode chooses a fill prefix from context.
 +* Auto Filling::     How auto-fill mode is implemented to break lines.
 +* Sorting::          Functions for sorting parts of the buffer.
 +* Columns::          Computing horizontal positions, and using them.
 +* Indentation::      Functions to insert or adjust indentation.
 +* Case Changes::     Case conversion of parts of the buffer.
 +* Text Properties::  Assigning Lisp property lists to text characters.
 +* Substitution::     Replacing a given character wherever it appears.
 +* Transposition::    Swapping two portions of a buffer.
 +* Registers::        How registers are implemented.  Accessing the text or
 +                       position stored in a register.
 +* Base 64::          Conversion to or from base 64 encoding.
 +* MD5 Checksum::     Compute the MD5 "message digest"/"checksum".
 +* Atomic Changes::   Installing several buffer changes "atomically".
 +* Change Hooks::     Supplying functions to be run when text is changed.
 +@end menu
 +
 +@node Near Point
 +@section Examining Text Near Point
 +@cindex text near point
 +
 +  Many functions are provided to look at the characters around point.
 +Several simple functions are described here.  See also @code{looking-at}
 +in @ref{Regexp Search}.
 +
 +In the following four functions, ``beginning'' or ``end'' of buffer
 +refers to the beginning or end of the accessible portion.
 +
 +@defun char-after &optional position
 +This function returns the character in the current buffer at (i.e.,
 +immediately after) position @var{position}.  If @var{position} is out of
 +range for this purpose, either before the beginning of the buffer, or at
 +or beyond the end, then the value is @code{nil}.  The default for
 +@var{position} is point.
 +
 +In the following example, assume that the first character in the
 +buffer is @samp{@@}:
 +
 +@example
 +@group
 +(char-to-string (char-after 1))
 +     @result{} "@@"
 +@end group
 +@end example
 +@end defun
 +
 +@defun char-before &optional position
 +This function returns the character in the current buffer immediately
 +before position @var{position}.  If @var{position} is out of range for
 +this purpose, either at or before the beginning of the buffer, or beyond
 +the end, then the value is @code{nil}.  The default for
 +@var{position} is point.
 +@end defun
 +
 +@defun following-char
 +This function returns the character following point in the current
 +buffer.  This is similar to @code{(char-after (point))}.  However, if
 +point is at the end of the buffer, then @code{following-char} returns 0.
 +
 +Remember that point is always between characters, and the cursor
 +normally appears over the character following point.  Therefore, the
 +character returned by @code{following-char} is the character the
 +cursor is over.
 +
 +In this example, point is between the @samp{a} and the @samp{c}.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +Gentlemen may cry ``Pea@point{}ce! Peace!,''
 +but there is no peace.
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(char-to-string (preceding-char))
 +     @result{} "a"
 +(char-to-string (following-char))
 +     @result{} "c"
 +@end group
 +@end example
 +@end defun
 +
 +@defun preceding-char
 +This function returns the character preceding point in the current
 +buffer.  See above, under @code{following-char}, for an example.  If
 +point is at the beginning of the buffer, @code{preceding-char} returns
 +0.
 +@end defun
 +
 +@defun bobp
 +This function returns @code{t} if point is at the beginning of the
 +buffer.  If narrowing is in effect, this means the beginning of the
 +accessible portion of the text.  See also @code{point-min} in
 +@ref{Point}.
 +@end defun
 +
 +@defun eobp
 +This function returns @code{t} if point is at the end of the buffer.
 +If narrowing is in effect, this means the end of accessible portion of
 +the text.  See also @code{point-max} in @xref{Point}.
 +@end defun
 +
 +@defun bolp
 +This function returns @code{t} if point is at the beginning of a line.
 +@xref{Text Lines}.  The beginning of the buffer (or of its accessible
 +portion) always counts as the beginning of a line.
 +@end defun
 +
 +@defun eolp
 +This function returns @code{t} if point is at the end of a line.  The
 +end of the buffer (or of its accessible portion) is always considered
 +the end of a line.
 +@end defun
 +
 +@node Buffer Contents
 +@section Examining Buffer Contents
 +
 +  This section describes functions that allow a Lisp program to
 +convert any portion of the text in the buffer into a string.
 +
 +@defun buffer-substring start end
 +This function returns a string containing a copy of the text of the
 +region defined by positions @var{start} and @var{end} in the current
 +buffer.  If the arguments are not positions in the accessible portion of
 +the buffer, @code{buffer-substring} signals an @code{args-out-of-range}
 +error.
 +
 +It is not necessary for @var{start} to be less than @var{end}; the
 +arguments can be given in either order.  But most often the smaller
 +argument is written first.
 +
 +Here's an example which assumes Font-Lock mode is not enabled:
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of buffer foo
 +
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(buffer-substring 1 10)
 +     @result{} "This is t"
 +@end group
 +@group
 +(buffer-substring (point-max) 10)
 +     @result{} "he contents of buffer foo\n"
 +@end group
 +@end example
 +
 +If the text being copied has any text properties, these are copied into
 +the string along with the characters they belong to.  @xref{Text
 +Properties}.  However, overlays (@pxref{Overlays}) in the buffer and
 +their properties are ignored, not copied.
 +
 +For example, if Font-Lock mode is enabled, you might get results like
 +these:
 +
 +@example
 +@group
 +(buffer-substring 1 10)
 +     @result{} #("This is t" 0 1 (fontified t) 1 9 (fontified t))
 +@end group
 +@end example
 +@end defun
 +
 +@defun buffer-substring-no-properties start end
 +This is like @code{buffer-substring}, except that it does not copy text
 +properties, just the characters themselves.  @xref{Text Properties}.
 +@end defun
 +
 +@defun filter-buffer-substring start end &optional delete noprops
 +This function passes the buffer text between @var{start} and @var{end}
 +through the filter functions specified by the variable
 +@code{buffer-substring-filters}, and returns the value from the last
 +filter function.  If @code{buffer-substring-filters} is @code{nil},
 +the value is the unaltered text from the buffer, what
 +@code{buffer-substring} would return.
 +
 +If @var{delete} is non-@code{nil}, this function deletes the text
 +between @var{start} and @var{end} after copying it, like
 +@code{delete-and-extract-region}.
 +
 +If @var{noprops} is non-@code{nil}, the final string returned does not
 +include text properties, while the string passed through the filters
 +still includes text properties from the buffer text.
 +
 +Lisp code should use this function instead of @code{buffer-substring},
 +@code{buffer-substring-no-properties},
 +or @code{delete-and-extract-region} when copying into user-accessible
 +data structures such as the kill-ring, X clipboard, and registers.
 +Major and minor modes can add functions to
 +@code{buffer-substring-filters} to alter such text as it is copied out
 +of the buffer.
 +@end defun
 +
 +@defvar buffer-substring-filters
 +This variable should be a list of functions that accept a single
 +argument, a string, and return a string.
 +@code{filter-buffer-substring} passes the buffer substring to the
 +first function in this list, and the return value of each function is
 +passed to the next function.  The return value of the last function is
 +used as the return value of @code{filter-buffer-substring}.
 +
 +As a special convention, point is set to the start of the buffer text
 +being operated on (i.e., the @var{start} argument for
 +@code{filter-buffer-substring}) before these functions are called.
 +
 +If this variable is @code{nil}, no filtering is performed.
 +@end defvar
 +
 +@defun buffer-string
 +This function returns the contents of the entire accessible portion of
 +the current buffer as a string.  It is equivalent to
 +
 +@example
 +(buffer-substring (point-min) (point-max))
 +@end example
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of buffer foo
 +
 +---------- Buffer: foo ----------
 +
 +(buffer-string)
 +     @result{} "This is the contents of buffer foo\n"
 +@end group
 +@end example
 +@end defun
 +
 +@defun current-word &optional strict really-word
 +This function returns the symbol (or word) at or near point, as a string.
 +The return value includes no text properties.
 +
 +If the optional argument @var{really-word} is non-@code{nil}, it finds a
 +word; otherwise, it finds a symbol (which includes both word
 +characters and symbol constituent characters).
 +
 +If the optional argument @var{strict} is non-@code{nil}, then point
 +must be in or next to the symbol or word---if no symbol or word is
 +there, the function returns @code{nil}.  Otherwise, a nearby symbol or
 +word on the same line is acceptable.
 +@end defun
 +
 +@defun thing-at-point thing
 +Return the @var{thing} around or next to point, as a string.
 +
 +The argument @var{thing} is a symbol which specifies a kind of syntactic
 +entity.  Possibilities include @code{symbol}, @code{list}, @code{sexp},
 +@code{defun}, @code{filename}, @code{url}, @code{word}, @code{sentence},
 +@code{whitespace}, @code{line}, @code{page}, and others.
 +
 +@example
 +---------- Buffer: foo ----------
 +Gentlemen may cry ``Pea@point{}ce! Peace!,''
 +but there is no peace.
 +---------- Buffer: foo ----------
 +
 +(thing-at-point 'word)
 +     @result{} "Peace"
 +(thing-at-point 'line)
 +     @result{} "Gentlemen may cry ``Peace! Peace!,''\n"
 +(thing-at-point 'whitespace)
 +     @result{} nil
 +@end example
 +@end defun
 +
 +@node Comparing Text
 +@section Comparing Text
 +@cindex comparing buffer text
 +
 +  This function lets you compare portions of the text in a buffer, without
 +copying them into strings first.
 +
 +@defun compare-buffer-substrings buffer1 start1 end1 buffer2 start2 end2
 +This function lets you compare two substrings of the same buffer or two
 +different buffers.  The first three arguments specify one substring,
 +giving a buffer (or a buffer name) and two positions within the
 +buffer.  The last three arguments specify the other substring in the
 +same way.  You can use @code{nil} for @var{buffer1}, @var{buffer2}, or
 +both to stand for the current buffer.
 +
 +The value is negative if the first substring is less, positive if the
 +first is greater, and zero if they are equal.  The absolute value of
 +the result is one plus the index of the first differing characters
 +within the substrings.
 +
 +This function ignores case when comparing characters
 +if @code{case-fold-search} is non-@code{nil}.  It always ignores
 +text properties.
 +
 +Suppose the current buffer contains the text @samp{foobarbar
 +haha!rara!}; then in this example the two substrings are @samp{rbar }
 +and @samp{rara!}.  The value is 2 because the first substring is greater
 +at the second character.
 +
 +@example
 +(compare-buffer-substrings nil 6 11 nil 16 21)
 +     @result{} 2
 +@end example
 +@end defun
 +
 +@node Insertion
 +@section Inserting Text
 +@cindex insertion of text
 +@cindex text insertion
 +
 +@cindex insertion before point
 +@cindex before point, insertion
 +  @dfn{Insertion} means adding new text to a buffer.  The inserted text
 +goes at point---between the character before point and the character
 +after point.  Some insertion functions leave point before the inserted
 +text, while other functions leave it after.  We call the former
 +insertion @dfn{after point} and the latter insertion @dfn{before point}.
 +
 +  Insertion relocates markers that point at positions after the
 +insertion point, so that they stay with the surrounding text
 +(@pxref{Markers}).  When a marker points at the place of insertion,
 +insertion may or may not relocate the marker, depending on the marker's
 +insertion type (@pxref{Marker Insertion Types}).  Certain special
 +functions such as @code{insert-before-markers} relocate all such markers
 +to point after the inserted text, regardless of the markers' insertion
 +type.
 +
 +  Insertion functions signal an error if the current buffer is
 +read-only or if they insert within read-only text.
 +
 +  These functions copy text characters from strings and buffers along
 +with their properties.  The inserted characters have exactly the same
 +properties as the characters they were copied from.  By contrast,
 +characters specified as separate arguments, not part of a string or
 +buffer, inherit their text properties from the neighboring text.
 +
 +  The insertion functions convert text from unibyte to multibyte in
 +order to insert in a multibyte buffer, and vice versa---if the text
 +comes from a string or from a buffer.  However, they do not convert
 +unibyte character codes 128 through 255 to multibyte characters, not
 +even if the current buffer is a multibyte buffer.  @xref{Converting
 +Representations}.
 +
 +@defun insert &rest args
 +This function inserts the strings and/or characters @var{args} into the
 +current buffer, at point, moving point forward.  In other words, it
 +inserts the text before point.  An error is signaled unless all
 +@var{args} are either strings or characters.  The value is @code{nil}.
 +@end defun
 +
 +@defun insert-before-markers &rest args
 +This function inserts the strings and/or characters @var{args} into the
 +current buffer, at point, moving point forward.  An error is signaled
 +unless all @var{args} are either strings or characters.  The value is
 +@code{nil}.
 +
 +This function is unlike the other insertion functions in that it
 +relocates markers initially pointing at the insertion point, to point
 +after the inserted text.  If an overlay begins at the insertion point,
 +the inserted text falls outside the overlay; if a nonempty overlay
 +ends at the insertion point, the inserted text falls inside that
 +overlay.
 +@end defun
 +
 +@defun insert-char character count &optional inherit
 +This function inserts @var{count} instances of @var{character} into the
 +current buffer before point.  The argument @var{count} should be an
 +integer, and @var{character} must be a character.  The value is @code{nil}.
 +
 +This function does not convert unibyte character codes 128 through 255
 +to multibyte characters, not even if the current buffer is a multibyte
 +buffer.  @xref{Converting Representations}.
 +
 +If @var{inherit} is non-@code{nil}, then the inserted characters inherit
 +sticky text properties from the two characters before and after the
 +insertion point.  @xref{Sticky Properties}.
 +@end defun
 +
 +@defun insert-buffer-substring from-buffer-or-name &optional start end
 +This function inserts a portion of buffer @var{from-buffer-or-name}
 +(which must already exist) into the current buffer before point.  The
 +text inserted is the region between @var{start} and @var{end}.  (These
 +arguments default to the beginning and end of the accessible portion of
 +that buffer.)  This function returns @code{nil}.
 +
 +In this example, the form is executed with buffer @samp{bar} as the
 +current buffer.  We assume that buffer @samp{bar} is initially empty.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +We hold these truths to be self-evident, that all
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(insert-buffer-substring "foo" 1 20)
 +     @result{} nil
 +
 +---------- Buffer: bar ----------
 +We hold these truth@point{}
 +---------- Buffer: bar ----------
 +@end group
 +@end example
 +@end defun
 +
 +@defun insert-buffer-substring-no-properties from-buffer-or-name &optional start end
 +This is like @code{insert-buffer-substring} except that it does not
 +copy any text properties.
 +@end defun
 +
 +  @xref{Sticky Properties}, for other insertion functions that inherit
 +text properties from the nearby text in addition to inserting it.
 +Whitespace inserted by indentation functions also inherits text
 +properties.
 +
 +@node Commands for Insertion
 +@section User-Level Insertion Commands
 +
 +  This section describes higher-level commands for inserting text,
 +commands intended primarily for the user but useful also in Lisp
 +programs.
 +
 +@deffn Command insert-buffer from-buffer-or-name
 +This command inserts the entire accessible contents of
 +@var{from-buffer-or-name} (which must exist) into the current buffer
 +after point.  It leaves the mark after the inserted text.  The value
 +is @code{nil}.
 +@end deffn
 +
 +@deffn Command self-insert-command count
 +@cindex character insertion
 +@cindex self-insertion
 +This command inserts the last character typed; it does so @var{count}
 +times, before point, and returns @code{nil}.  Most printing characters
 +are bound to this command.  In routine use, @code{self-insert-command}
 +is the most frequently called function in Emacs, but programs rarely use
 +it except to install it on a keymap.
 +
 +In an interactive call, @var{count} is the numeric prefix argument.
 +
 +Self-insertion translates the input character through
 +@code{translation-table-for-input}.  @xref{Translation of Characters}.
 +
 +This command calls @code{auto-fill-function} whenever that is
 +non-@code{nil} and the character inserted is in the table
 +@code{auto-fill-chars} (@pxref{Auto Filling}).
 +
 +@c Cross refs reworded to prevent overfull hbox.  --rjc 15mar92
 +This command performs abbrev expansion if Abbrev mode is enabled and
 +the inserted character does not have word-constituent
 +syntax. (@xref{Abbrevs}, and @ref{Syntax Class Table}.)  It is also
 +responsible for calling @code{blink-paren-function} when the inserted
 +character has close parenthesis syntax (@pxref{Blinking}).
 +
 +Do not try substituting your own definition of
 +@code{self-insert-command} for the standard one.  The editor command
 +loop handles this function specially.
 +@end deffn
 +
 +@deffn Command newline &optional number-of-newlines
 +This command inserts newlines into the current buffer before point.
 +If @var{number-of-newlines} is supplied, that many newline characters
 +are inserted.
 +
 +@cindex newline and Auto Fill mode
 +This function calls @code{auto-fill-function} if the current column
 +number is greater than the value of @code{fill-column} and
 +@var{number-of-newlines} is @code{nil}.  Typically what
 +@code{auto-fill-function} does is insert a newline; thus, the overall
 +result in this case is to insert two newlines at different places: one
 +at point, and another earlier in the line.  @code{newline} does not
 +auto-fill if @var{number-of-newlines} is non-@code{nil}.
 +
 +This command indents to the left margin if that is not zero.
 +@xref{Margins}.
 +
 +The value returned is @code{nil}.  In an interactive call, @var{count}
 +is the numeric prefix argument.
 +@end deffn
 +
 +@defvar overwrite-mode
 +This variable controls whether overwrite mode is in effect.  The value
 +should be @code{overwrite-mode-textual}, @code{overwrite-mode-binary},
 +or @code{nil}.  @code{overwrite-mode-textual} specifies textual
 +overwrite mode (treats newlines and tabs specially), and
 +@code{overwrite-mode-binary} specifies binary overwrite mode (treats
 +newlines and tabs like any other characters).
 +@end defvar
 +
 +@node Deletion
 +@section Deleting Text
 +@cindex text deletion
 +
 +@cindex deleting text vs killing
 +  Deletion means removing part of the text in a buffer, without saving
 +it in the kill ring (@pxref{The Kill Ring}).  Deleted text can't be
 +yanked, but can be reinserted using the undo mechanism (@pxref{Undo}).
 +Some deletion functions do save text in the kill ring in some special
 +cases.
 +
 +  All of the deletion functions operate on the current buffer.
 +
 +@deffn Command erase-buffer
 +This function deletes the entire text of the current buffer
 +(@emph{not} just the accessible portion), leaving it
 +empty.  If the buffer is read-only, it signals a @code{buffer-read-only}
 +error; if some of the text in it is read-only, it signals a
 +@code{text-read-only} error.  Otherwise, it deletes the text without
 +asking for any confirmation.  It returns @code{nil}.
 +
 +Normally, deleting a large amount of text from a buffer inhibits further
 +auto-saving of that buffer ``because it has shrunk.''  However,
 +@code{erase-buffer} does not do this, the idea being that the future
 +text is not really related to the former text, and its size should not
 +be compared with that of the former text.
 +@end deffn
 +
 +@deffn Command delete-region start end
 +This command deletes the text between positions @var{start} and
 +@var{end} in the current buffer, and returns @code{nil}.  If point was
 +inside the deleted region, its value afterward is @var{start}.
 +Otherwise, point relocates with the surrounding text, as markers do.
 +@end deffn
 +
 +@defun delete-and-extract-region start end
 +This function deletes the text between positions @var{start} and
 +@var{end} in the current buffer, and returns a string containing the
 +text just deleted.
 +
 +If point was inside the deleted region, its value afterward is
 +@var{start}.  Otherwise, point relocates with the surrounding text, as
 +markers do.
 +@end defun
 +
 +@deffn Command delete-char count &optional killp
 +This command deletes @var{count} characters directly after point, or
 +before point if @var{count} is negative.  If @var{killp} is
 +non-@code{nil}, then it saves the deleted characters in the kill ring.
 +
 +In an interactive call, @var{count} is the numeric prefix argument, and
 +@var{killp} is the unprocessed prefix argument.  Therefore, if a prefix
 +argument is supplied, the text is saved in the kill ring.  If no prefix
 +argument is supplied, then one character is deleted, but not saved in
 +the kill ring.
 +
 +The value returned is always @code{nil}.
 +@end deffn
 +
 +@deffn Command delete-backward-char count &optional killp
 +@cindex deleting previous char
 +This command deletes @var{count} characters directly before point, or
 +after point if @var{count} is negative.  If @var{killp} is
 +non-@code{nil}, then it saves the deleted characters in the kill ring.
 +
 +In an interactive call, @var{count} is the numeric prefix argument, and
 +@var{killp} is the unprocessed prefix argument.  Therefore, if a prefix
 +argument is supplied, the text is saved in the kill ring.  If no prefix
 +argument is supplied, then one character is deleted, but not saved in
 +the kill ring.
 +
 +The value returned is always @code{nil}.
 +@end deffn
 +
 +@deffn Command backward-delete-char-untabify count &optional killp
 +@cindex tab deletion
 +This command deletes @var{count} characters backward, changing tabs
 +into spaces.  When the next character to be deleted is a tab, it is
 +first replaced with the proper number of spaces to preserve alignment
 +and then one of those spaces is deleted instead of the tab.  If
 +@var{killp} is non-@code{nil}, then the command saves the deleted
 +characters in the kill ring.
 +
 +Conversion of tabs to spaces happens only if @var{count} is positive.
 +If it is negative, exactly @minus{}@var{count} characters after point
 +are deleted.
 +
 +In an interactive call, @var{count} is the numeric prefix argument, and
 +@var{killp} is the unprocessed prefix argument.  Therefore, if a prefix
 +argument is supplied, the text is saved in the kill ring.  If no prefix
 +argument is supplied, then one character is deleted, but not saved in
 +the kill ring.
 +
 +The value returned is always @code{nil}.
 +@end deffn
 +
 +@defopt backward-delete-char-untabify-method
 +This option specifies how @code{backward-delete-char-untabify} should
 +deal with whitespace.  Possible values include @code{untabify}, the
 +default, meaning convert a tab to many spaces and delete one;
 +@code{hungry}, meaning delete all tabs and spaces before point with
 +one command; @code{all} meaning delete all tabs, spaces and newlines
 +before point, and @code{nil}, meaning do nothing special for
 +whitespace characters.
 +@end defopt
 +
 +@node User-Level Deletion
 +@section User-Level Deletion Commands
 +
 +  This section describes higher-level commands for deleting text,
 +commands intended primarily for the user but useful also in Lisp
 +programs.
 +
 +@deffn Command delete-horizontal-space &optional backward-only
 +@cindex deleting whitespace
 +This function deletes all spaces and tabs around point.  It returns
 +@code{nil}.
 +
 +If @var{backward-only} is non-@code{nil}, the function deletes
 +spaces and tabs before point, but not after point.
 +
 +In the following examples, we call @code{delete-horizontal-space} four
 +times, once on each line, with point between the second and third
 +characters on the line each time.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +I @point{}thought
 +I @point{}     thought
 +We@point{} thought
 +Yo@point{}u thought
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(delete-horizontal-space)   ; @r{Four times.}
 +     @result{} nil
 +
 +---------- Buffer: foo ----------
 +Ithought
 +Ithought
 +Wethought
 +You thought
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +@end deffn
 +
 +@deffn Command delete-indentation &optional join-following-p
 +This function joins the line point is on to the previous line, deleting
 +any whitespace at the join and in some cases replacing it with one
 +space.  If @var{join-following-p} is non-@code{nil},
 +@code{delete-indentation} joins this line to the following line
 +instead.  The function returns @code{nil}.
 +
 +If there is a fill prefix, and the second of the lines being joined
 +starts with the prefix, then @code{delete-indentation} deletes the
 +fill prefix before joining the lines.  @xref{Margins}.
 +
 +In the example below, point is located on the line starting
 +@samp{events}, and it makes no difference if there are trailing spaces
 +in the preceding line.
 +
 +@smallexample
 +@group
 +---------- Buffer: foo ----------
 +When in the course of human
 +@point{}    events, it becomes necessary
 +---------- Buffer: foo ----------
 +@end group
 +
 +(delete-indentation)
 +     @result{} nil
 +
 +@group
 +---------- Buffer: foo ----------
 +When in the course of human@point{} events, it becomes necessary
 +---------- Buffer: foo ----------
 +@end group
 +@end smallexample
 +
 +After the lines are joined, the function @code{fixup-whitespace} is
 +responsible for deciding whether to leave a space at the junction.
 +@end deffn
 +
 +@deffn Command fixup-whitespace
 +This function replaces all the horizontal whitespace surrounding point
 +with either one space or no space, according to the context.  It
 +returns @code{nil}.
 +
 +At the beginning or end of a line, the appropriate amount of space is
 +none.  Before a character with close parenthesis syntax, or after a
 +character with open parenthesis or expression-prefix syntax, no space is
 +also appropriate.  Otherwise, one space is appropriate.  @xref{Syntax
 +Class Table}.
 +
 +In the example below, @code{fixup-whitespace} is called the first time
 +with point before the word @samp{spaces} in the first line.  For the
 +second invocation, point is directly after the @samp{(}.
 +
 +@smallexample
 +@group
 +---------- Buffer: foo ----------
 +This has too many     @point{}spaces
 +This has too many spaces at the start of (@point{}   this list)
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(fixup-whitespace)
 +     @result{} nil
 +(fixup-whitespace)
 +     @result{} nil
 +@end group
 +
 +@group
 +---------- Buffer: foo ----------
 +This has too many spaces
 +This has too many spaces at the start of (this list)
 +---------- Buffer: foo ----------
 +@end group
 +@end smallexample
 +@end deffn
 +
 +@deffn Command just-one-space &optional n
 +@comment !!SourceFile simple.el
 +This command replaces any spaces and tabs around point with a single
 +space, or @var{n} spaces if @var{n} is specified.  It returns
 +@code{nil}.
 +@end deffn
 +
 +@deffn Command delete-blank-lines
 +This function deletes blank lines surrounding point.  If point is on a
 +blank line with one or more blank lines before or after it, then all but
 +one of them are deleted.  If point is on an isolated blank line, then it
 +is deleted.  If point is on a nonblank line, the command deletes all
 +blank lines immediately following it.
 +
 +A blank line is defined as a line containing only tabs and spaces.
 +
 +@code{delete-blank-lines} returns @code{nil}.
 +@end deffn
 +
 +@node The Kill Ring
 +@section The Kill Ring
 +@cindex kill ring
 +
 +  @dfn{Kill functions} delete text like the deletion functions, but save
 +it so that the user can reinsert it by @dfn{yanking}.  Most of these
 +functions have @samp{kill-} in their name.  By contrast, the functions
 +whose names start with @samp{delete-} normally do not save text for
 +yanking (though they can still be undone); these are ``deletion''
 +functions.
 +
 +  Most of the kill commands are primarily for interactive use, and are
 +not described here.  What we do describe are the functions provided for
 +use in writing such commands.  You can use these functions to write
 +commands for killing text.  When you need to delete text for internal
 +purposes within a Lisp function, you should normally use deletion
 +functions, so as not to disturb the kill ring contents.
 +@xref{Deletion}.
 +
 +  Killed text is saved for later yanking in the @dfn{kill ring}.  This
 +is a list that holds a number of recent kills, not just the last text
 +kill.  We call this a ``ring'' because yanking treats it as having
 +elements in a cyclic order.  The list is kept in the variable
 +@code{kill-ring}, and can be operated on with the usual functions for
 +lists; there are also specialized functions, described in this section,
 +that treat it as a ring.
 +
 +  Some people think this use of the word ``kill'' is unfortunate, since
 +it refers to operations that specifically @emph{do not} destroy the
 +entities ``killed.''  This is in sharp contrast to ordinary life, in
 +which death is permanent and ``killed'' entities do not come back to
 +life.  Therefore, other metaphors have been proposed.  For example, the
 +term ``cut ring'' makes sense to people who, in pre-computer days, used
 +scissors and paste to cut up and rearrange manuscripts.  However, it
 +would be difficult to change the terminology now.
 +
 +@menu
 +* Kill Ring Concepts::     What text looks like in the kill ring.
 +* Kill Functions::         Functions that kill text.
 +* Yanking::                How yanking is done.
 +* Yank Commands::          Commands that access the kill ring.
 +* Low-Level Kill Ring::          Functions and variables for kill ring access.
 +* Internals of Kill Ring:: Variables that hold kill ring data.
 +@end menu
 +
 +@node Kill Ring Concepts
 +@comment  node-name,  next,  previous,  up
 +@subsection Kill Ring Concepts
 +
 +  The kill ring records killed text as strings in a list, most recent
 +first.  A short kill ring, for example, might look like this:
 +
 +@example
 +("some text" "a different piece of text" "even older text")
 +@end example
 +
 +@noindent
 +When the list reaches @code{kill-ring-max} entries in length, adding a
 +new entry automatically deletes the last entry.
 +
 +  When kill commands are interwoven with other commands, each kill
 +command makes a new entry in the kill ring.  Multiple kill commands in
 +succession build up a single kill ring entry, which would be yanked as a
 +unit; the second and subsequent consecutive kill commands add text to
 +the entry made by the first one.
 +
 +  For yanking, one entry in the kill ring is designated the ``front'' of
 +the ring.  Some yank commands ``rotate'' the ring by designating a
 +different element as the ``front.''  But this virtual rotation doesn't
 +change the list itself---the most recent entry always comes first in the
 +list.
 +
 +@node Kill Functions
 +@comment  node-name,  next,  previous,  up
 +@subsection Functions for Killing
 +
 +  @code{kill-region} is the usual subroutine for killing text.  Any
 +command that calls this function is a ``kill command'' (and should
 +probably have @samp{kill} in its name).  @code{kill-region} puts the
 +newly killed text in a new element at the beginning of the kill ring or
 +adds it to the most recent element.  It determines automatically (using
 +@code{last-command}) whether the previous command was a kill command,
 +and if so appends the killed text to the most recent entry.
 +
 +@deffn Command kill-region start end &optional yank-handler
 +This function kills the text in the region defined by @var{start} and
 +@var{end}.  The text is deleted but saved in the kill ring, along with
 +its text properties.  The value is always @code{nil}.
 +
 +In an interactive call, @var{start} and @var{end} are point and
 +the mark.
 +
 +@c Emacs 19 feature
 +If the buffer or text is read-only, @code{kill-region} modifies the kill
 +ring just the same, then signals an error without modifying the buffer.
 +This is convenient because it lets the user use a series of kill
 +commands to copy text from a read-only buffer into the kill ring.
 +
 +If @var{yank-handler} is non-@code{nil}, this puts that value onto
 +the string of killed text, as a @code{yank-handler} text property.
 +@xref{Yanking}.  Note that if @var{yank-handler} is @code{nil}, any
 +@code{yank-handler} properties present on the killed text are copied
 +onto the kill ring, like other text properties.
 +@end deffn
 +
 +@defopt kill-read-only-ok
 +If this option is non-@code{nil}, @code{kill-region} does not signal an
 +error if the buffer or text is read-only.  Instead, it simply returns,
 +updating the kill ring but not changing the buffer.
 +@end defopt
 +
 +@deffn Command copy-region-as-kill start end
 +This command saves the region defined by @var{start} and @var{end} on
 +the kill ring (including text properties), but does not delete the text
 +from the buffer.  It returns @code{nil}.
 +
 +The command does not set @code{this-command} to @code{kill-region}, so a
 +subsequent kill command does not append to the same kill ring entry.
 +
 +Don't call @code{copy-region-as-kill} in Lisp programs unless you aim to
 +support Emacs 18.  For newer Emacs versions, it is better to use
 +@code{kill-new} or @code{kill-append} instead.  @xref{Low-Level Kill
 +Ring}.
 +@end deffn
 +
 +@node Yanking
 +@subsection Yanking
 +
 +  Yanking means inserting text from the kill ring, but it does
 +not insert the text blindly.  Yank commands and some other commands
 +use @code{insert-for-yank} to perform special processing on the
 +text that they copy into the buffer.
 +
 +@defun insert-for-yank string
 +This function normally works like @code{insert} except that it doesn't
 +insert the text properties in the @code{yank-excluded-properties}
 +list.  However, if any part of @var{string} has a non-@code{nil}
 +@code{yank-handler} text property, that property can do various
 +special processing on that part of the text being inserted.
 +@end defun
 +
 +@defun insert-buffer-substring-as-yank buf &optional start end
 +This function resembles @code{insert-buffer-substring} except that it
 +doesn't insert the text properties in the
 +@code{yank-excluded-properties} list.
 +@end defun
 +
 +  You can put a @code{yank-handler} text property on all or part of
 +the text to control how it will be inserted if it is yanked.  The
 +@code{insert-for-yank} function looks for that property.  The property
 +value must be a list of one to four elements, with the following
 +format (where elements after the first may be omitted):
 +
 +@example
 +(@var{function} @var{param} @var{noexclude} @var{undo})
 +@end example
 +
 +  Here is what the elements do:
 +
 +@table @var
 +@item function
 +When @var{function} is present and non-@code{nil}, it is called instead of
 +@code{insert} to insert the string.  @var{function} takes one
 +argument---the string to insert.
 +
 +@item param
 +If @var{param} is present and non-@code{nil}, it replaces @var{string}
 +(or the part of @var{string} being processed) as the object passed to
 +@var{function} (or @code{insert}); for example, if @var{function} is
 +@code{yank-rectangle}, @var{param} should be a list of strings to
 +insert as a rectangle.
 +
 +@item noexclude
 +If @var{noexclude} is present and non-@code{nil}, the normal removal of the
 +yank-excluded-properties is not performed; instead @var{function} is
 +responsible for removing those properties.  This may be necessary
 +if @var{function} adjusts point before or after inserting the object.
 +
 +@item undo
 +If @var{undo} is present and non-@code{nil}, it is a function that will be
 +called by @code{yank-pop} to undo the insertion of the current object.
 +It is called with two arguments, the start and end of the current
 +region.  @var{function} can set @code{yank-undo-function} to override
 +the @var{undo} value.
 +@end table
 +
 +@node Yank Commands
 +@comment  node-name,  next,  previous,  up
 +@subsection Functions for Yanking
 +
 +  This section describes higher-level commands for yanking, which are
 +intended primarily for the user but useful also in Lisp programs.
 +Both @code{yank} and @code{yank-pop} honor the
 +@code{yank-excluded-properties} variable and @code{yank-handler} text
 +property (@pxref{Yanking}).
 +
 +@deffn Command yank &optional arg
 +@cindex inserting killed text
 +This command inserts before point the text at the front of the
 +kill ring.  It positions the mark at the beginning of that text, and
 +point at the end.
 +
 +If @var{arg} is a non-@code{nil} list (which occurs interactively when
 +the user types @kbd{C-u} with no digits), then @code{yank} inserts the
 +text as described above, but puts point before the yanked text and
 +puts the mark after it.
 +
 +If @var{arg} is a number, then @code{yank} inserts the @var{arg}th
 +most recently killed text---the @var{arg}th element of the kill ring
 +list, counted cyclically from the front, which is considered the
 +first element for this purpose.
 +
 +@code{yank} does not alter the contents of the kill ring, unless it
 +used text provided by another program, in which case it pushes that text
 +onto the kill ring.  However if @var{arg} is an integer different from
 +one, it rotates the kill ring to place the yanked string at the front.
 +
 +@code{yank} returns @code{nil}.
 +@end deffn
 +
 +@deffn Command yank-pop &optional arg
 +This command replaces the just-yanked entry from the kill ring with a
 +different entry from the kill ring.
 +
 +This is allowed only immediately after a @code{yank} or another
 +@code{yank-pop}.  At such a time, the region contains text that was just
 +inserted by yanking.  @code{yank-pop} deletes that text and inserts in
 +its place a different piece of killed text.  It does not add the deleted
 +text to the kill ring, since it is already in the kill ring somewhere.
 +It does however rotate the kill ring to place the newly yanked string at
 +the front.
 +
 +If @var{arg} is @code{nil}, then the replacement text is the previous
 +element of the kill ring.  If @var{arg} is numeric, the replacement is
 +the @var{arg}th previous kill.  If @var{arg} is negative, a more recent
 +kill is the replacement.
 +
 +The sequence of kills in the kill ring wraps around, so that after the
 +oldest one comes the newest one, and before the newest one goes the
 +oldest.
 +
 +The return value is always @code{nil}.
 +@end deffn
 +
 +@defvar yank-undo-function
 +If this variable is non-@code{nil}, the function @code{yank-pop} uses
 +its value instead of @code{delete-region} to delete the text
 +inserted by the previous @code{yank} or
 +@code{yank-pop} command.  The value must be a function of two
 +arguments, the start and end of the current region.
 +
 +The function @code{insert-for-yank} automatically sets this variable
 +according to the @var{undo} element of the @code{yank-handler}
 +text property, if there is one.
 +@end defvar
 +
 +@node Low-Level Kill Ring
 +@subsection Low-Level Kill Ring
 +
 +  These functions and variables provide access to the kill ring at a
 +lower level, but still convenient for use in Lisp programs, because they
 +take care of interaction with window system selections
 +(@pxref{Window System Selections}).
 +
 +@defun current-kill n &optional do-not-move
 +The function @code{current-kill} rotates the yanking pointer, which
 +designates the ``front'' of the kill ring, by @var{n} places (from newer
 +kills to older ones), and returns the text at that place in the ring.
 +
 +If the optional second argument @var{do-not-move} is non-@code{nil},
 +then @code{current-kill} doesn't alter the yanking pointer; it just
 +returns the @var{n}th kill, counting from the current yanking pointer.
 +
 +If @var{n} is zero, indicating a request for the latest kill,
 +@code{current-kill} calls the value of
 +@code{interprogram-paste-function} (documented below) before
 +consulting the kill ring.  If that value is a function and calling it
 +returns a string, @code{current-kill} pushes that string onto the kill
 +ring and returns it.  It also sets the yanking pointer to point to
 +that new entry, regardless of the value of @var{do-not-move}.
 +Otherwise, @code{current-kill} does not treat a zero value for @var{n}
 +specially: it returns the entry pointed at by the yanking pointer and
 +does not move the yanking pointer.
 +@end defun
 +
 +@defun kill-new string &optional replace yank-handler
 +This function pushes the text @var{string} onto the kill ring and
 +makes the yanking pointer point to it.  It discards the oldest entry
 +if appropriate.  It also invokes the value of
 +@code{interprogram-cut-function} (see below).
 +
 +If @var{replace} is non-@code{nil}, then @code{kill-new} replaces the
 +first element of the kill ring with @var{string}, rather than pushing
 +@var{string} onto the kill ring.
 +
 +If @var{yank-handler} is non-@code{nil}, this puts that value onto
 +the string of killed text, as a @code{yank-handler} property.
 +@xref{Yanking}.  Note that if @var{yank-handler} is @code{nil}, then
 +@code{kill-new} copies any @code{yank-handler} properties present on
 +@var{string} onto the kill ring, as it does with other text properties.
 +@end defun
 +
 +@defun kill-append string before-p &optional yank-handler
 +This function appends the text @var{string} to the first entry in the
 +kill ring and makes the yanking pointer point to the combined entry.
 +Normally @var{string} goes at the end of the entry, but if
 +@var{before-p} is non-@code{nil}, it goes at the beginning.  This
 +function also invokes the value of @code{interprogram-cut-function}
 +(see below).  This handles @var{yank-handler} just like
 +@code{kill-new}, except that if @var{yank-handler} is different from
 +the @code{yank-handler} property of the first entry of the kill ring,
 +@code{kill-append} pushes the concatenated string onto the kill ring,
 +instead of replacing the original first entry with it.
 +@end defun
 +
 +@defvar interprogram-paste-function
 +This variable provides a way of transferring killed text from other
 +programs, when you are using a window system.  Its value should be
 +@code{nil} or a function of no arguments.
 +
 +If the value is a function, @code{current-kill} calls it to get the
 +``most recent kill.''  If the function returns a non-@code{nil} value,
 +then that value is used as the ``most recent kill.''  If it returns
 +@code{nil}, then the front of the kill ring is used.
 +
 +The normal use of this hook is to get the window system's primary
 +selection as the most recent kill, even if the selection belongs to
 +another application.  @xref{Window System Selections}.
 +@end defvar
 +
 +@defvar interprogram-cut-function
 +This variable provides a way of communicating killed text to other
 +programs, when you are using a window system.  Its value should be
 +@code{nil} or a function of one required and one optional argument.
 +
 +If the value is a function, @code{kill-new} and @code{kill-append} call
 +it with the new first element of the kill ring as the first argument.
 +The second, optional, argument has the same meaning as the @var{push}
 +argument to @code{x-set-cut-buffer} (@pxref{Definition of
 +x-set-cut-buffer}) and only affects the second and later cut buffers.
 +
 +The normal use of this hook is to set the window system's primary
 +selection (and first cut buffer) from the newly killed text.
 +@xref{Window System Selections}.
 +@end defvar
 +
 +@node Internals of Kill Ring
 +@comment  node-name,  next,  previous,  up
 +@subsection Internals of the Kill Ring
 +
 +  The variable @code{kill-ring} holds the kill ring contents, in the
 +form of a list of strings.  The most recent kill is always at the front
 +of the list.
 +
 +  The @code{kill-ring-yank-pointer} variable points to a link in the
 +kill ring list, whose @sc{car} is the text to yank next.  We say it
 +identifies the ``front'' of the ring.  Moving
 +@code{kill-ring-yank-pointer} to a different link is called
 +@dfn{rotating the kill ring}.  We call the kill ring a ``ring'' because
 +the functions that move the yank pointer wrap around from the end of the
 +list to the beginning, or vice-versa.  Rotation of the kill ring is
 +virtual; it does not change the value of @code{kill-ring}.
 +
 +  Both @code{kill-ring} and @code{kill-ring-yank-pointer} are Lisp
 +variables whose values are normally lists.  The word ``pointer'' in the
 +name of the @code{kill-ring-yank-pointer} indicates that the variable's
 +purpose is to identify one element of the list for use by the next yank
 +command.
 +
 +  The value of @code{kill-ring-yank-pointer} is always @code{eq} to one
 +of the links in the kill ring list.  The element it identifies is the
 +@sc{car} of that link.  Kill commands, which change the kill ring, also
 +set this variable to the value of @code{kill-ring}.  The effect is to
 +rotate the ring so that the newly killed text is at the front.
 +
 +  Here is a diagram that shows the variable @code{kill-ring-yank-pointer}
 +pointing to the second entry in the kill ring @code{("some text" "a
 +different piece of text" "yet older text")}.
 +
 +@example
 +@group
 +kill-ring                  ---- kill-ring-yank-pointer
 +  |                       |
 +  |                       v
 +  |     --- ---          --- ---      --- ---
 +   --> |   |   |------> |   |   |--> |   |   |--> nil
 +        --- ---          --- ---      --- ---
 +         |                |            |
 +         |                |            |
 +         |                |             -->"yet older text"
 +         |                |
 +         |                 --> "a different piece of text"
 +         |
 +          --> "some text"
 +@end group
 +@end example
 +
 +@noindent
 +This state of affairs might occur after @kbd{C-y} (@code{yank})
 +immediately followed by @kbd{M-y} (@code{yank-pop}).
 +
 +@defvar kill-ring
 +This variable holds the list of killed text sequences, most recently
 +killed first.
 +@end defvar
 +
 +@defvar kill-ring-yank-pointer
 +This variable's value indicates which element of the kill ring is at the
 +``front'' of the ring for yanking.  More precisely, the value is a tail
 +of the value of @code{kill-ring}, and its @sc{car} is the kill string
 +that @kbd{C-y} should yank.
 +@end defvar
 +
 +@defopt kill-ring-max
 +The value of this variable is the maximum length to which the kill
 +ring can grow, before elements are thrown away at the end.  The default
 +value for @code{kill-ring-max} is 60.
 +@end defopt
 +
 +@node Undo
 +@comment  node-name,  next,  previous,  up
 +@section Undo
 +@cindex redo
 +
 +  Most buffers have an @dfn{undo list}, which records all changes made
 +to the buffer's text so that they can be undone.  (The buffers that
 +don't have one are usually special-purpose buffers for which Emacs
 +assumes that undoing is not useful.  In particular, any buffer whose
 +name begins with a space has its undo recording off by default;
 +see @ref{Buffer Names}.)  All the primitives that modify the
 +text in the buffer automatically add elements to the front of the undo
 +list, which is in the variable @code{buffer-undo-list}.
 +
 +@defvar buffer-undo-list
 +This buffer-local variable's value is the undo list of the current
 +buffer. A value of @code{t} disables the recording of undo information.
 +@end defvar
 +
 +Here are the kinds of elements an undo list can have:
 +
 +@table @code
 +@item @var{position}
 +This kind of element records a previous value of point; undoing this
 +element moves point to @var{position}.  Ordinary cursor motion does not
 +make any sort of undo record, but deletion operations use these entries
 +to record where point was before the command.
 +
 +@item (@var{beg} . @var{end})
 +This kind of element indicates how to delete text that was inserted.
 +Upon insertion, the text occupied the range @var{beg}--@var{end} in the
 +buffer.
 +
 +@item (@var{text} . @var{position})
 +This kind of element indicates how to reinsert text that was deleted.
 +The deleted text itself is the string @var{text}.  The place to
 +reinsert it is @code{(abs @var{position})}.  If @var{position} is
 +positive, point was at the beginning of the deleted text, otherwise it
 +was at the end.
 +
 +@item (t @var{high} . @var{low})
 +This kind of element indicates that an unmodified buffer became
 +modified.  The elements @var{high} and @var{low} are two integers, each
 +recording 16 bits of the visited file's modification time as of when it
 +was previously visited or saved.  @code{primitive-undo} uses those
 +values to determine whether to mark the buffer as unmodified once again;
 +it does so only if the file's modification time matches those numbers.
 +
 +@item (nil @var{property} @var{value} @var{beg} . @var{end})
 +This kind of element records a change in a text property.
 +Here's how you might undo the change:
 +
 +@example
 +(put-text-property @var{beg} @var{end} @var{property} @var{value})
 +@end example
 +
 +@item (@var{marker} . @var{adjustment})
 +This kind of element records the fact that the marker @var{marker} was
 +relocated due to deletion of surrounding text, and that it moved
 +@var{adjustment} character positions.  Undoing this element moves
 +@var{marker} @minus{} @var{adjustment} characters.
 +
 +@item (apply @var{funname} . @var{args})
 +This is an extensible undo item, which is undone by calling
 +@var{funname} with arguments @var{args}.
 +
 +@item (apply @var{delta} @var{beg} @var{end} @var{funname} . @var{args})
 +This is an extensible undo item, which records a change limited to the
 +range @var{beg} to @var{end}, which increased the size of the buffer
 +by @var{delta}.  It is undone by calling @var{funname} with arguments
 +@var{args}.
 +
 +This kind of element enables undo limited to a region to determine
 +whether the element pertains to that region.
 +
 +@item nil
 +This element is a boundary.  The elements between two boundaries are
 +called a @dfn{change group}; normally, each change group corresponds to
 +one keyboard command, and undo commands normally undo an entire group as
 +a unit.
 +@end table
 +
 +@defun undo-boundary
 +This function places a boundary element in the undo list.  The undo
 +command stops at such a boundary, and successive undo commands undo
 +to earlier and earlier boundaries.  This function returns @code{nil}.
 +
 +The editor command loop automatically creates an undo boundary before
 +each key sequence is executed.  Thus, each undo normally undoes the
 +effects of one command.  Self-inserting input characters are an
 +exception.  The command loop makes a boundary for the first such
 +character; the next 19 consecutive self-inserting input characters do
 +not make boundaries, and then the 20th does, and so on as long as
 +self-inserting characters continue.
 +
 +All buffer modifications add a boundary whenever the previous undoable
 +change was made in some other buffer.  This is to ensure that
 +each command makes a boundary in each buffer where it makes changes.
 +
 +Calling this function explicitly is useful for splitting the effects of
 +a command into more than one unit.  For example, @code{query-replace}
 +calls @code{undo-boundary} after each replacement, so that the user can
 +undo individual replacements one by one.
 +@end defun
 +
 +@defvar undo-in-progress
 +This variable is normally @code{nil}, but the undo commands bind it to
 +@code{t}.  This is so that various kinds of change hooks can tell when
 +they're being called for the sake of undoing.
 +@end defvar
 +
 +@defun primitive-undo count list
 +This is the basic function for undoing elements of an undo list.
 +It undoes the first @var{count} elements of @var{list}, returning
 +the rest of @var{list}.
 +
 +@code{primitive-undo} adds elements to the buffer's undo list when it
 +changes the buffer.  Undo commands avoid confusion by saving the undo
 +list value at the beginning of a sequence of undo operations.  Then the
 +undo operations use and update the saved value.  The new elements added
 +by undoing are not part of this saved value, so they don't interfere with
 +continuing to undo.
 +
 +This function does not bind @code{undo-in-progress}.
 +@end defun
 +
 +@node Maintaining Undo
 +@section Maintaining Undo Lists
 +
 +  This section describes how to enable and disable undo information for
 +a given buffer.  It also explains how the undo list is truncated
 +automatically so it doesn't get too big.
 +
 +  Recording of undo information in a newly created buffer is normally
 +enabled to start with; but if the buffer name starts with a space, the
 +undo recording is initially disabled.  You can explicitly enable or
 +disable undo recording with the following two functions, or by setting
 +@code{buffer-undo-list} yourself.
 +
 +@deffn Command buffer-enable-undo &optional buffer-or-name
 +This command enables recording undo information for buffer
 +@var{buffer-or-name}, so that subsequent changes can be undone.  If no
 +argument is supplied, then the current buffer is used.  This function
 +does nothing if undo recording is already enabled in the buffer.  It
 +returns @code{nil}.
 +
 +In an interactive call, @var{buffer-or-name} is the current buffer.
 +You cannot specify any other buffer.
 +@end deffn
 +
 +@deffn Command buffer-disable-undo &optional buffer-or-name
 +@cindex disabling undo
 +This function discards the undo list of @var{buffer-or-name}, and disables
 +further recording of undo information.  As a result, it is no longer
 +possible to undo either previous changes or any subsequent changes.  If
 +the undo list of @var{buffer-or-name} is already disabled, this function
 +has no effect.
 +
 +This function returns @code{nil}.
 +@end deffn
 +
 +  As editing continues, undo lists get longer and longer.  To prevent
 +them from using up all available memory space, garbage collection trims
 +them back to size limits you can set.  (For this purpose, the ``size''
 +of an undo list measures the cons cells that make up the list, plus the
 +strings of deleted text.)  Three variables control the range of acceptable
 +sizes: @code{undo-limit}, @code{undo-strong-limit} and
 +@code{undo-outer-limit}.  In these variables, size is counted as the
 +number of bytes occupied, which includes both saved text and other
 +data.
 +
 +@defopt undo-limit
 +This is the soft limit for the acceptable size of an undo list.  The
 +change group at which this size is exceeded is the last one kept.
 +@end defopt
 +
 +@defopt undo-strong-limit
 +This is the upper limit for the acceptable size of an undo list.  The
 +change group at which this size is exceeded is discarded itself (along
 +with all older change groups).  There is one exception: the very latest
 +change group is only discarded if it exceeds @code{undo-outer-limit}.
 +@end defopt
 +
 +@defopt undo-outer-limit
 +If at garbage collection time the undo info for the current command
 +exceeds this limit, Emacs discards the info and displays a warning.
 +This is a last ditch limit to prevent memory overflow.
 +@end defopt
 +
 +@defopt undo-ask-before-discard
 +If this variable is non-@code{nil}, when the undo info exceeds
 +@code{undo-outer-limit}, Emacs asks in the echo area whether to
 +discard the info.  The default value is @code{nil}, which means to
 +discard it automatically.
 +
 +This option is mainly intended for debugging.  Garbage collection is
 +inhibited while the question is asked, which means that Emacs might
 +leak memory if the user waits too long before answering the question.
 +@end defopt
 +
 +@node Filling
 +@comment  node-name,  next,  previous,  up
 +@section Filling
 +@cindex filling text
 +
 +  @dfn{Filling} means adjusting the lengths of lines (by moving the line
 +breaks) so that they are nearly (but no greater than) a specified
 +maximum width.  Additionally, lines can be @dfn{justified}, which means
 +inserting spaces to make the left and/or right margins line up
 +precisely.  The width is controlled by the variable @code{fill-column}.
 +For ease of reading, lines should be no longer than 70 or so columns.
 +
 +  You can use Auto Fill mode (@pxref{Auto Filling}) to fill text
 +automatically as you insert it, but changes to existing text may leave
 +it improperly filled.  Then you must fill the text explicitly.
 +
 +  Most of the commands in this section return values that are not
 +meaningful.  All the functions that do filling take note of the current
 +left margin, current right margin, and current justification style
 +(@pxref{Margins}).  If the current justification style is
 +@code{none}, the filling functions don't actually do anything.
 +
 +  Several of the filling functions have an argument @var{justify}.
 +If it is non-@code{nil}, that requests some kind of justification.  It
 +can be @code{left}, @code{right}, @code{full}, or @code{center}, to
 +request a specific style of justification.  If it is @code{t}, that
 +means to use the current justification style for this part of the text
 +(see @code{current-justification}, below).  Any other value is treated
 +as @code{full}.
 +
 +  When you call the filling functions interactively, using a prefix
 +argument implies the value @code{full} for @var{justify}.
 +
 +@deffn Command fill-paragraph justify
 +This command fills the paragraph at or after point.  If
 +@var{justify} is non-@code{nil}, each line is justified as well.
 +It uses the ordinary paragraph motion commands to find paragraph
 +boundaries.  @xref{Paragraphs,,, emacs, The GNU Emacs Manual}.
 +@end deffn
 +
 +@deffn Command fill-region start end &optional justify nosqueeze to-eop
 +This command fills each of the paragraphs in the region from @var{start}
 +to @var{end}.  It justifies as well if @var{justify} is
 +non-@code{nil}.
 +
 +If @var{nosqueeze} is non-@code{nil}, that means to leave whitespace
 +other than line breaks untouched.  If @var{to-eop} is non-@code{nil},
 +that means to keep filling to the end of the paragraph---or the next hard
 +newline, if @code{use-hard-newlines} is enabled (see below).
 +
 +The variable @code{paragraph-separate} controls how to distinguish
 +paragraphs.  @xref{Standard Regexps}.
 +@end deffn
 +
 +@deffn Command fill-paragraph-or-region justify
 +In Transient Mark mode, when the mark is active, this command calls
 +@code{fill-region} on the active region.  Otherwise, it calls
 +@code{fill-paragraph}.
 +@end deffn
 +
 +@deffn Command fill-individual-paragraphs start end &optional justify citation-regexp
 +This command fills each paragraph in the region according to its
 +individual fill prefix.  Thus, if the lines of a paragraph were indented
 +with spaces, the filled paragraph will remain indented in the same
 +fashion.
 +
 +The first two arguments, @var{start} and @var{end}, are the beginning
 +and end of the region to be filled.  The third and fourth arguments,
 +@var{justify} and @var{citation-regexp}, are optional.  If
 +@var{justify} is non-@code{nil}, the paragraphs are justified as
 +well as filled.  If @var{citation-regexp} is non-@code{nil}, it means the
 +function is operating on a mail message and therefore should not fill
 +the header lines.  If @var{citation-regexp} is a string, it is used as
 +a regular expression; if it matches the beginning of a line, that line
 +is treated as a citation marker.
 +
 +Ordinarily, @code{fill-individual-paragraphs} regards each change in
 +indentation as starting a new paragraph.  If
 +@code{fill-individual-varying-indent} is non-@code{nil}, then only
 +separator lines separate paragraphs.  That mode can handle indented
 +paragraphs with additional indentation on the first line.
 +@end deffn
 +
 +@defopt fill-individual-varying-indent
 +This variable alters the action of @code{fill-individual-paragraphs} as
 +described above.
 +@end defopt
 +
 +@deffn Command fill-region-as-paragraph start end &optional justify nosqueeze squeeze-after
 +This command considers a region of text as a single paragraph and fills
 +it.  If the region was made up of many paragraphs, the blank lines
 +between paragraphs are removed.  This function justifies as well as
 +filling when @var{justify} is non-@code{nil}.
 +
 +If @var{nosqueeze} is non-@code{nil}, that means to leave whitespace
 +other than line breaks untouched.  If @var{squeeze-after} is
 +non-@code{nil}, it specifies a position in the region, and means don't
 +canonicalize spaces before that position.
 +
 +In Adaptive Fill mode, this command calls @code{fill-context-prefix} to
 +choose a fill prefix by default.  @xref{Adaptive Fill}.
 +@end deffn
 +
 +@deffn Command justify-current-line &optional how eop nosqueeze
 +This command inserts spaces between the words of the current line so
 +that the line ends exactly at @code{fill-column}.  It returns
 +@code{nil}.
 +
 +The argument @var{how}, if non-@code{nil} specifies explicitly the style
 +of justification.  It can be @code{left}, @code{right}, @code{full},
 +@code{center}, or @code{none}.  If it is @code{t}, that means to do
 +follow specified justification style (see @code{current-justification},
 +below).  @code{nil} means to do full justification.
 +
 +If @var{eop} is non-@code{nil}, that means do only left-justification
 +if @code{current-justification} specifies full justification.  This is
 +used for the last line of a paragraph; even if the paragraph as a
 +whole is fully justified, the last line should not be.
 +
 +If @var{nosqueeze} is non-@code{nil}, that means do not change interior
 +whitespace.
 +@end deffn
 +
 +@defopt default-justification
 +This variable's value specifies the style of justification to use for
 +text that doesn't specify a style with a text property.  The possible
 +values are @code{left}, @code{right}, @code{full}, @code{center}, or
 +@code{none}.  The default value is @code{left}.
 +@end defopt
 +
 +@defun current-justification
 +This function returns the proper justification style to use for filling
 +the text around point.
 +
 +This returns the value of the @code{justification} text property at
 +point, or the variable @var{default-justification} if there is no such
 +text property.  However, it returns @code{nil} rather than @code{none}
 +to mean ``don't justify''.
 +@end defun
 +
 +@defopt sentence-end-double-space
 +@anchor{Definition of sentence-end-double-space}
 +If this variable is non-@code{nil}, a period followed by just one space
 +does not count as the end of a sentence, and the filling functions
 +avoid breaking the line at such a place.
 +@end defopt
 +
 +@defopt sentence-end-without-period
 +If this variable is non-@code{nil}, a sentence can end without a
 +period.  This is used for languages like Thai, where sentences end
 +with a double space but without a period.
 +@end defopt
 +
 +@defopt sentence-end-without-space
 +If this variable is non-@code{nil}, it should be a string of
 +characters that can end a sentence without following spaces.
 +@end defopt
 +
 +@defvar fill-paragraph-function
 +This variable provides a way for major modes to override the filling of
 +paragraphs.  If the value is non-@code{nil}, @code{fill-paragraph} calls
 +this function to do the work.  If the function returns a non-@code{nil}
 +value, @code{fill-paragraph} assumes the job is done, and immediately
 +returns that value.
 +
 +The usual use of this feature is to fill comments in programming
 +language modes.  If the function needs to fill a paragraph in the usual
 +way, it can do so as follows:
 +
 +@example
 +(let ((fill-paragraph-function nil))
 +  (fill-paragraph arg))
 +@end example
 +@end defvar
 +
 +@defvar use-hard-newlines
 +If this variable is non-@code{nil}, the filling functions do not delete
 +newlines that have the @code{hard} text property.  These ``hard
 +newlines'' act as paragraph separators.
 +@end defvar
 +
 +@node Margins
 +@section Margins for Filling
 +
 +@defopt fill-prefix
 +This buffer-local variable, if non-@code{nil}, specifies a string of
 +text that appears at the beginning of normal text lines and should be
 +disregarded when filling them.  Any line that fails to start with the
 +fill prefix is considered the start of a paragraph; so is any line
 +that starts with the fill prefix followed by additional whitespace.
 +Lines that start with the fill prefix but no additional whitespace are
 +ordinary text lines that can be filled together.  The resulting filled
 +lines also start with the fill prefix.
 +
 +The fill prefix follows the left margin whitespace, if any.
 +@end defopt
 +
 +@defopt fill-column
 +This buffer-local variable specifies the maximum width of filled lines.
 +Its value should be an integer, which is a number of columns.  All the
 +filling, justification, and centering commands are affected by this
 +variable, including Auto Fill mode (@pxref{Auto Filling}).
 +
 +As a practical matter, if you are writing text for other people to
 +read, you should set @code{fill-column} to no more than 70.  Otherwise
 +the line will be too long for people to read comfortably, and this can
 +make the text seem clumsy.
 +@end defopt
 +
 +@defvar default-fill-column
 +The value of this variable is the default value for @code{fill-column} in
 +buffers that do not override it.  This is the same as
 +@code{(default-value 'fill-column)}.
 +
 +The default value for @code{default-fill-column} is 70.
 +@end defvar
 +
 +@deffn Command set-left-margin from to margin
 +This sets the @code{left-margin} property on the text from @var{from} to
 +@var{to} to the value @var{margin}.  If Auto Fill mode is enabled, this
 +command also refills the region to fit the new margin.
 +@end deffn
 +
 +@deffn Command set-right-margin from to margin
 +This sets the @code{right-margin} property on the text from @var{from}
 +to @var{to} to the value @var{margin}.  If Auto Fill mode is enabled,
 +this command also refills the region to fit the new margin.
 +@end deffn
 +
 +@defun current-left-margin
 +This function returns the proper left margin value to use for filling
 +the text around point.  The value is the sum of the @code{left-margin}
 +property of the character at the start of the current line (or zero if
 +none), and the value of the variable @code{left-margin}.
 +@end defun
 +
 +@defun current-fill-column
 +This function returns the proper fill column value to use for filling
 +the text around point.  The value is the value of the @code{fill-column}
 +variable, minus the value of the @code{right-margin} property of the
 +character after point.
 +@end defun
 +
 +@deffn Command move-to-left-margin &optional n force
 +This function moves point to the left margin of the current line.  The
 +column moved to is determined by calling the function
 +@code{current-left-margin}.  If the argument @var{n} is non-@code{nil},
 +@code{move-to-left-margin} moves forward @var{n}@minus{}1 lines first.
 +
 +If @var{force} is non-@code{nil}, that says to fix the line's
 +indentation if that doesn't match the left margin value.
 +@end deffn
 +
 +@defun delete-to-left-margin &optional from to
 +This function removes left margin indentation from the text between
 +@var{from} and @var{to}.  The amount of indentation to delete is
 +determined by calling @code{current-left-margin}.  In no case does this
 +function delete non-whitespace.  If @var{from} and @var{to} are omitted,
 +they default to the whole buffer.
 +@end defun
 +
 +@defun indent-to-left-margin
 +This function adjusts the indentation at the beginning of the current
 +line to the value specified by the variable @code{left-margin}.  (That
 +may involve either inserting or deleting whitespace.)  This function
 +is value of @code{indent-line-function} in Paragraph-Indent Text mode.
 +@end defun
 +
 +@defvar left-margin
 +This variable specifies the base left margin column.  In Fundamental
 +mode, @kbd{C-j} indents to this column.  This variable automatically
 +becomes buffer-local when set in any fashion.
 +@end defvar
 +
 +@defvar fill-nobreak-predicate
 +This variable gives major modes a way to specify not to break a line
 +at certain places.  Its value should be a list of functions.  Whenever
 +filling considers breaking the line at a certain place in the buffer,
 +it calls each of these functions with no arguments and with point
 +located at that place.  If any of the functions returns
 +non-@code{nil}, then the line won't be broken there.
 +@end defvar
 +
 +@node Adaptive Fill
 +@section Adaptive Fill Mode
 +@c @cindex Adaptive Fill mode  "adaptive-fill-mode" is adjacent.
 +
 +  When @dfn{Adaptive Fill Mode} is enabled, Emacs determines the fill
 +prefix automatically from the text in each paragraph being filled
 +rather than using a predetermined value.  During filling, this fill
 +prefix gets inserted at the start of the second and subsequent lines
 +of the paragraph as described in @ref{Filling}, and in @ref{Auto
 +Filling}.
 +
 +@defopt adaptive-fill-mode
 +Adaptive Fill mode is enabled when this variable is non-@code{nil}.
 +It is @code{t} by default.
 +@end defopt
 +
 +@defun fill-context-prefix from to
 +This function implements the heart of Adaptive Fill mode; it chooses a
 +fill prefix based on the text between @var{from} and @var{to},
 +typically the start and end of a paragraph.  It does this by looking
 +at the first two lines of the paragraph, based on the variables
 +described below.
 +@c The optional argument first-line-regexp is not documented
 +@c because it exists for internal purposes and might be eliminated
 +@c in the future.
 +
 +Usually, this function returns the fill prefix, a string.  However,
 +before doing this, the function makes a final check (not specially
 +mentioned in the following) that a line starting with this prefix
 +wouldn't look like the start of a paragraph.  Should this happen, the
 +function signals the anomaly by returning @code{nil} instead.
 +
 +In detail, @code{fill-context-prefix} does this:
 +
 +@enumerate
 +@item
 +It takes a candidate for the fill prefix from the first line---it
 +tries first the function in @code{adaptive-fill-function} (if any),
 +then the regular expression @code{adaptive-fill-regexp} (see below).
 +The first non-@code{nil} result of these, or the empty string if
 +they're both @code{nil}, becomes the first line's candidate.
 +@item
 +If the paragraph has as yet only one line, the function tests the
 +validity of the prefix candidate just found.  The function then
 +returns the candidate if it's valid, or a string of spaces otherwise.
 +(see the description of @code{adaptive-fill-first-line-regexp} below).
 +@item
 +When the paragraph already has two lines, the function next looks for
 +a prefix candidate on the second line, in just the same way it did for
 +the first line.  If it doesn't find one, it returns @code{nil}.
 +@item
 +The function now compares the two candidate prefixes heuristically: if
 +the non-whitespace characters in the line 2 candidate occur in the
 +same order in the line 1 candidate, the function returns the line 2
 +candidate.  Otherwise, it returns the largest initial substring which
 +is common to both candidates (which might be the empty string).
 +@end enumerate
 +@end defun
 +
 +@defopt adaptive-fill-regexp
 +Adaptive Fill mode matches this regular expression against the text
 +starting after the left margin whitespace (if any) on a line; the
 +characters it matches are that line's candidate for the fill prefix.
 +
 +The default value matches whitespace with certain punctuation
 +characters intermingled.
 +@end defopt
 +
 +@defopt adaptive-fill-first-line-regexp
 +Used only in one-line paragraphs, this regular expression acts as an
 +additional check of the validity of the one available candidate fill
 +prefix: the candidate must match this regular expression, or match
 +@code{comment-start-skip}.  If it doesn't, @code{fill-context-prefix}
 +replaces the candidate with a string of spaces ``of the same width''
 +as it.
 +
 +The default value of this variable is @w{@code{"\\`[ \t]*\\'"}}, which
 +matches only a string of whitespace.  The effect of this default is to
 +force the fill prefixes found in one-line paragraphs always to be pure
 +whitespace.
 +@end defopt
 +
 +@defopt adaptive-fill-function
 +You can specify more complex ways of choosing a fill prefix
 +automatically by setting this variable to a function.  The function is
 +called with point after the left margin (if any) of a line, and it
 +must preserve point.  It should return either ``that line's'' fill
 +prefix or @code{nil}, meaning it has failed to determine a prefix.
 +@end defopt
 +
 +@node Auto Filling
 +@comment  node-name,  next,  previous,  up
 +@section Auto Filling
 +@cindex filling, automatic
 +@cindex Auto Fill mode
 +
 +  Auto Fill mode is a minor mode that fills lines automatically as text
 +is inserted.  This section describes the hook used by Auto Fill mode.
 +For a description of functions that you can call explicitly to fill and
 +justify existing text, see @ref{Filling}.
 +
 +  Auto Fill mode also enables the functions that change the margins and
 +justification style to refill portions of the text.  @xref{Margins}.
 +
 +@defvar auto-fill-function
 +The value of this buffer-local variable should be a function (of no
 +arguments) to be called after self-inserting a character from the table
 +@code{auto-fill-chars}.  It may be @code{nil}, in which case nothing
 +special is done in that case.
 +
 +The value of @code{auto-fill-function} is @code{do-auto-fill} when
 +Auto-Fill mode is enabled.  That is a function whose sole purpose is to
 +implement the usual strategy for breaking a line.
 +
 +@quotation
 +In older Emacs versions, this variable was named @code{auto-fill-hook},
 +but since it is not called with the standard convention for hooks, it
 +was renamed to @code{auto-fill-function} in version 19.
 +@end quotation
 +@end defvar
 +
 +@defvar normal-auto-fill-function
 +This variable specifies the function to use for
 +@code{auto-fill-function}, if and when Auto Fill is turned on.  Major
 +modes can set buffer-local values for this variable to alter how Auto
 +Fill works.
 +@end defvar
 +
 +@defvar auto-fill-chars
 +A char table of characters which invoke @code{auto-fill-function} when
 +self-inserted---space and newline in most language environments.  They
 +have an entry @code{t} in the table.
 +@end defvar
 +
 +@node Sorting
 +@section Sorting Text
 +@cindex sorting text
 +
 +  The sorting functions described in this section all rearrange text in
 +a buffer.  This is in contrast to the function @code{sort}, which
 +rearranges the order of the elements of a list (@pxref{Rearrangement}).
 +The values returned by these functions are not meaningful.
 +
 +@defun sort-subr reverse nextrecfun endrecfun &optional startkeyfun endkeyfun predicate
 +This function is the general text-sorting routine that subdivides a
 +buffer into records and then sorts them.  Most of the commands in this
 +section use this function.
 +
 +To understand how @code{sort-subr} works, consider the whole accessible
 +portion of the buffer as being divided into disjoint pieces called
 +@dfn{sort records}.  The records may or may not be contiguous, but they
 +must not overlap.  A portion of each sort record (perhaps all of it) is
 +designated as the sort key.  Sorting rearranges the records in order by
 +their sort keys.
 +
 +Usually, the records are rearranged in order of ascending sort key.
 +If the first argument to the @code{sort-subr} function, @var{reverse},
 +is non-@code{nil}, the sort records are rearranged in order of
 +descending sort key.
 +
 +The next four arguments to @code{sort-subr} are functions that are
 +called to move point across a sort record.  They are called many times
 +from within @code{sort-subr}.
 +
 +@enumerate
 +@item
 +@var{nextrecfun} is called with point at the end of a record.  This
 +function moves point to the start of the next record.  The first record
 +is assumed to start at the position of point when @code{sort-subr} is
 +called.  Therefore, you should usually move point to the beginning of
 +the buffer before calling @code{sort-subr}.
 +
 +This function can indicate there are no more sort records by leaving
 +point at the end of the buffer.
 +
 +@item
 +@var{endrecfun} is called with point within a record.  It moves point to
 +the end of the record.
 +
 +@item
 +@var{startkeyfun} is called to move point from the start of a record to
 +the start of the sort key.  This argument is optional; if it is omitted,
 +the whole record is the sort key.  If supplied, the function should
 +either return a non-@code{nil} value to be used as the sort key, or
 +return @code{nil} to indicate that the sort key is in the buffer
 +starting at point.  In the latter case, @var{endkeyfun} is called to
 +find the end of the sort key.
 +
 +@item
 +@var{endkeyfun} is called to move point from the start of the sort key
 +to the end of the sort key.  This argument is optional.  If
 +@var{startkeyfun} returns @code{nil} and this argument is omitted (or
 +@code{nil}), then the sort key extends to the end of the record.  There
 +is no need for @var{endkeyfun} if @var{startkeyfun} returns a
 +non-@code{nil} value.
 +@end enumerate
 +
 +The argument @var{predicate} is the function to use to compare keys.
 +If keys are numbers, it defaults to @code{<}; otherwise it defaults to
 +@code{string<}.
 +
 +As an example of @code{sort-subr}, here is the complete function
 +definition for @code{sort-lines}:
 +
 +@example
 +@group
 +;; @r{Note that the first two lines of doc string}
 +;; @r{are effectively one line when viewed by a user.}
 +(defun sort-lines (reverse beg end)
 +  "Sort lines in region alphabetically;\
 + argument means descending order.
 +Called from a program, there are three arguments:
 +@end group
 +@group
 +REVERSE (non-nil means reverse order),\
 + BEG and END (region to sort).
 +The variable `sort-fold-case' determines\
 + whether alphabetic case affects
 +the sort order."
 +@end group
 +@group
 +  (interactive "P\nr")
 +  (save-excursion
 +    (save-restriction
 +      (narrow-to-region beg end)
 +      (goto-char (point-min))
 +      (let ((inhibit-field-text-motion t))
 +        (sort-subr reverse 'forward-line 'end-of-line)))))
 +@end group
 +@end example
 +
 +Here @code{forward-line} moves point to the start of the next record,
 +and @code{end-of-line} moves point to the end of record.  We do not pass
 +the arguments @var{startkeyfun} and @var{endkeyfun}, because the entire
 +record is used as the sort key.
 +
 +The @code{sort-paragraphs} function is very much the same, except that
 +its @code{sort-subr} call looks like this:
 +
 +@example
 +@group
 +(sort-subr reverse
 +           (function
 +             (lambda ()
 +               (while (and (not (eobp))
 +                      (looking-at paragraph-separate))
 +                 (forward-line 1))))
 +           'forward-paragraph)
 +@end group
 +@end example
 +
 +Markers pointing into any sort records are left with no useful
 +position after @code{sort-subr} returns.
 +@end defun
 +
 +@defopt sort-fold-case
 +If this variable is non-@code{nil}, @code{sort-subr} and the other
 +buffer sorting functions ignore case when comparing strings.
 +@end defopt
 +
 +@deffn Command sort-regexp-fields reverse record-regexp key-regexp start end
 +This command sorts the region between @var{start} and @var{end}
 +alphabetically as specified by @var{record-regexp} and @var{key-regexp}.
 +If @var{reverse} is a negative integer, then sorting is in reverse
 +order.
 +
 +Alphabetical sorting means that two sort keys are compared by
 +comparing the first characters of each, the second characters of each,
 +and so on.  If a mismatch is found, it means that the sort keys are
 +unequal; the sort key whose character is less at the point of first
 +mismatch is the lesser sort key.  The individual characters are compared
 +according to their numerical character codes in the Emacs character set.
 +
 +The value of the @var{record-regexp} argument specifies how to divide
 +the buffer into sort records.  At the end of each record, a search is
 +done for this regular expression, and the text that matches it is taken
 +as the next record.  For example, the regular expression @samp{^.+$},
 +which matches lines with at least one character besides a newline, would
 +make each such line into a sort record.  @xref{Regular Expressions}, for
 +a description of the syntax and meaning of regular expressions.
 +
 +The value of the @var{key-regexp} argument specifies what part of each
 +record is the sort key.  The @var{key-regexp} could match the whole
 +record, or only a part.  In the latter case, the rest of the record has
 +no effect on the sorted order of records, but it is carried along when
 +the record moves to its new position.
 +
 +The @var{key-regexp} argument can refer to the text matched by a
 +subexpression of @var{record-regexp}, or it can be a regular expression
 +on its own.
 +
 +If @var{key-regexp} is:
 +
 +@table @asis
 +@item @samp{\@var{digit}}
 +then the text matched by the @var{digit}th @samp{\(...\)} parenthesis
 +grouping in @var{record-regexp} is the sort key.
 +
 +@item @samp{\&}
 +then the whole record is the sort key.
 +
 +@item a regular expression
 +then @code{sort-regexp-fields} searches for a match for the regular
 +expression within the record.  If such a match is found, it is the sort
 +key.  If there is no match for @var{key-regexp} within a record then
 +that record is ignored, which means its position in the buffer is not
 +changed.  (The other records may move around it.)
 +@end table
 +
 +For example, if you plan to sort all the lines in the region by the
 +first word on each line starting with the letter @samp{f}, you should
 +set @var{record-regexp} to @samp{^.*$} and set @var{key-regexp} to
 +@samp{\<f\w*\>}.  The resulting expression looks like this:
 +
 +@example
 +@group
 +(sort-regexp-fields nil "^.*$" "\\<f\\w*\\>"
 +                    (region-beginning)
 +                    (region-end))
 +@end group
 +@end example
 +
 +If you call @code{sort-regexp-fields} interactively, it prompts for
 +@var{record-regexp} and @var{key-regexp} in the minibuffer.
 +@end deffn
 +
 +@deffn Command sort-lines reverse start end
 +This command alphabetically sorts lines in the region between
 +@var{start} and @var{end}.  If @var{reverse} is non-@code{nil}, the sort
 +is in reverse order.
 +@end deffn
 +
 +@deffn Command sort-paragraphs reverse start end
 +This command alphabetically sorts paragraphs in the region between
 +@var{start} and @var{end}.  If @var{reverse} is non-@code{nil}, the sort
 +is in reverse order.
 +@end deffn
 +
 +@deffn Command sort-pages reverse start end
 +This command alphabetically sorts pages in the region between
 +@var{start} and @var{end}.  If @var{reverse} is non-@code{nil}, the sort
 +is in reverse order.
 +@end deffn
 +
 +@deffn Command sort-fields field start end
 +This command sorts lines in the region between @var{start} and
 +@var{end}, comparing them alphabetically by the @var{field}th field
 +of each line.  Fields are separated by whitespace and numbered starting
 +from 1.  If @var{field} is negative, sorting is by the
 +@w{@minus{}@var{field}th} field from the end of the line.  This command
 +is useful for sorting tables.
 +@end deffn
 +
 +@deffn Command sort-numeric-fields field start end
 +This command sorts lines in the region between @var{start} and
 +@var{end}, comparing them numerically by the @var{field}th field of
 +each line.  Fields are separated by whitespace and numbered starting
 +from 1.  The specified field must contain a number in each line of the
 +region.  Numbers starting with 0 are treated as octal, and numbers
 +starting with @samp{0x} are treated as hexadecimal.
 +
 +If @var{field} is negative, sorting is by the
 +@w{@minus{}@var{field}th} field from the end of the line.  This
 +command is useful for sorting tables.
 +@end deffn
 +
 +@defopt sort-numeric-base
 +This variable specifies the default radix for
 +@code{sort-numeric-fields} to parse numbers.
 +@end defopt
 +
 +@deffn Command sort-columns reverse &optional beg end
 +This command sorts the lines in the region between @var{beg} and
 +@var{end}, comparing them alphabetically by a certain range of
 +columns.  The column positions of @var{beg} and @var{end} bound the
 +range of columns to sort on.
 +
 +If @var{reverse} is non-@code{nil}, the sort is in reverse order.
 +
 +One unusual thing about this command is that the entire line
 +containing position @var{beg}, and the entire line containing position
 +@var{end}, are included in the region sorted.
 +
 +Note that @code{sort-columns} rejects text that contains tabs, because
 +tabs could be split across the specified columns.  Use @kbd{M-x
 +untabify} to convert tabs to spaces before sorting.
 +
 +When possible, this command actually works by calling the @code{sort}
 +utility program.
 +@end deffn
 +
 +@node Columns
 +@comment  node-name,  next,  previous,  up
 +@section Counting Columns
 +@cindex columns
 +@cindex counting columns
 +@cindex horizontal position
 +
 +  The column functions convert between a character position (counting
 +characters from the beginning of the buffer) and a column position
 +(counting screen characters from the beginning of a line).
 +
 +  These functions count each character according to the number of
 +columns it occupies on the screen.  This means control characters count
 +as occupying 2 or 4 columns, depending upon the value of
 +@code{ctl-arrow}, and tabs count as occupying a number of columns that
 +depends on the value of @code{tab-width} and on the column where the tab
 +begins.  @xref{Usual Display}.
 +
 +  Column number computations ignore the width of the window and the
 +amount of horizontal scrolling.  Consequently, a column value can be
 +arbitrarily high.  The first (or leftmost) column is numbered 0.  They
 +also ignore overlays and text properties, aside from invisibility.
 +
 +@defun current-column
 +This function returns the horizontal position of point, measured in
 +columns, counting from 0 at the left margin.  The column position is the
 +sum of the widths of all the displayed representations of the characters
 +between the start of the current line and point.
 +
 +For an example of using @code{current-column}, see the description of
 +@code{count-lines} in @ref{Text Lines}.
 +@end defun
 +
 +@defun move-to-column column &optional force
 +This function moves point to @var{column} in the current line.  The
 +calculation of @var{column} takes into account the widths of the
 +displayed representations of the characters between the start of the
 +line and point.
 +
 +If column @var{column} is beyond the end of the line, point moves to the
 +end of the line.  If @var{column} is negative, point moves to the
 +beginning of the line.
 +
 +If it is impossible to move to column @var{column} because that is in
 +the middle of a multicolumn character such as a tab, point moves to the
 +end of that character.  However, if @var{force} is non-@code{nil}, and
 +@var{column} is in the middle of a tab, then @code{move-to-column}
 +converts the tab into spaces so that it can move precisely to column
 +@var{column}.  Other multicolumn characters can cause anomalies despite
 +@var{force}, since there is no way to split them.
 +
 +The argument @var{force} also has an effect if the line isn't long
 +enough to reach column @var{column}; if it is @code{t}, that means to
 +add whitespace at the end of the line to reach that column.
 +
 +If @var{column} is not an integer, an error is signaled.
 +
 +The return value is the column number actually moved to.
 +@end defun
 +
 +@node Indentation
 +@section Indentation
 +@cindex indentation
 +
 +  The indentation functions are used to examine, move to, and change
 +whitespace that is at the beginning of a line.  Some of the functions
 +can also change whitespace elsewhere on a line.  Columns and indentation
 +count from zero at the left margin.
 +
 +@menu
 +* Primitive Indent::      Functions used to count and insert indentation.
 +* Mode-Specific Indent::  Customize indentation for different modes.
 +* Region Indent::         Indent all the lines in a region.
 +* Relative Indent::       Indent the current line based on previous lines.
 +* Indent Tabs::           Adjustable, typewriter-like tab stops.
 +* Motion by Indent::      Move to first non-blank character.
 +@end menu
 +
 +@node Primitive Indent
 +@subsection Indentation Primitives
 +
 +  This section describes the primitive functions used to count and
 +insert indentation.  The functions in the following sections use these
 +primitives.  @xref{Width}, for related functions.
 +
 +@defun current-indentation
 +@comment !!Type Primitive Function
 +@comment !!SourceFile indent.c
 +This function returns the indentation of the current line, which is
 +the horizontal position of the first nonblank character.  If the
 +contents are entirely blank, then this is the horizontal position of the
 +end of the line.
 +@end defun
 +
 +@deffn Command indent-to column &optional minimum
 +@comment !!Type Primitive Function
 +@comment !!SourceFile indent.c
 +This function indents from point with tabs and spaces until @var{column}
 +is reached.  If @var{minimum} is specified and non-@code{nil}, then at
 +least that many spaces are inserted even if this requires going beyond
 +@var{column}.  Otherwise the function does nothing if point is already
 +beyond @var{column}.  The value is the column at which the inserted
 +indentation ends.
 +
 +The inserted whitespace characters inherit text properties from the
 +surrounding text (usually, from the preceding text only).  @xref{Sticky
 +Properties}.
 +@end deffn
 +
 +@defopt indent-tabs-mode
 +@comment !!SourceFile indent.c
 +If this variable is non-@code{nil}, indentation functions can insert
 +tabs as well as spaces.  Otherwise, they insert only spaces.  Setting
 +this variable automatically makes it buffer-local in the current buffer.
 +@end defopt
 +
 +@node Mode-Specific Indent
 +@subsection Indentation Controlled by Major Mode
 +
 +  An important function of each major mode is to customize the @key{TAB}
 +key to indent properly for the language being edited.  This section
 +describes the mechanism of the @key{TAB} key and how to control it.
 +The functions in this section return unpredictable values.
 +
 +@defvar indent-line-function
 +This variable's value is the function to be used by @key{TAB} (and
 +various commands) to indent the current line.  The command
 +@code{indent-according-to-mode} does no more than call this function.
 +
 +In Lisp mode, the value is the symbol @code{lisp-indent-line}; in C
 +mode, @code{c-indent-line}; in Fortran mode, @code{fortran-indent-line}.
 +The default value is @code{indent-relative}.
 +@end defvar
 +
 +@deffn Command indent-according-to-mode
 +This command calls the function in @code{indent-line-function} to
 +indent the current line in a way appropriate for the current major mode.
 +@end deffn
 +
 +@deffn Command indent-for-tab-command
 +This command calls the function in @code{indent-line-function} to indent
 +the current line; however, if that function is
 +@code{indent-to-left-margin}, @code{insert-tab} is called instead.  (That
 +is a trivial command that inserts a tab character.)
 +@end deffn
 +
 +@deffn Command newline-and-indent
 +@comment !!SourceFile simple.el
 +This function inserts a newline, then indents the new line (the one
 +following the newline just inserted) according to the major mode.
 +
 +It does indentation by calling the current @code{indent-line-function}.
 +In programming language modes, this is the same thing @key{TAB} does,
 +but in some text modes, where @key{TAB} inserts a tab,
 +@code{newline-and-indent} indents to the column specified by
 +@code{left-margin}.
 +@end deffn
 +
 +@deffn Command reindent-then-newline-and-indent
 +@comment !!SourceFile simple.el
 +This command reindents the current line, inserts a newline at point,
 +and then indents the new line (the one following the newline just
 +inserted).
 +
 +This command does indentation on both lines according to the current
 +major mode, by calling the current value of @code{indent-line-function}.
 +In programming language modes, this is the same thing @key{TAB} does,
 +but in some text modes, where @key{TAB} inserts a tab,
 +@code{reindent-then-newline-and-indent} indents to the column specified
 +by @code{left-margin}.
 +@end deffn
 +
 +@node Region Indent
 +@subsection Indenting an Entire Region
 +
 +  This section describes commands that indent all the lines in the
 +region.  They return unpredictable values.
 +
 +@deffn Command indent-region start end to-column
 +This command indents each nonblank line starting between @var{start}
 +(inclusive) and @var{end} (exclusive).  If @var{to-column} is
 +@code{nil}, @code{indent-region} indents each nonblank line by calling
 +the current mode's indentation function, the value of
 +@code{indent-line-function}.
 +
 +If @var{to-column} is non-@code{nil}, it should be an integer
 +specifying the number of columns of indentation; then this function
 +gives each line exactly that much indentation, by either adding or
 +deleting whitespace.
 +
 +If there is a fill prefix, @code{indent-region} indents each line
 +by making it start with the fill prefix.
 +@end deffn
 +
 +@defvar indent-region-function
 +The value of this variable is a function that can be used by
 +@code{indent-region} as a short cut.  It should take two arguments, the
 +start and end of the region.  You should design the function so
 +that it will produce the same results as indenting the lines of the
 +region one by one, but presumably faster.
 +
 +If the value is @code{nil}, there is no short cut, and
 +@code{indent-region} actually works line by line.
 +
 +A short-cut function is useful in modes such as C mode and Lisp mode,
 +where the @code{indent-line-function} must scan from the beginning of
 +the function definition: applying it to each line would be quadratic in
 +time.  The short cut can update the scan information as it moves through
 +the lines indenting them; this takes linear time.  In a mode where
 +indenting a line individually is fast, there is no need for a short cut.
 +
 +@code{indent-region} with a non-@code{nil} argument @var{to-column} has
 +a different meaning and does not use this variable.
 +@end defvar
 +
 +@deffn Command indent-rigidly start end count
 +@comment !!SourceFile indent.el
 +This command indents all lines starting between @var{start}
 +(inclusive) and @var{end} (exclusive) sideways by @var{count} columns.
 +This ``preserves the shape'' of the affected region, moving it as a
 +rigid unit.  Consequently, this command is useful not only for indenting
 +regions of unindented text, but also for indenting regions of formatted
 +code.
 +
 +For example, if @var{count} is 3, this command adds 3 columns of
 +indentation to each of the lines beginning in the region specified.
 +
 +In Mail mode, @kbd{C-c C-y} (@code{mail-yank-original}) uses
 +@code{indent-rigidly} to indent the text copied from the message being
 +replied to.
 +@end deffn
 +
 +@defun indent-code-rigidly start end columns &optional nochange-regexp
 +This is like @code{indent-rigidly}, except that it doesn't alter lines
 +that start within strings or comments.
 +
 +In addition, it doesn't alter a line if @var{nochange-regexp} matches at
 +the beginning of the line (if @var{nochange-regexp} is non-@code{nil}).
 +@end defun
 +
 +@node Relative Indent
 +@subsection Indentation Relative to Previous Lines
 +
 +  This section describes two commands that indent the current line
 +based on the contents of previous lines.
 +
 +@deffn Command indent-relative &optional unindented-ok
 +This command inserts whitespace at point, extending to the same
 +column as the next @dfn{indent point} of the previous nonblank line.  An
 +indent point is a non-whitespace character following whitespace.  The
 +next indent point is the first one at a column greater than the current
 +column of point.  For example, if point is underneath and to the left of
 +the first non-blank character of a line of text, it moves to that column
 +by inserting whitespace.
 +
 +If the previous nonblank line has no next indent point (i.e., none at a
 +great enough column position), @code{indent-relative} either does
 +nothing (if @var{unindented-ok} is non-@code{nil}) or calls
 +@code{tab-to-tab-stop}.  Thus, if point is underneath and to the right
 +of the last column of a short line of text, this command ordinarily
 +moves point to the next tab stop by inserting whitespace.
 +
 +The return value of @code{indent-relative} is unpredictable.
 +
 +In the following example, point is at the beginning of the second
 +line:
 +
 +@example
 +@group
 +            This line is indented twelve spaces.
 +@point{}The quick brown fox jumped.
 +@end group
 +@end example
 +
 +@noindent
 +Evaluation of the expression @code{(indent-relative nil)} produces the
 +following:
 +
 +@example
 +@group
 +            This line is indented twelve spaces.
 +            @point{}The quick brown fox jumped.
 +@end group
 +@end example
 +
 +  In this next example, point is between the @samp{m} and @samp{p} of
 +@samp{jumped}:
 +
 +@example
 +@group
 +            This line is indented twelve spaces.
 +The quick brown fox jum@point{}ped.
 +@end group
 +@end example
 +
 +@noindent
 +Evaluation of the expression @code{(indent-relative nil)} produces the
 +following:
 +
 +@example
 +@group
 +            This line is indented twelve spaces.
 +The quick brown fox jum  @point{}ped.
 +@end group
 +@end example
 +@end deffn
 +
 +@deffn Command indent-relative-maybe
 +@comment !!SourceFile indent.el
 +This command indents the current line like the previous nonblank line,
 +by calling @code{indent-relative} with @code{t} as the
 +@var{unindented-ok} argument.  The return value is unpredictable.
 +
 +If the previous nonblank line has no indent points beyond the current
 +column, this command does nothing.
 +@end deffn
 +
 +@node Indent Tabs
 +@comment  node-name,  next,  previous,  up
 +@subsection Adjustable ``Tab Stops''
 +@cindex tabs stops for indentation
 +
 +  This section explains the mechanism for user-specified ``tab stops''
 +and the mechanisms that use and set them.  The name ``tab stops'' is
 +used because the feature is similar to that of the tab stops on a
 +typewriter.  The feature works by inserting an appropriate number of
 +spaces and tab characters to reach the next tab stop column; it does not
 +affect the display of tab characters in the buffer (@pxref{Usual
 +Display}).  Note that the @key{TAB} character as input uses this tab
 +stop feature only in a few major modes, such as Text mode.
 +@xref{Tab Stops,,, emacs, The GNU Emacs Manual}.
 +
 +@deffn Command tab-to-tab-stop
 +This command inserts spaces or tabs before point, up to the next tab
 +stop column defined by @code{tab-stop-list}.  It searches the list for
 +an element greater than the current column number, and uses that element
 +as the column to indent to.  It does nothing if no such element is
 +found.
 +@end deffn
 +
 +@defopt tab-stop-list
 +This variable is the list of tab stop columns used by
 +@code{tab-to-tab-stops}.  The elements should be integers in increasing
 +order.  The tab stop columns need not be evenly spaced.
 +
 +Use @kbd{M-x edit-tab-stops} to edit the location of tab stops
 +interactively.
 +@end defopt
 +
 +@node Motion by Indent
 +@subsection Indentation-Based Motion Commands
 +
 +  These commands, primarily for interactive use, act based on the
 +indentation in the text.
 +
 +@deffn Command back-to-indentation
 +@comment !!SourceFile simple.el
 +This command moves point to the first non-whitespace character in the
 +current line (which is the line in which point is located).  It returns
 +@code{nil}.
 +@end deffn
 +
 +@deffn Command backward-to-indentation &optional arg
 +@comment !!SourceFile simple.el
 +This command moves point backward @var{arg} lines and then to the
 +first nonblank character on that line.  It returns @code{nil}.
 +If @var{arg} is omitted or @code{nil}, it defaults to 1.
 +@end deffn
 +
 +@deffn Command forward-to-indentation &optional arg
 +@comment !!SourceFile simple.el
 +This command moves point forward @var{arg} lines and then to the first
 +nonblank character on that line.  It returns @code{nil}.
 +If @var{arg} is omitted or @code{nil}, it defaults to 1.
 +@end deffn
 +
 +@node Case Changes
 +@comment  node-name,  next,  previous,  up
 +@section Case Changes
 +@cindex case conversion in buffers
 +
 +  The case change commands described here work on text in the current
 +buffer.  @xref{Case Conversion}, for case conversion functions that work
 +on strings and characters.  @xref{Case Tables}, for how to customize
 +which characters are upper or lower case and how to convert them.
 +
 +@deffn Command capitalize-region start end
 +This function capitalizes all words in the region defined by
 +@var{start} and @var{end}.  To capitalize means to convert each word's
 +first character to upper case and convert the rest of each word to lower
 +case.  The function returns @code{nil}.
 +
 +If one end of the region is in the middle of a word, the part of the
 +word within the region is treated as an entire word.
 +
 +When @code{capitalize-region} is called interactively, @var{start} and
 +@var{end} are point and the mark, with the smallest first.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of the 5th foo.
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(capitalize-region 1 44)
 +@result{} nil
 +
 +---------- Buffer: foo ----------
 +This Is The Contents Of The 5th Foo.
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +@end deffn
 +
 +@deffn Command downcase-region start end
 +This function converts all of the letters in the region defined by
 +@var{start} and @var{end} to lower case.  The function returns
 +@code{nil}.
 +
 +When @code{downcase-region} is called interactively, @var{start} and
 +@var{end} are point and the mark, with the smallest first.
 +@end deffn
 +
 +@deffn Command upcase-region start end
 +This function converts all of the letters in the region defined by
 +@var{start} and @var{end} to upper case.  The function returns
 +@code{nil}.
 +
 +When @code{upcase-region} is called interactively, @var{start} and
 +@var{end} are point and the mark, with the smallest first.
 +@end deffn
 +
 +@deffn Command capitalize-word count
 +This function capitalizes @var{count} words after point, moving point
 +over as it does.  To capitalize means to convert each word's first
 +character to upper case and convert the rest of each word to lower case.
 +If @var{count} is negative, the function capitalizes the
 +@minus{}@var{count} previous words but does not move point.  The value
 +is @code{nil}.
 +
 +If point is in the middle of a word, the part of the word before point
 +is ignored when moving forward.  The rest is treated as an entire word.
 +
 +When @code{capitalize-word} is called interactively, @var{count} is
 +set to the numeric prefix argument.
 +@end deffn
 +
 +@deffn Command downcase-word count
 +This function converts the @var{count} words after point to all lower
 +case, moving point over as it does.  If @var{count} is negative, it
 +converts the @minus{}@var{count} previous words but does not move point.
 +The value is @code{nil}.
 +
 +When @code{downcase-word} is called interactively, @var{count} is set
 +to the numeric prefix argument.
 +@end deffn
 +
 +@deffn Command upcase-word count
 +This function converts the @var{count} words after point to all upper
 +case, moving point over as it does.  If @var{count} is negative, it
 +converts the @minus{}@var{count} previous words but does not move point.
 +The value is @code{nil}.
 +
 +When @code{upcase-word} is called interactively, @var{count} is set to
 +the numeric prefix argument.
 +@end deffn
 +
 +@node Text Properties
 +@section Text Properties
 +@cindex text properties
 +@cindex attributes of text
 +@cindex properties of text
 +
 +  Each character position in a buffer or a string can have a @dfn{text
 +property list}, much like the property list of a symbol (@pxref{Property
 +Lists}).  The properties belong to a particular character at a
 +particular place, such as, the letter @samp{T} at the beginning of this
 +sentence or the first @samp{o} in @samp{foo}---if the same character
 +occurs in two different places, the two occurrences in general have
 +different properties.
 +
 +  Each property has a name and a value.  Both of these can be any Lisp
 +object, but the name is normally a symbol.  Typically each property
 +name symbol is used for a particular purpose; for instance, the text
 +property @code{face} specifies the faces for displaying the character
 +(@pxref{Special Properties}).  The usual way to access the property
 +list is to specify a name and ask what value corresponds to it.
 +
 +  If a character has a @code{category} property, we call it the
 +@dfn{property category} of the character.  It should be a symbol.  The
 +properties of the symbol serve as defaults for the properties of the
 +character.
 +
 +  Copying text between strings and buffers preserves the properties
 +along with the characters; this includes such diverse functions as
 +@code{substring}, @code{insert}, and @code{buffer-substring}.
 +
 +@menu
 +* Examining Properties::   Looking at the properties of one character.
 +* Changing Properties::          Setting the properties of a range of text.
 +* Property Search::      Searching for where a property changes value.
 +* Special Properties::           Particular properties with special meanings.
 +* Format Properties::      Properties for representing formatting of text.
 +* Sticky Properties::      How inserted text gets properties from
 +                             neighboring text.
 +* Lazy Properties::        Computing text properties in a lazy fashion
 +                             only when text is examined.
 +* Clickable Text::         Using text properties to make regions of text
 +                             do something when you click on them.
 +* Links and Mouse-1::      How to make @key{Mouse-1} follow a link.
 +* Fields::                 The @code{field} property defines
 +                             fields within the buffer.
 +* Not Intervals::        Why text properties do not use
 +                           Lisp-visible text intervals.
 +@end menu
 +
 +@node Examining Properties
 +@subsection Examining Text Properties
 +
 +  The simplest way to examine text properties is to ask for the value of
 +a particular property of a particular character.  For that, use
 +@code{get-text-property}.  Use @code{text-properties-at} to get the
 +entire property list of a character.  @xref{Property Search}, for
 +functions to examine the properties of a number of characters at once.
 +
 +  These functions handle both strings and buffers.  Keep in mind that
 +positions in a string start from 0, whereas positions in a buffer start
 +from 1.
 +
 +@defun get-text-property pos prop &optional object
 +This function returns the value of the @var{prop} property of the
 +character after position @var{pos} in @var{object} (a buffer or
 +string).  The argument @var{object} is optional and defaults to the
 +current buffer.
 +
 +If there is no @var{prop} property strictly speaking, but the character
 +has a property category that is a symbol, then @code{get-text-property} returns
 +the @var{prop} property of that symbol.
 +@end defun
 +
 +@defun get-char-property position prop &optional object
 +This function is like @code{get-text-property}, except that it checks
 +overlays first and then text properties.  @xref{Overlays}.
 +
++The argument @var{object} may be a string, a buffer, or a window.  If
++it is a window, then the buffer displayed in that window is used for
++text properties and overlays, but only the overlays active for that
++window are considered.  If @var{object} is a buffer, then overlays in
++that buffer are considered first, in order of decreasing priority,
++followed by the text properties.  If @var{object} is a string, only
++text properties are considered, since strings never have overlays.
 +@end defun
 +
 +@defun get-char-property-and-overlay position prop &optional object
 +This is like @code{get-char-property}, but gives extra information
 +about the overlay that the property value comes from.
 +
 +Its value is a cons cell whose @sc{car} is the property value, the
 +same value @code{get-char-property} would return with the same
 +arguments.  Its @sc{cdr} is the overlay in which the property was
 +found, or @code{nil}, if it was found as a text property or not found
 +at all.
 +
 +If @var{position} is at the end of @var{object}, both the @sc{car} and
 +the @sc{cdr} of the value are @code{nil}.
 +@end defun
 +
 +@defvar char-property-alias-alist
 +This variable holds an alist which maps property names to a list of
 +alternative property names.  If a character does not specify a direct
 +value for a property, the alternative property names are consulted in
 +order; the first non-@code{nil} value is used.  This variable takes
 +precedence over @code{default-text-properties}, and @code{category}
 +properties take precedence over this variable.
 +@end defvar
 +
 +@defun text-properties-at position &optional object
 +This function returns the entire property list of the character at
 +@var{position} in the string or buffer @var{object}.  If @var{object} is
 +@code{nil}, it defaults to the current buffer.
 +@end defun
 +
 +@defvar default-text-properties
 +This variable holds a property list giving default values for text
 +properties.  Whenever a character does not specify a value for a
 +property, neither directly, through a category symbol, or through
 +@code{char-property-alias-alist}, the value stored in this list is
 +used instead.  Here is an example:
 +
 +@example
 +(setq default-text-properties '(foo 69)
 +      char-property-alias-alist nil)
 +;; @r{Make sure character 1 has no properties of its own.}
 +(set-text-properties 1 2 nil)
 +;; @r{What we get, when we ask, is the default value.}
 +(get-text-property 1 'foo)
 +     @result{} 69
 +@end example
 +@end defvar
 +
 +@node Changing Properties
 +@subsection Changing Text Properties
 +
 +  The primitives for changing properties apply to a specified range of
 +text in a buffer or string.  The function @code{set-text-properties}
 +(see end of section) sets the entire property list of the text in that
 +range; more often, it is useful to add, change, or delete just certain
 +properties specified by name.
 +
 +  Since text properties are considered part of the contents of the
 +buffer (or string), and can affect how a buffer looks on the screen,
 +any change in buffer text properties marks the buffer as modified.
 +Buffer text property changes are undoable also (@pxref{Undo}).
 +Positions in a string start from 0, whereas positions in a buffer
 +start from 1.
 +
 +@defun put-text-property start end prop value &optional object
 +This function sets the @var{prop} property to @var{value} for the text
 +between @var{start} and @var{end} in the string or buffer @var{object}.
 +If @var{object} is @code{nil}, it defaults to the current buffer.
 +@end defun
 +
 +@defun add-text-properties start end props &optional object
 +This function adds or overrides text properties for the text between
 +@var{start} and @var{end} in the string or buffer @var{object}.  If
 +@var{object} is @code{nil}, it defaults to the current buffer.
 +
 +The argument @var{props} specifies which properties to add.  It should
 +have the form of a property list (@pxref{Property Lists}): a list whose
 +elements include the property names followed alternately by the
 +corresponding values.
 +
 +The return value is @code{t} if the function actually changed some
 +property's value; @code{nil} otherwise (if @var{props} is @code{nil} or
 +its values agree with those in the text).
 +
 +For example, here is how to set the @code{comment} and @code{face}
 +properties of a range of text:
 +
 +@example
 +(add-text-properties @var{start} @var{end}
 +                     '(comment t face highlight))
 +@end example
 +@end defun
 +
 +@defun remove-text-properties start end props &optional object
 +This function deletes specified text properties from the text between
 +@var{start} and @var{end} in the string or buffer @var{object}.  If
 +@var{object} is @code{nil}, it defaults to the current buffer.
 +
 +The argument @var{props} specifies which properties to delete.  It
 +should have the form of a property list (@pxref{Property Lists}): a list
 +whose elements are property names alternating with corresponding values.
 +But only the names matter---the values that accompany them are ignored.
 +For example, here's how to remove the @code{face} property.
 +
 +@example
 +(remove-text-properties @var{start} @var{end} '(face nil))
 +@end example
 +
 +The return value is @code{t} if the function actually changed some
 +property's value; @code{nil} otherwise (if @var{props} is @code{nil} or
 +if no character in the specified text had any of those properties).
 +
 +To remove all text properties from certain text, use
 +@code{set-text-properties} and specify @code{nil} for the new property
 +list.
 +@end defun
 +
 +@defun remove-list-of-text-properties start end list-of-properties &optional object
 +Like @code{remove-text-properties} except that
 +@var{list-of-properties} is a list of property names only, not an
 +alternating list of property names and values.
 +@end defun
 +
 +@defun set-text-properties start end props &optional object
 +This function completely replaces the text property list for the text
 +between @var{start} and @var{end} in the string or buffer @var{object}.
 +If @var{object} is @code{nil}, it defaults to the current buffer.
 +
 +The argument @var{props} is the new property list.  It should be a list
 +whose elements are property names alternating with corresponding values.
 +
 +After @code{set-text-properties} returns, all the characters in the
 +specified range have identical properties.
 +
 +If @var{props} is @code{nil}, the effect is to get rid of all properties
 +from the specified range of text.  Here's an example:
 +
 +@example
 +(set-text-properties @var{start} @var{end} nil)
 +@end example
 +
 +Do not rely on the return value of this function.
 +@end defun
 +
 +  The easiest way to make a string with text properties
 +is with @code{propertize}:
 +
 +@defun propertize string &rest properties
 +This function returns a copy of @var{string} which has the text
 +properties @var{properties}.  These properties apply to all the
 +characters in the string that is returned.  Here is an example that
 +constructs a string with a @code{face} property and a @code{mouse-face}
 +property:
 +
 +@smallexample
 +(propertize "foo" 'face 'italic
 +            'mouse-face 'bold-italic)
 +     @result{} #("foo" 0 3 (mouse-face bold-italic face italic))
 +@end smallexample
 +
 +To put different properties on various parts of a string, you can
 +construct each part with @code{propertize} and then combine them with
 +@code{concat}:
 +
 +@smallexample
 +(concat
 + (propertize "foo" 'face 'italic
 +             'mouse-face 'bold-italic)
 + " and "
 + (propertize "bar" 'face 'italic
 +             'mouse-face 'bold-italic))
 +     @result{} #("foo and bar"
 +                 0 3 (face italic mouse-face bold-italic)
 +                 3 8 nil
 +                 8 11 (face italic mouse-face bold-italic))
 +@end smallexample
 +@end defun
 +
 +  See also the function @code{buffer-substring-no-properties}
 +(@pxref{Buffer Contents}) which copies text from the buffer
 +but does not copy its properties.
 +
 +@node Property Search
 +@subsection Text Property Search Functions
 +
 +  In typical use of text properties, most of the time several or many
 +consecutive characters have the same value for a property.  Rather than
 +writing your programs to examine characters one by one, it is much
 +faster to process chunks of text that have the same property value.
 +
 +  Here are functions you can use to do this.  They use @code{eq} for
 +comparing property values.  In all cases, @var{object} defaults to the
 +current buffer.
 +
 +  For high performance, it's very important to use the @var{limit}
 +argument to these functions, especially the ones that search for a
 +single property---otherwise, they may spend a long time scanning to the
 +end of the buffer, if the property you are interested in does not change.
 +
 +  These functions do not move point; instead, they return a position (or
 +@code{nil}).  Remember that a position is always between two characters;
 +the position returned by these functions is between two characters with
 +different properties.
 +
 +@defun next-property-change pos &optional object limit
 +The function scans the text forward from position @var{pos} in the
 +string or buffer @var{object} till it finds a change in some text
 +property, then returns the position of the change.  In other words, it
 +returns the position of the first character beyond @var{pos} whose
 +properties are not identical to those of the character just after
 +@var{pos}.
 +
 +If @var{limit} is non-@code{nil}, then the scan ends at position
 +@var{limit}.  If there is no property change before that point,
 +@code{next-property-change} returns @var{limit}.
 +
 +The value is @code{nil} if the properties remain unchanged all the way
 +to the end of @var{object} and @var{limit} is @code{nil}.  If the value
 +is non-@code{nil}, it is a position greater than or equal to @var{pos}.
 +The value equals @var{pos} only when @var{limit} equals @var{pos}.
 +
 +Here is an example of how to scan the buffer by chunks of text within
 +which all properties are constant:
 +
 +@smallexample
 +(while (not (eobp))
 +  (let ((plist (text-properties-at (point)))
 +        (next-change
 +         (or (next-property-change (point) (current-buffer))
 +             (point-max))))
 +    @r{Process text from point to @var{next-change}@dots{}}
 +    (goto-char next-change)))
 +@end smallexample
 +@end defun
 +
 +@defun previous-property-change pos &optional object limit
 +This is like @code{next-property-change}, but scans back from @var{pos}
 +instead of forward.  If the value is non-@code{nil}, it is a position
 +less than or equal to @var{pos}; it equals @var{pos} only if @var{limit}
 +equals @var{pos}.
 +@end defun
 +
 +@defun next-single-property-change pos prop &optional object limit
 +The function scans text for a change in the @var{prop} property, then
 +returns the position of the change.  The scan goes forward from
 +position @var{pos} in the string or buffer @var{object}.  In other
 +words, this function returns the position of the first character
 +beyond @var{pos} whose @var{prop} property differs from that of the
 +character just after @var{pos}.
 +
 +If @var{limit} is non-@code{nil}, then the scan ends at position
 +@var{limit}.  If there is no property change before that point,
 +@code{next-single-property-change} returns @var{limit}.
 +
 +The value is @code{nil} if the property remains unchanged all the way to
 +the end of @var{object} and @var{limit} is @code{nil}.  If the value is
 +non-@code{nil}, it is a position greater than or equal to @var{pos}; it
 +equals @var{pos} only if @var{limit} equals @var{pos}.
 +@end defun
 +
 +@defun previous-single-property-change pos prop &optional object limit
 +This is like @code{next-single-property-change}, but scans back from
 +@var{pos} instead of forward.  If the value is non-@code{nil}, it is a
 +position less than or equal to @var{pos}; it equals @var{pos} only if
 +@var{limit} equals @var{pos}.
 +@end defun
 +
 +@defun next-char-property-change pos &optional limit
 +This is like @code{next-property-change} except that it considers
 +overlay properties as well as text properties, and if no change is
 +found before the end of the buffer, it returns the maximum buffer
 +position rather than @code{nil} (in this sense, it resembles the
 +corresponding overlay function @code{next-overlay-change}, rather than
 +@code{next-property-change}).  There is no @var{object} operand
 +because this function operates only on the current buffer.  It returns
 +the next address at which either kind of property changes.
 +@end defun
 +
 +@defun previous-char-property-change pos &optional limit
 +This is like @code{next-char-property-change}, but scans back from
 +@var{pos} instead of forward, and returns the minimum buffer
 +position if no change is found.
 +@end defun
 +
 +@defun next-single-char-property-change pos prop &optional object limit
 +This is like @code{next-single-property-change} except that it
 +considers overlay properties as well as text properties, and if no
 +change is found before the end of the @var{object}, it returns the
 +maximum valid position in @var{object} rather than @code{nil}.  Unlike
 +@code{next-char-property-change}, this function @emph{does} have an
 +@var{object} operand; if @var{object} is not a buffer, only
 +text-properties are considered.
 +@end defun
 +
 +@defun previous-single-char-property-change pos prop &optional object limit
 +This is like @code{next-single-char-property-change}, but scans back
 +from @var{pos} instead of forward, and returns the minimum valid
 +position in @var{object} if no change is found.
 +@end defun
 +
 +@defun text-property-any start end prop value &optional object
 +This function returns non-@code{nil} if at least one character between
 +@var{start} and @var{end} has a property @var{prop} whose value is
 +@var{value}.  More precisely, it returns the position of the first such
 +character.  Otherwise, it returns @code{nil}.
 +
 +The optional fifth argument, @var{object}, specifies the string or
 +buffer to scan.  Positions are relative to @var{object}.  The default
 +for @var{object} is the current buffer.
 +@end defun
 +
 +@defun text-property-not-all start end prop value &optional object
 +This function returns non-@code{nil} if at least one character between
 +@var{start} and @var{end} does not have a property @var{prop} with value
 +@var{value}.  More precisely, it returns the position of the first such
 +character.  Otherwise, it returns @code{nil}.
 +
 +The optional fifth argument, @var{object}, specifies the string or
 +buffer to scan.  Positions are relative to @var{object}.  The default
 +for @var{object} is the current buffer.
 +@end defun
 +
 +@node Special Properties
 +@subsection Properties with Special Meanings
 +
 +  Here is a table of text property names that have special built-in
 +meanings.  The following sections list a few additional special property
 +names that control filling and property inheritance.  All other names
 +have no standard meaning, and you can use them as you like.
 +
 +  Note: the properties @code{composition}, @code{display},
 +@code{invisible} and @code{intangible} can also cause point to move to
 +an acceptable place, after each Emacs command.  @xref{Adjusting
 +Point}.
 +
 +@table @code
 +@cindex property category of text character
 +@kindex category @r{(text property)}
 +@item category
 +If a character has a @code{category} property, we call it the
 +@dfn{property category} of the character.  It should be a symbol.  The
 +properties of this symbol serve as defaults for the properties of the
 +character.
 +
 +@item face
 +@cindex face codes of text
 +@kindex face @r{(text property)}
 +You can use the property @code{face} to control the font and color of
 +text.  @xref{Faces}, for more information.
 +
 +In the simplest case, the value is a face name.  It can also be a list;
 +then each element can be any of these possibilities;
 +
 +@itemize @bullet
 +@item
 +A face name (a symbol or string).
 +
 +@item
 +A property list of face attributes.  This has the
 +form (@var{keyword} @var{value} @dots{}), where each @var{keyword} is a
 +face attribute name and @var{value} is a meaningful value for that
 +attribute.  With this feature, you do not need to create a face each
 +time you want to specify a particular attribute for certain text.
 +@xref{Face Attributes}.
 +
 +@item
 +A cons cell with the form @code{(foreground-color . @var{color-name})} or
 +@code{(background-color . @var{color-name})}.  These elements specify
 +just the foreground color or just the background color.  @xref{Color
 +Names}, for the supported forms of @var{color-name}.
 +
 +A cons cell of @code{(foreground-color . @var{color-name})} is equivalent to
 +specifying @code{(:foreground @var{color-name})}; likewise for the
 +background.
 +@end itemize
 +
 +You can use Font Lock Mode (@pxref{Font Lock Mode}), to dynamically
 +update @code{face} properties based on the contents of the text.
 +
 +@item font-lock-face
 +@kindex font-lock-face @r{(text property)}
 +The @code{font-lock-face} property is the same in all respects as the
 +@code{face} property, but its state of activation is controlled by
 +@code{font-lock-mode}.  This can be advantageous for special buffers
 +which are not intended to be user-editable, or for static areas of
 +text which are always fontified in the same way.
 +@xref{Precalculated Fontification}.
 +
 +Strictly speaking, @code{font-lock-face} is not a built-in text
 +property; rather, it is implemented in Font Lock mode using
 +@code{char-property-alias-alist}.  @xref{Examining Properties}.
 +
 +This property is new in Emacs 22.1.
 +
 +@item mouse-face
 +@kindex mouse-face @r{(text property)}
 +The property @code{mouse-face} is used instead of @code{face} when the
 +mouse is on or near the character.  For this purpose, ``near'' means
 +that all text between the character and where the mouse is have the same
 +@code{mouse-face} property value.
 +
 +@item fontified
 +@kindex fontified @r{(text property)}
 +This property says whether the text is ready for display.  If
 +@code{nil}, Emacs's redisplay routine calls the functions in
 +@code{fontification-functions} (@pxref{Auto Faces}) to prepare this
 +part of the buffer before it is displayed.  It is used internally by
 +the ``just in time'' font locking code.
 +
 +@item display
 +This property activates various features that change the
 +way text is displayed.  For example, it can make text appear taller
 +or shorter, higher or lower, wider or narrow, or replaced with an image.
 +@xref{Display Property}.
 +
 +@item help-echo
 +@kindex help-echo @r{(text property)}
 +@cindex tooltip
 +@anchor{Text help-echo}
 +If text has a string as its @code{help-echo} property, then when you
 +move the mouse onto that text, Emacs displays that string in the echo
 +area, or in the tooltip window (@pxref{Tooltips,,, emacs, The GNU Emacs
 +Manual}).
 +
 +If the value of the @code{help-echo} property is a function, that
 +function is called with three arguments, @var{window}, @var{object} and
 +@var{pos} and should return a help string or @code{nil} for
 +none.  The first argument, @var{window} is the window in which
 +the help was found.  The second, @var{object}, is the buffer, overlay or
 +string which had the @code{help-echo} property.  The @var{pos}
 +argument is as follows:
 +
 +@itemize @bullet{}
 +@item
 +If @var{object} is a buffer, @var{pos} is the position in the buffer.
 +@item
 +If @var{object} is an overlay, that overlay has a @code{help-echo}
 +property, and @var{pos} is the position in the overlay's buffer.
 +@item
 +If @var{object} is a string (an overlay string or a string displayed
 +with the @code{display} property), @var{pos} is the position in that
 +string.
 +@end itemize
 +
 +If the value of the @code{help-echo} property is neither a function nor
 +a string, it is evaluated to obtain a help string.
 +
 +You can alter the way help text is displayed by setting the variable
 +@code{show-help-function} (@pxref{Help display}).
 +
 +This feature is used in the mode line and for other active text.
 +
 +@item keymap
 +@cindex keymap of character
 +@kindex keymap @r{(text property)}
 +The @code{keymap} property specifies an additional keymap for
 +commands.  When this keymap applies, it is used for key lookup before
 +the minor mode keymaps and before the buffer's local map.
 +@xref{Active Keymaps}.  If the property value is a symbol, the
 +symbol's function definition is used as the keymap.
 +
 +The property's value for the character before point applies if it is
 +non-@code{nil} and rear-sticky, and the property's value for the
 +character after point applies if it is non-@code{nil} and
 +front-sticky.  (For mouse clicks, the position of the click is used
 +instead of the position of point.)
 +
 +@item local-map
 +@kindex local-map @r{(text property)}
 +This property works like @code{keymap} except that it specifies a
 +keymap to use @emph{instead of} the buffer's local map.  For most
 +purposes (perhaps all purposes), it is better to use the @code{keymap}
 +property.
 +
 +@item syntax-table
 +The @code{syntax-table} property overrides what the syntax table says
 +about this particular character.  @xref{Syntax Properties}.
 +
 +@item read-only
 +@cindex read-only character
 +@kindex read-only @r{(text property)}
 +If a character has the property @code{read-only}, then modifying that
 +character is not allowed.  Any command that would do so gets an error,
 +@code{text-read-only}.  If the property value is a string, that string
 +is used as the error message.
 +
 +Insertion next to a read-only character is an error if inserting
 +ordinary text there would inherit the @code{read-only} property due to
 +stickiness.  Thus, you can control permission to insert next to
 +read-only text by controlling the stickiness.  @xref{Sticky Properties}.
 +
 +Since changing properties counts as modifying the buffer, it is not
 +possible to remove a @code{read-only} property unless you know the
 +special trick: bind @code{inhibit-read-only} to a non-@code{nil} value
 +and then remove the property.  @xref{Read Only Buffers}.
 +
 +@item invisible
 +@kindex invisible @r{(text property)}
 +A non-@code{nil} @code{invisible} property can make a character invisible
 +on the screen.  @xref{Invisible Text}, for details.
 +
 +@item intangible
 +@kindex intangible @r{(text property)}
 +If a group of consecutive characters have equal and non-@code{nil}
 +@code{intangible} properties, then you cannot place point between them.
 +If you try to move point forward into the group, point actually moves to
 +the end of the group.  If you try to move point backward into the group,
 +point actually moves to the start of the group.
 +
 +If consecutive characters have unequal non-@code{nil}
 +@code{intangible} properties, they belong to separate groups; each
 +group is separately treated as described above.
 +
 +When the variable @code{inhibit-point-motion-hooks} is non-@code{nil},
 +the @code{intangible} property is ignored.
 +
 +@item field
 +@kindex field @r{(text property)}
 +Consecutive characters with the same @code{field} property constitute a
 +@dfn{field}.  Some motion functions including @code{forward-word} and
 +@code{beginning-of-line} stop moving at a field boundary.
 +@xref{Fields}.
 +
 +@item cursor
 +@kindex cursor @r{(text property)}
 +Normally, the cursor is displayed at the end of any overlay and text
 +property strings present at the current window position.  You can
 +place the cursor on any desired character of these strings by giving
 +that character a non-@code{nil} @var{cursor} text property.
 +
 +@item pointer
 +@kindex pointer @r{(text property)}
 +This specifies a specific pointer shape when the mouse pointer is over
 +this text or image.  @xref{Pointer Shape}, for possible pointer
 +shapes.
 +
 +@item line-spacing
 +@kindex line-spacing @r{(text property)}
 +A newline can have a @code{line-spacing} text or overlay property that
 +controls the height of the display line ending with that newline.  The
 +property value overrides the default frame line spacing and the buffer
 +local @code{line-spacing} variable.  @xref{Line Height}.
 +
 +@item line-height
 +@kindex line-height @r{(text property)}
 +A newline can have a @code{line-height} text or overlay property that
 +controls the total height of the display line ending in that newline.
 +@xref{Line Height}.
 +
 +@item modification-hooks
 +@cindex change hooks for a character
 +@cindex hooks for changing a character
 +@kindex modification-hooks @r{(text property)}
 +If a character has the property @code{modification-hooks}, then its
 +value should be a list of functions; modifying that character calls all
 +of those functions.  Each function receives two arguments: the beginning
 +and end of the part of the buffer being modified.  Note that if a
 +particular modification hook function appears on several characters
 +being modified by a single primitive, you can't predict how many times
 +the function will be called.
 +
 +If these functions modify the buffer, they should bind
 +@code{inhibit-modification-hooks} to @code{t} around doing so, to
 +avoid confusing the internal mechanism that calls these hooks.
 +
 +Overlays also support the @code{modification-hooks} property, but the
 +details are somewhat different (@pxref{Overlay Properties}).
 +
 +@item insert-in-front-hooks
 +@itemx insert-behind-hooks
 +@kindex insert-in-front-hooks @r{(text property)}
 +@kindex insert-behind-hooks @r{(text property)}
 +The operation of inserting text in a buffer also calls the functions
 +listed in the @code{insert-in-front-hooks} property of the following
 +character and in the @code{insert-behind-hooks} property of the
 +preceding character.  These functions receive two arguments, the
 +beginning and end of the inserted text.  The functions are called
 +@emph{after} the actual insertion takes place.
 +
 +See also @ref{Change Hooks}, for other hooks that are called
 +when you change text in a buffer.
 +
 +@item point-entered
 +@itemx point-left
 +@cindex hooks for motion of point
 +@kindex point-entered @r{(text property)}
 +@kindex point-left @r{(text property)}
 +The special properties @code{point-entered} and @code{point-left}
 +record hook functions that report motion of point.  Each time point
 +moves, Emacs compares these two property values:
 +
 +@itemize @bullet
 +@item
 +the @code{point-left} property of the character after the old location,
 +and
 +@item
 +the @code{point-entered} property of the character after the new
 +location.
 +@end itemize
 +
 +@noindent
 +If these two values differ, each of them is called (if not @code{nil})
 +with two arguments: the old value of point, and the new one.
 +
 +The same comparison is made for the characters before the old and new
 +locations.  The result may be to execute two @code{point-left} functions
 +(which may be the same function) and/or two @code{point-entered}
 +functions (which may be the same function).  In any case, all the
 +@code{point-left} functions are called first, followed by all the
 +@code{point-entered} functions.
 +
 +It is possible with @code{char-after} to examine characters at various
 +buffer positions without moving point to those positions.  Only an
 +actual change in the value of point runs these hook functions.
 +
 +@defvar inhibit-point-motion-hooks
 +When this variable is non-@code{nil}, @code{point-left} and
 +@code{point-entered} hooks are not run, and the @code{intangible}
 +property has no effect.  Do not set this variable globally; bind it with
 +@code{let}.
 +@end defvar
 +
 +@defvar show-help-function
 +@anchor{Help display} If this variable is non-@code{nil}, it specifies a
 +function called to display help strings.  These may be @code{help-echo}
 +properties, menu help strings (@pxref{Simple Menu Items},
 +@pxref{Extended Menu Items}), or tool bar help strings (@pxref{Tool
 +Bar}).  The specified function is called with one argument, the help
 +string to display.  Tooltip mode (@pxref{Tooltips,,, emacs, The GNU Emacs
 +Manual}) provides an example.
 +@end defvar
 +
 +@item composition
 +@kindex composition @r{(text property)}
 +This text property is used to display a sequence of characters as a
 +single glyph composed from components.  But the value of the property
 +itself is completely internal to Emacs and should not be manipulated
 +directly by, for instance, @code{put-text-property}.
 +
 +@end table
 +
 +@node Format Properties
 +@subsection Formatted Text Properties
 +
 +  These text properties affect the behavior of the fill commands.  They
 +are used for representing formatted text.  @xref{Filling}, and
 +@ref{Margins}.
 +
 +@table @code
 +@item hard
 +If a newline character has this property, it is a ``hard'' newline.
 +The fill commands do not alter hard newlines and do not move words
 +across them.  However, this property takes effect only if the
 +@code{use-hard-newlines} minor mode is enabled.  @xref{Hard and Soft
 +Newlines,, Hard and Soft Newlines, emacs, The GNU Emacs Manual}.
 +
 +@item right-margin
 +This property specifies an extra right margin for filling this part of the
 +text.
 +
 +@item left-margin
 +This property specifies an extra left margin for filling this part of the
 +text.
 +
 +@item justification
 +This property specifies the style of justification for filling this part
 +of the text.
 +@end table
 +
 +@node Sticky Properties
 +@subsection Stickiness of Text Properties
 +@cindex sticky text properties
 +@cindex inheritance of text properties
 +
 +  Self-inserting characters normally take on the same properties as the
 +preceding character.  This is called @dfn{inheritance} of properties.
 +
 +  In a Lisp program, you can do insertion with inheritance or without,
 +depending on your choice of insertion primitive.  The ordinary text
 +insertion functions such as @code{insert} do not inherit any properties.
 +They insert text with precisely the properties of the string being
 +inserted, and no others.  This is correct for programs that copy text
 +from one context to another---for example, into or out of the kill ring.
 +To insert with inheritance, use the special primitives described in this
 +section.  Self-inserting characters inherit properties because they work
 +using these primitives.
 +
 +  When you do insertion with inheritance, @emph{which} properties are
 +inherited, and from where, depends on which properties are @dfn{sticky}.
 +Insertion after a character inherits those of its properties that are
 +@dfn{rear-sticky}.  Insertion before a character inherits those of its
 +properties that are @dfn{front-sticky}.  When both sides offer different
 +sticky values for the same property, the previous character's value
 +takes precedence.
 +
 +  By default, a text property is rear-sticky but not front-sticky; thus,
 +the default is to inherit all the properties of the preceding character,
 +and nothing from the following character.
 +
 +  You can control the stickiness of various text properties with two
 +specific text properties, @code{front-sticky} and @code{rear-nonsticky},
 +and with the variable @code{text-property-default-nonsticky}.  You can
 +use the variable to specify a different default for a given property.
 +You can use those two text properties to make any specific properties
 +sticky or nonsticky in any particular part of the text.
 +
 +  If a character's @code{front-sticky} property is @code{t}, then all
 +its properties are front-sticky.  If the @code{front-sticky} property is
 +a list, then the sticky properties of the character are those whose
 +names are in the list.  For example, if a character has a
 +@code{front-sticky} property whose value is @code{(face read-only)},
 +then insertion before the character can inherit its @code{face} property
 +and its @code{read-only} property, but no others.
 +
 +  The @code{rear-nonsticky} property works the opposite way.  Most
 +properties are rear-sticky by default, so the @code{rear-nonsticky}
 +property says which properties are @emph{not} rear-sticky.  If a
 +character's @code{rear-nonsticky} property is @code{t}, then none of its
 +properties are rear-sticky.  If the @code{rear-nonsticky} property is a
 +list, properties are rear-sticky @emph{unless} their names are in the
 +list.
 +
 +@defvar text-property-default-nonsticky
 +This variable holds an alist which defines the default rear-stickiness
 +of various text properties.  Each element has the form
 +@code{(@var{property} . @var{nonstickiness})}, and it defines the
 +stickiness of a particular text property, @var{property}.
 +
 +If @var{nonstickiness} is non-@code{nil}, this means that the property
 +@var{property} is rear-nonsticky by default.  Since all properties are
 +front-nonsticky by default, this makes @var{property} nonsticky in both
 +directions by default.
 +
 +The text properties @code{front-sticky} and @code{rear-nonsticky}, when
 +used, take precedence over the default @var{nonstickiness} specified in
 +@code{text-property-default-nonsticky}.
 +@end defvar
 +
 +  Here are the functions that insert text with inheritance of properties:
 +
 +@defun insert-and-inherit &rest strings
 +Insert the strings @var{strings}, just like the function @code{insert},
 +but inherit any sticky properties from the adjoining text.
 +@end defun
 +
 +@defun insert-before-markers-and-inherit &rest strings
 +Insert the strings @var{strings}, just like the function
 +@code{insert-before-markers}, but inherit any sticky properties from the
 +adjoining text.
 +@end defun
 +
 +  @xref{Insertion}, for the ordinary insertion functions which do not
 +inherit.
 +
 +@node Lazy Properties
 +@subsection Lazy Computation of Text Properties
 +
 +  Instead of computing text properties for all the text in the buffer,
 +you can arrange to compute the text properties for parts of the text
 +when and if something depends on them.
 +
 +  The primitive that extracts text from the buffer along with its
 +properties is @code{buffer-substring}.  Before examining the properties,
 +this function runs the abnormal hook @code{buffer-access-fontify-functions}.
 +
 +@defvar buffer-access-fontify-functions
 +This variable holds a list of functions for computing text properties.
 +Before @code{buffer-substring} copies the text and text properties for a
 +portion of the buffer, it calls all the functions in this list.  Each of
 +the functions receives two arguments that specify the range of the
 +buffer being accessed.  (The buffer itself is always the current
 +buffer.)
 +@end defvar
 +
 +  The function @code{buffer-substring-no-properties} does not call these
 +functions, since it ignores text properties anyway.
 +
 +  In order to prevent the hook functions from being called more than
 +once for the same part of the buffer, you can use the variable
 +@code{buffer-access-fontified-property}.
 +
 +@defvar buffer-access-fontified-property
 +If this variable's value is non-@code{nil}, it is a symbol which is used
 +as a text property name.  A non-@code{nil} value for that text property
 +means, ``the other text properties for this character have already been
 +computed.''
 +
 +If all the characters in the range specified for @code{buffer-substring}
 +have a non-@code{nil} value for this property, @code{buffer-substring}
 +does not call the @code{buffer-access-fontify-functions} functions.  It
 +assumes these characters already have the right text properties, and
 +just copies the properties they already have.
 +
 +The normal way to use this feature is that the
 +@code{buffer-access-fontify-functions} functions add this property, as
 +well as others, to the characters they operate on.  That way, they avoid
 +being called over and over for the same text.
 +@end defvar
 +
 +@node Clickable Text
 +@subsection Defining Clickable Text
 +@cindex clickable text
 +
 +  @dfn{Clickable text} is text that can be clicked, with either the
 +the mouse or via keyboard commands, to produce some result.  Many
 +major modes use clickable text to implement features such as
 +hyper-links.  The @code{button} package provides an easy way to insert
 +and manipulate clickable text.  @xref{Buttons}.
 +
 +  In this section, we will explain how to manually set up clickable
 +text in a buffer using text properties.  This involves two things: (1)
 +indicating clickability when the mouse moves over the text, and (2)
 +making @kbd{RET} or a mouse click on that text do something.
 +
 +  Indicating clickability usually involves highlighting the text, and
 +often involves displaying helpful information about the action, such
 +as which mouse button to press, or a short summary of the action.
 +This can be done with the @code{mouse-face} and @code{help-echo}
 +text properties.  @xref{Special Properties}.
 +Here is an example of how Dired does it:
 +
 +@smallexample
 +(condition-case nil
 +    (if (dired-move-to-filename)
 +        (add-text-properties
 +         (point)
 +         (save-excursion
 +           (dired-move-to-end-of-filename)
 +           (point))
 +         '(mouse-face highlight
 +           help-echo "mouse-2: visit this file in other window")))
 +  (error nil))
 +@end smallexample
 +
 +@noindent
 +The first two arguments to @code{add-text-properties} specify the
 +beginning and end of the text.
 +
 +  The usual way to make the mouse do something when you click it
 +on this text is to define @code{mouse-2} in the major mode's
 +keymap.  The job of checking whether the click was on clickable text
 +is done by the command definition.  Here is how Dired does it:
 +
 +@smallexample
 +(defun dired-mouse-find-file-other-window (event)
 +  "In Dired, visit the file or directory name you click on."
 +  (interactive "e")
 +  (let (window pos file)
 +    (save-excursion
 +      (setq window (posn-window (event-end event))
 +            pos (posn-point (event-end event)))
 +      (if (not (windowp window))
 +          (error "No file chosen"))
 +      (set-buffer (window-buffer window))
 +      (goto-char pos)
 +      (setq file (dired-get-file-for-visit)))
 +    (if (file-directory-p file)
 +        (or (and (cdr dired-subdir-alist)
 +                 (dired-goto-subdir file))
 +            (progn
 +              (select-window window)
 +              (dired-other-window file)))
 +      (select-window window)
 +      (find-file-other-window (file-name-sans-versions file t)))))
 +@end smallexample
 +
 +@noindent
 +The reason for the @code{save-excursion} construct is to avoid
 +changing the current buffer.  In this case,
 +Dired uses the functions @code{posn-window} and @code{posn-point}
 +to determine which buffer the click happened in and where, and
 +in that buffer, @code{dired-get-file-for-visit} to determine which
 +file to visit.
 +
 +  Instead of defining a mouse command for the major mode, you can define
 +a key binding for the clickable text itself, using the @code{keymap}
 +text property:
 +
 +@example
 +(let ((map (make-sparse-keymap)))
 +  (define-key map [mouse-2] 'operate-this-button)
 +  (put-text-property (point)
 +                     (save-excursion
 +                       (dired-move-to-end-of-filename)
 +                       (point))
 +                     'keymap map))
 +@end example
 +
 +@noindent
 +This method makes it possible to define different commands for various
 +clickable pieces of text.  Also, the major mode definition (or the
 +global definition) remains available for the rest of the text in the
 +buffer.
 +
 +@node Links and Mouse-1
 +@subsection Links and Mouse-1
 +@cindex follow links
 +@cindex mouse-1
 +
 +  The normal Emacs command for activating text in read-only buffers is
 +@key{Mouse-2}, which includes following textual links.  However, most
 +graphical applications use @key{Mouse-1} for following links.  For
 +compatibility, @key{Mouse-1} follows links in Emacs too, when you
 +click on a link quickly without moving the mouse.  The user can
 +customize this behavior through the variable
 +@code{mouse-1-click-follows-link}.
 +
 +  To define text as a link at the Lisp level, you should bind the
 +@code{mouse-2} event to a command to follow the link.  Then, to indicate that
 +@key{Mouse-1} should also follow the link, you should specify a
 +@code{follow-link} condition either as a text property or as a key
 +binding:
 +
 +@table @asis
 +@item @code{follow-link} property
 +If the clickable text has a non-@code{nil} @code{follow-link} text or overlay
 +property, that specifies the condition.
 +
 +@item @code{follow-link} event
 +If there is a binding for the @code{follow-link} event, either on the
 +clickable text or in the local keymap, the binding is the condition.
 +@end table
 +
 +  Regardless of how you set the @code{follow-link} condition, its
 +value is used as follows to determine whether the given position is
 +inside a link, and (if so) to compute an @dfn{action code} saying how
 +@key{Mouse-1} should handle the link.
 +
 +@table @asis
 +@item @code{mouse-face}
 +If the condition is @code{mouse-face}, a position is inside a link if
 +there is a non-@code{nil} @code{mouse-face} property at that position.
 +The action code is always @code{t}.
 +
 +For example, here is how Info mode handles @key{Mouse-1}:
 +
 +@smallexample
 +(define-key Info-mode-map [follow-link] 'mouse-face)
 +@end smallexample
 +
 +@item a function
 +If the condition is a valid function, @var{func}, then a position
 +@var{pos} is inside a link if @code{(@var{func} @var{pos})} evaluates
 +to non-@code{nil}.  The value returned by @var{func} serves as the
 +action code.
 +
 +For example, here is how pcvs enables @key{Mouse-1} to follow links on
 +file names only:
 +
 +@smallexample
 +(define-key map [follow-link]
 +  (lambda (pos)
 +    (eq (get-char-property pos 'face) 'cvs-filename-face)))
 +@end smallexample
 +
 +@item anything else
 +If the condition value is anything else, then the position is inside a
 +link and the condition itself is the action code.  Clearly you should
 +only specify this kind of condition on the text that constitutes a
 +link.
 +@end table
 +
 +@noindent
 +The action code tells @key{Mouse-1} how to follow the link:
 +
 +@table @asis
 +@item a string or vector
 +If the action code is a string or vector, the @key{Mouse-1} event is
 +translated into the first element of the string or vector; i.e., the
 +action of the @key{Mouse-1} click is the local or global binding of
 +that character or symbol.  Thus, if the action code is @code{"foo"},
 +@key{Mouse-1} translates into @kbd{f}.  If it is @code{[foo]},
 +@key{Mouse-1} translates into @key{foo}.
 +
 +@item anything else
 +For any other non-@code{nil} action code, the @code{mouse-1} event is
 +translated into a @code{mouse-2} event at the same position.
 +@end table
 +
 +  To define @key{Mouse-1} to activate a button defined with
 +@code{define-button-type}, give the button a @code{follow-link}
 +property with a value as specified above to determine how to follow
 +the link.  For example, here is how Help mode handles @key{Mouse-1}:
 +
 +@smallexample
 +(define-button-type 'help-xref
 +  'follow-link t
 +  'action #'help-button-action)
 +@end smallexample
 +
 +  To define @key{Mouse-1} on a widget defined with
 +@code{define-widget}, give the widget a @code{:follow-link} property
 +with a value as specified above to determine how to follow the link.
 +
 +For example, here is how the @code{link} widget specifies that
 +a @key{Mouse-1} click shall be translated to @key{RET}:
 +
 +@smallexample
 +(define-widget 'link 'item
 +  "An embedded link."
 +  :button-prefix 'widget-link-prefix
 +  :button-suffix 'widget-link-suffix
 +  :follow-link "\C-m"
 +  :help-echo "Follow the link."
 +  :format "%[%t%]")
 +@end smallexample
 +
 +@defun mouse-on-link-p pos
 +This function returns non-@code{nil} if position @var{pos} in the
 +current buffer is on a link.  @var{pos} can also be a mouse event
 +location, as returned by @code{event-start} (@pxref{Accessing Events}).
 +@end defun
 +
 +@node Fields
 +@subsection Defining and Using Fields
 +@cindex fields
 +
 +  A field is a range of consecutive characters in the buffer that are
 +identified by having the same value (comparing with @code{eq}) of the
 +@code{field} property (either a text-property or an overlay property).
 +This section describes special functions that are available for
 +operating on fields.
 +
 +  You specify a field with a buffer position, @var{pos}.  We think of
 +each field as containing a range of buffer positions, so the position
 +you specify stands for the field containing that position.
 +
 +  When the characters before and after @var{pos} are part of the same
 +field, there is no doubt which field contains @var{pos}: the one those
 +characters both belong to.  When @var{pos} is at a boundary between
 +fields, which field it belongs to depends on the stickiness of the
 +@code{field} properties of the two surrounding characters (@pxref{Sticky
 +Properties}).  The field whose property would be inherited by text
 +inserted at @var{pos} is the field that contains @var{pos}.
 +
 +  There is an anomalous case where newly inserted text at @var{pos}
 +would not inherit the @code{field} property from either side.  This
 +happens if the previous character's @code{field} property is not
 +rear-sticky, and the following character's @code{field} property is not
 +front-sticky.  In this case, @var{pos} belongs to neither the preceding
 +field nor the following field; the field functions treat it as belonging
 +to an empty field whose beginning and end are both at @var{pos}.
 +
 +  In all of these functions, if @var{pos} is omitted or @code{nil}, the
 +value of point is used by default.  If narrowing is in effect, then
 +@var{pos} should fall within the accessible portion.  @xref{Narrowing}.
 +
 +@defun field-beginning &optional pos escape-from-edge limit
 +This function returns the beginning of the field specified by @var{pos}.
 +
 +If @var{pos} is at the beginning of its field, and
 +@var{escape-from-edge} is non-@code{nil}, then the return value is
 +always the beginning of the preceding field that @emph{ends} at @var{pos},
 +regardless of the stickiness of the @code{field} properties around
 +@var{pos}.
 +
 +If @var{limit} is non-@code{nil}, it is a buffer position; if the
 +beginning of the field is before @var{limit}, then @var{limit} will be
 +returned instead.
 +@end defun
 +
 +@defun field-end &optional pos escape-from-edge limit
 +This function returns the end of the field specified by @var{pos}.
 +
 +If @var{pos} is at the end of its field, and @var{escape-from-edge} is
 +non-@code{nil}, then the return value is always the end of the following
 +field that @emph{begins} at @var{pos}, regardless of the stickiness of
 +the @code{field} properties around @var{pos}.
 +
 +If @var{limit} is non-@code{nil}, it is a buffer position; if the end
 +of the field is after @var{limit}, then @var{limit} will be returned
 +instead.
 +@end defun
 +
 +@defun field-string &optional pos
 +This function returns the contents of the field specified by @var{pos},
 +as a string.
 +@end defun
 +
 +@defun field-string-no-properties &optional pos
 +This function returns the contents of the field specified by @var{pos},
 +as a string, discarding text properties.
 +@end defun
 +
 +@defun delete-field &optional pos
 +This function deletes the text of the field specified by @var{pos}.
 +@end defun
 +
 +@defun constrain-to-field new-pos old-pos &optional escape-from-edge only-in-line inhibit-capture-property
 +This function ``constrains'' @var{new-pos} to the field that
 +@var{old-pos} belongs to---in other words, it returns the position
 +closest to @var{new-pos} that is in the same field as @var{old-pos}.
 +
 +If @var{new-pos} is @code{nil}, then @code{constrain-to-field} uses
 +the value of point instead, and moves point to the resulting position
 +as well as returning it.
 +
 +If @var{old-pos} is at the boundary of two fields, then the acceptable
 +final positions depend on the argument @var{escape-from-edge}.  If
 +@var{escape-from-edge} is @code{nil}, then @var{new-pos} must be in
 +the field whose @code{field} property equals what new characters
 +inserted at @var{old-pos} would inherit.  (This depends on the
 +stickiness of the @code{field} property for the characters before and
 +after @var{old-pos}.)  If @var{escape-from-edge} is non-@code{nil},
 +@var{new-pos} can be anywhere in the two adjacent fields.
 +Additionally, if two fields are separated by another field with the
 +special value @code{boundary}, then any point within this special
 +field is also considered to be ``on the boundary.''
 +
 +Commands like @kbd{C-a} with no argumemt, that normally move backward
 +to a specific kind of location and stay there once there, probably
 +should specify @code{nil} for @var{escape-from-edge}.  Other motion
 +commands that check fields should probably pass @code{t}.
 +
 +If the optional argument @var{only-in-line} is non-@code{nil}, and
 +constraining @var{new-pos} in the usual way would move it to a different
 +line, @var{new-pos} is returned unconstrained.  This used in commands
 +that move by line, such as @code{next-line} and
 +@code{beginning-of-line}, so that they respect field boundaries only in
 +the case where they can still move to the right line.
 +
 +If the optional argument @var{inhibit-capture-property} is
 +non-@code{nil}, and @var{old-pos} has a non-@code{nil} property of that
 +name, then any field boundaries are ignored.
 +
 +You can cause @code{constrain-to-field} to ignore all field boundaries
 +(and so never constrain anything) by binding the variable
 +@code{inhibit-field-text-motion} to a non-@code{nil} value.
 +@end defun
 +
 +@node Not Intervals
 +@subsection Why Text Properties are not Intervals
 +@cindex intervals
 +
 +  Some editors that support adding attributes to text in the buffer do
 +so by letting the user specify ``intervals'' within the text, and adding
 +the properties to the intervals.  Those editors permit the user or the
 +programmer to determine where individual intervals start and end.  We
 +deliberately provided a different sort of interface in Emacs Lisp to
 +avoid certain paradoxical behavior associated with text modification.
 +
 +  If the actual subdivision into intervals is meaningful, that means you
 +can distinguish between a buffer that is just one interval with a
 +certain property, and a buffer containing the same text subdivided into
 +two intervals, both of which have that property.
 +
 +  Suppose you take the buffer with just one interval and kill part of
 +the text.  The text remaining in the buffer is one interval, and the
 +copy in the kill ring (and the undo list) becomes a separate interval.
 +Then if you yank back the killed text, you get two intervals with the
 +same properties.  Thus, editing does not preserve the distinction
 +between one interval and two.
 +
 +  Suppose we ``fix'' this problem by coalescing the two intervals when
 +the text is inserted.  That works fine if the buffer originally was a
 +single interval.  But suppose instead that we have two adjacent
 +intervals with the same properties, and we kill the text of one interval
 +and yank it back.  The same interval-coalescence feature that rescues
 +the other case causes trouble in this one: after yanking, we have just
 +one interval.  One again, editing does not preserve the distinction
 +between one interval and two.
 +
 +  Insertion of text at the border between intervals also raises
 +questions that have no satisfactory answer.
 +
 +  However, it is easy to arrange for editing to behave consistently for
 +questions of the form, ``What are the properties of this character?''
 +So we have decided these are the only questions that make sense; we have
 +not implemented asking questions about where intervals start or end.
 +
 +  In practice, you can usually use the text property search functions in
 +place of explicit interval boundaries.  You can think of them as finding
 +the boundaries of intervals, assuming that intervals are always
 +coalesced whenever possible.  @xref{Property Search}.
 +
 +  Emacs also provides explicit intervals as a presentation feature; see
 +@ref{Overlays}.
 +
 +@node Substitution
 +@section Substituting for a Character Code
 +
 +  The following functions replace characters within a specified region
 +based on their character codes.
 +
 +@defun subst-char-in-region start end old-char new-char &optional noundo
 +@cindex replace characters
 +This function replaces all occurrences of the character @var{old-char}
 +with the character @var{new-char} in the region of the current buffer
 +defined by @var{start} and @var{end}.
 +
 +@cindex undo avoidance
 +If @var{noundo} is non-@code{nil}, then @code{subst-char-in-region} does
 +not record the change for undo and does not mark the buffer as modified.
 +This was useful for controlling the old selective display feature
 +(@pxref{Selective Display}).
 +
 +@code{subst-char-in-region} does not move point and returns
 +@code{nil}.
 +
 +@example
 +@group
 +---------- Buffer: foo ----------
 +This is the contents of the buffer before.
 +---------- Buffer: foo ----------
 +@end group
 +
 +@group
 +(subst-char-in-region 1 20 ?i ?X)
 +     @result{} nil
 +
 +---------- Buffer: foo ----------
 +ThXs Xs the contents of the buffer before.
 +---------- Buffer: foo ----------
 +@end group
 +@end example
 +@end defun
 +
 +@defun translate-region start end table
 +This function applies a translation table to the characters in the
 +buffer between positions @var{start} and @var{end}.
 +
 +The translation table @var{table} is a string or a char-table;
 +@code{(aref @var{table} @var{ochar})} gives the translated character
 +corresponding to @var{ochar}.  If @var{table} is a string, any
 +characters with codes larger than the length of @var{table} are not
 +altered by the translation.
 +
 +The return value of @code{translate-region} is the number of
 +characters that were actually changed by the translation.  This does
 +not count characters that were mapped into themselves in the
 +translation table.
 +@end defun
 +
 +@node Registers
 +@section Registers
 +@cindex registers
 +
 +  A register is a sort of variable used in Emacs editing that can hold a
 +variety of different kinds of values.  Each register is named by a
 +single character.  All @acronym{ASCII} characters and their meta variants
 +(but with the exception of @kbd{C-g}) can be used to name registers.
 +Thus, there are 255 possible registers.  A register is designated in
 +Emacs Lisp by the character that is its name.
 +
 +@defvar register-alist
 +This variable is an alist of elements of the form @code{(@var{name} .
 +@var{contents})}.  Normally, there is one element for each Emacs
 +register that has been used.
 +
 +The object @var{name} is a character (an integer) identifying the
 +register.
 +@end defvar
 +
 +  The @var{contents} of a register can have several possible types:
 +
 +@table @asis
 +@item a number
 +A number stands for itself.  If @code{insert-register} finds a number
 +in the register, it converts the number to decimal.
 +
 +@item a marker
 +A marker represents a buffer position to jump to.
 +
 +@item a string
 +A string is text saved in the register.
 +
 +@item a rectangle
 +A rectangle is represented by a list of strings.
 +
 +@item @code{(@var{window-configuration} @var{position})}
 +This represents a window configuration to restore in one frame, and a
 +position to jump to in the current buffer.
 +
 +@item @code{(@var{frame-configuration} @var{position})}
 +This represents a frame configuration to restore, and a position
 +to jump to in the current buffer.
 +
 +@item (file @var{filename})
 +This represents a file to visit; jumping to this value visits file
 +@var{filename}.
 +
 +@item (file-query @var{filename} @var{position})
 +This represents a file to visit and a position in it; jumping to this
 +value visits file @var{filename} and goes to buffer position
 +@var{position}.  Restoring this type of position asks the user for
 +confirmation first.
 +@end table
 +
 +  The functions in this section return unpredictable values unless
 +otherwise stated.
 +
 +@defun get-register reg
 +This function returns the contents of the register
 +@var{reg}, or @code{nil} if it has no contents.
 +@end defun
 +
 +@defun set-register reg value
 +This function sets the contents of register @var{reg} to @var{value}.
 +A register can be set to any value, but the other register functions
 +expect only certain data types.  The return value is @var{value}.
 +@end defun
 +
 +@deffn Command view-register reg
 +This command displays what is contained in register @var{reg}.
 +@end deffn
 +
 +@ignore
 +@deffn Command point-to-register reg
 +This command stores both the current location of point and the current
 +buffer in register @var{reg} as a marker.
 +@end deffn
 +
 +@deffn Command jump-to-register reg
 +@deffnx Command register-to-point reg
 +@comment !!SourceFile register.el
 +This command restores the status recorded in register @var{reg}.
 +
 +If @var{reg} contains a marker, it moves point to the position stored in
 +the marker.  Since both the buffer and the location within the buffer
 +are stored by the @code{point-to-register} function, this command can
 +switch you to another buffer.
 +
 +If @var{reg} contains a window configuration or a frame configuration.
 +@code{jump-to-register} restores that configuration.
 +@end deffn
 +@end ignore
 +
 +@deffn Command insert-register reg &optional beforep
 +This command inserts contents of register @var{reg} into the current
 +buffer.
 +
 +Normally, this command puts point before the inserted text, and the
 +mark after it.  However, if the optional second argument @var{beforep}
 +is non-@code{nil}, it puts the mark before and point after.
 +You can pass a non-@code{nil} second argument @var{beforep} to this
 +function interactively by supplying any prefix argument.
 +
 +If the register contains a rectangle, then the rectangle is inserted
 +with its upper left corner at point.  This means that text is inserted
 +in the current line and underneath it on successive lines.
 +
 +If the register contains something other than saved text (a string) or
 +a rectangle (a list), currently useless things happen.  This may be
 +changed in the future.
 +@end deffn
 +
 +@ignore
 +@deffn Command copy-to-register reg start end &optional delete-flag
 +This command copies the region from @var{start} to @var{end} into
 +register @var{reg}.  If @var{delete-flag} is non-@code{nil}, it deletes
 +the region from the buffer after copying it into the register.
 +@end deffn
 +
 +@deffn Command prepend-to-register reg start end &optional delete-flag
 +This command prepends the region from @var{start} to @var{end} into
 +register @var{reg}.  If @var{delete-flag} is non-@code{nil}, it deletes
 +the region from the buffer after copying it to the register.
 +@end deffn
 +
 +@deffn Command append-to-register reg start end &optional delete-flag
 +This command appends the region from @var{start} to @var{end} to the
 +text already in register @var{reg}.  If @var{delete-flag} is
 +non-@code{nil}, it deletes the region from the buffer after copying it
 +to the register.
 +@end deffn
 +
 +@deffn Command copy-rectangle-to-register reg start end &optional delete-flag
 +This command copies a rectangular region from @var{start} to @var{end}
 +into register @var{reg}.  If @var{delete-flag} is non-@code{nil}, it
 +deletes the region from the buffer after copying it to the register.
 +@end deffn
 +
 +@deffn Command window-configuration-to-register reg
 +This function stores the window configuration of the selected frame in
 +register @var{reg}.
 +@end deffn
 +
 +@deffn Command frame-configuration-to-register reg
 +This function stores the current frame configuration in register
 +@var{reg}.
 +@end deffn
 +@end ignore
 +
 +@node Transposition
 +@section Transposition of Text
 +
 +  This subroutine is used by the transposition commands.
 +
 +@defun transpose-regions start1 end1 start2 end2 &optional leave-markers
 +This function exchanges two nonoverlapping portions of the buffer.
 +Arguments @var{start1} and @var{end1} specify the bounds of one portion
 +and arguments @var{start2} and @var{end2} specify the bounds of the
 +other portion.
 +
 +Normally, @code{transpose-regions} relocates markers with the transposed
 +text; a marker previously positioned within one of the two transposed
 +portions moves along with that portion, thus remaining between the same
 +two characters in their new position.  However, if @var{leave-markers}
 +is non-@code{nil}, @code{transpose-regions} does not do this---it leaves
 +all markers unrelocated.
 +@end defun
 +
 +@node Base 64
 +@section Base 64 Encoding
 +@cindex base 64 encoding
 +
 +  Base 64 code is used in email to encode a sequence of 8-bit bytes as
 +a longer sequence of @acronym{ASCII} graphic characters.  It is defined in
 +Internet RFC@footnote{
 +An RFC, an acronym for @dfn{Request for Comments}, is a numbered
 +Internet informational document describing a standard.  RFCs are
 +usually written by technical experts acting on their own initiative,
 +and are traditionally written in a pragmatic, experience-driven
 +manner.
 +}2045.  This section describes the functions for
 +converting to and from this code.
 +
 +@defun base64-encode-region beg end &optional no-line-break
 +This function converts the region from @var{beg} to @var{end} into base
 +64 code.  It returns the length of the encoded text.  An error is
 +signaled if a character in the region is multibyte, i.e.@: in a
 +multibyte buffer the region must contain only characters from the
 +charsets @code{ascii}, @code{eight-bit-control} and
 +@code{eight-bit-graphic}.
 +
 +Normally, this function inserts newline characters into the encoded
 +text, to avoid overlong lines.  However, if the optional argument
 +@var{no-line-break} is non-@code{nil}, these newlines are not added, so
 +the output is just one long line.
 +@end defun
 +
 +@defun base64-encode-string string &optional no-line-break
 +This function converts the string @var{string} into base 64 code.  It
 +returns a string containing the encoded text.  As for
 +@code{base64-encode-region}, an error is signaled if a character in the
 +string is multibyte.
 +
 +Normally, this function inserts newline characters into the encoded
 +text, to avoid overlong lines.  However, if the optional argument
 +@var{no-line-break} is non-@code{nil}, these newlines are not added, so
 +the result string is just one long line.
 +@end defun
 +
 +@defun base64-decode-region beg end
 +This function converts the region from @var{beg} to @var{end} from base
 +64 code into the corresponding decoded text.  It returns the length of
 +the decoded text.
 +
 +The decoding functions ignore newline characters in the encoded text.
 +@end defun
 +
 +@defun base64-decode-string string
 +This function converts the string @var{string} from base 64 code into
 +the corresponding decoded text.  It returns a unibyte string containing the
 +decoded text.
 +
 +The decoding functions ignore newline characters in the encoded text.
 +@end defun
 +
 +@node MD5 Checksum
 +@section MD5 Checksum
 +@cindex MD5 checksum
 +@cindex message digest computation
 +
 +  MD5 cryptographic checksums, or @dfn{message digests}, are 128-bit
 +``fingerprints'' of a document or program.  They are used to verify
 +that you have an exact and unaltered copy of the data.  The algorithm
 +to calculate the MD5 message digest is defined in Internet
 +RFC@footnote{
 +For an explanation of what is an RFC, see the footnote in @ref{Base
 +64}.
 +}1321.  This section describes the Emacs facilities for computing
 +message digests.
 +
 +@defun md5 object &optional start end coding-system noerror
 +This function returns the MD5 message digest of @var{object}, which
 +should be a buffer or a string.
 +
 +The two optional arguments @var{start} and @var{end} are character
 +positions specifying the portion of @var{object} to compute the
 +message digest for.  If they are @code{nil} or omitted, the digest is
 +computed for the whole of @var{object}.
 +
 +The function @code{md5} does not compute the message digest directly
 +from the internal Emacs representation of the text (@pxref{Text
 +Representations}).  Instead, it encodes the text using a coding
 +system, and computes the message digest from the encoded text.  The
 +optional fourth argument @var{coding-system} specifies which coding
 +system to use for encoding the text.  It should be the same coding
 +system that you used to read the text, or that you used or will use
 +when saving or sending the text.  @xref{Coding Systems}, for more
 +information about coding systems.
 +
 +If @var{coding-system} is @code{nil} or omitted, the default depends
 +on @var{object}.  If @var{object} is a buffer, the default for
 +@var{coding-system} is whatever coding system would be chosen by
 +default for writing this text into a file.  If @var{object} is a
 +string, the user's most preferred coding system (@pxref{Recognize
 +Coding, prefer-coding-system, the description of
 +@code{prefer-coding-system}, emacs, GNU Emacs Manual}) is used.
 +
 +Normally, @code{md5} signals an error if the text can't be encoded
 +using the specified or chosen coding system.  However, if
 +@var{noerror} is non-@code{nil}, it silently uses @code{raw-text}
 +coding instead.
 +@end defun
 +
 +@node Atomic Changes
 +@section Atomic Change Groups
 +@cindex atomic changes
 +
 +  In data base terminology, an @dfn{atomic} change is an indivisible
 +change---it can succeed entirely or it can fail entirely, but it
 +cannot partly succeed.  A Lisp program can make a series of changes to
 +one or several buffers as an @dfn{atomic change group}, meaning that
 +either the entire series of changes will be installed in their buffers
 +or, in case of an error, none of them will be.
 +
 +  To do this for one buffer, the one already current, simply write a
 +call to @code{atomic-change-group} around the code that makes the
 +changes, like this:
 +
 +@example
 +(atomic-change-group
 +  (insert foo)
 +  (delete-region x y))
 +@end example
 +
 +@noindent
 +If an error (or other nonlocal exit) occurs inside the body of
 +@code{atomic-change-group}, it unmakes all the changes in that buffer
 +that were during the execution of the body.  This kind of change group
 +has no effect on any other buffers---any such changes remain.
 +
 +  If you need something more sophisticated, such as to make changes in
 +various buffers constitute one atomic group, you must directly call
 +lower-level functions that @code{atomic-change-group} uses.
 +
 +@defun prepare-change-group &optional buffer
 +This function sets up a change group for buffer @var{buffer}, which
 +defaults to the current buffer.  It returns a ``handle'' that
 +represents the change group.  You must use this handle to activate the
 +change group and subsequently to finish it.
 +@end defun
 +
 +  To use the change group, you must @dfn{activate} it.  You must do
 +this before making any changes in the text of @var{buffer}.
 +
 +@defun activate-change-group handle
 +This function activates the change group that @var{handle} designates.
 +@end defun
 +
 +  After you activate the change group, any changes you make in that
 +buffer become part of it.  Once you have made all the desired changes
 +in the buffer, you must @dfn{finish} the change group.  There are two
 +ways to do this: you can either accept (and finalize) all the changes,
 +or cancel them all.
 +
 +@defun accept-change-group handle
 +This function accepts all the changes in the change group specified by
 +@var{handle}, making them final.
 +@end defun
 +
 +@defun cancel-change-group handle
 +This function cancels and undoes all the changes in the change group
 +specified by @var{handle}.
 +@end defun
 +
 +  Your code should use @code{unwind-protect} to make sure the group is
 +always finished.  The call to @code{activate-change-group} should be
 +inside the @code{unwind-protect}, in case the user types @kbd{C-g}
 +just after it runs.  (This is one reason why
 +@code{prepare-change-group} and @code{activate-change-group} are
 +separate functions, because normally you would call
 +@code{prepare-change-group} before the start of that
 +@code{unwind-protect}.)  Once you finish the group, don't use the
 +handle again---in particular, don't try to finish the same group
 +twice.
 +
 +  To make a multibuffer change group, call @code{prepare-change-group}
 +once for each buffer you want to cover, then use @code{nconc} to
 +combine the returned values, like this:
 +
 +@example
 +(nconc (prepare-change-group buffer-1)
 +       (prepare-change-group buffer-2))
 +@end example
 +
 +You can then activate the multibuffer change group with a single call
 +to @code{activate-change-group}, and finish it with a single call to
 +@code{accept-change-group} or @code{cancel-change-group}.
 +
 +  Nested use of several change groups for the same buffer works as you
 +would expect.  Non-nested use of change groups for the same buffer
 +will get Emacs confused, so don't let it happen; the first change
 +group you start for any given buffer should be the last one finished.
 +
 +@node Change Hooks
 +@section Change Hooks
 +@cindex change hooks
 +@cindex hooks for text changes
 +
 +  These hook variables let you arrange to take notice of all changes in
 +all buffers (or in a particular buffer, if you make them buffer-local).
 +See also @ref{Special Properties}, for how to detect changes to specific
 +parts of the text.
 +
 +  The functions you use in these hooks should save and restore the match
 +data if they do anything that uses regular expressions; otherwise, they
 +will interfere in bizarre ways with the editing operations that call
 +them.
 +
 +@defvar before-change-functions
 +This variable holds a list of functions to call before any buffer
 +modification.  Each function gets two arguments, the beginning and end
 +of the region that is about to change, represented as integers.  The
 +buffer that is about to change is always the current buffer.
 +@end defvar
 +
 +@defvar after-change-functions
 +This variable holds a list of functions to call after any buffer
 +modification.  Each function receives three arguments: the beginning and
 +end of the region just changed, and the length of the text that existed
 +before the change.  All three arguments are integers.  The buffer that's
 +about to change is always the current buffer.
 +
 +The length of the old text is the difference between the buffer positions
 +before and after that text as it was before the change.  As for the
 +changed text, its length is simply the difference between the first two
 +arguments.
 +@end defvar
 +
 +  Output of messages into the @samp{*Messages*} buffer does not
 +call these functions.
 +
 +@defmac combine-after-change-calls body@dots{}
 +The macro executes @var{body} normally, but arranges to call the
 +after-change functions just once for a series of several changes---if
 +that seems safe.
 +
 +If a program makes several text changes in the same area of the buffer,
 +using the macro @code{combine-after-change-calls} around that part of
 +the program can make it run considerably faster when after-change hooks
 +are in use.  When the after-change hooks are ultimately called, the
 +arguments specify a portion of the buffer including all of the changes
 +made within the @code{combine-after-change-calls} body.
 +
 +@strong{Warning:} You must not alter the values of
 +@code{after-change-functions} within
 +the body of a @code{combine-after-change-calls} form.
 +
 +@strong{Warning:} if the changes you combine occur in widely scattered
 +parts of the buffer, this will still work, but it is not advisable,
 +because it may lead to inefficient behavior for some change hook
 +functions.
 +@end defmac
 +
 +@defvar first-change-hook
 +This variable is a normal hook that is run whenever a buffer is changed
 +that was previously in the unmodified state.
 +@end defvar
 +
 +@defvar inhibit-modification-hooks
 +If this variable is non-@code{nil}, all of the change hooks are
 +disabled; none of them run.  This affects all the hook variables
 +described above in this section, as well as the hooks attached to
 +certain special text properties (@pxref{Special Properties}) and overlay
 +properties (@pxref{Overlay Properties}).
 +
 +Also, this variable is bound to non-@code{nil} while running those
 +same hook variables, so that by default modifying the buffer from
 +a modification hook does not cause other modification hooks to be run.
 +If you do want modification hooks to be run in a particular piece of
 +code that is itself run from a modification hook, then rebind locally
 +@code{inhibit-modification-hooks} to @code{nil}.
 +@end defvar
 +
 +@ignore
 +   arch-tag: 3721e738-a1cb-4085-bc1a-6cb8d8e1d32b
 +@end ignore
diff --cc lisp/ChangeLog
index 10164e2e8d5737279bcd7835e9746a3cae34a6a0,33ed2702a04c2fc47803e4f469b05efb810f5c41..3a68b694a34b644e363852e26826d42d095cc38d
        * progmodes/etags.el (select-tags-table): Disable undo in the
        `*Tags Table List*' buffer.
  
+ 2007-10-13  Eli Zaretskii  <eliz@gnu.org>
+       * dired.el (dired-warn-writable): New face.
+       (dired-warn-writable-face): New variable.
+       (dired-font-lock-keywords): Use dired-warn-writable-face, instead
+       of dired-warning-face, for group- and world-writable files.
++2007-10-13  Richard Stallman  <rms@gnu.org>
++
++      * files.el (directory-abbrev-alist): Doc fix.
++
++2007-10-13  Jari Aalto  <jari.aalto@cante.net>
++
++      * comint.el (comint-password-prompt-regexp): Add 'LDAP'.
++
++2007-10-12  Martin Rudalics  <rudalics@gmx.at>
++
++      * frame.el (set-frame-configuration): Assign name parameter only
++      if it has been set explicitly before.
++
++2007-10-11  Tom Tromey  <tromey@redhat.com>
++
++      * progmodes/gdb-ui.el (gdb-info-stack-custom): Ensure current
++      frame is visible.
++
++2007-10-10  Richard Stallman  <rms@gnu.org>
++
++      * emacs-lisp/debug.el (debugger-setup-buffer): Disable undo
++      in *Backtrace*.
++
++      * faces.el (face-font-selection-order): Doc fix.
++
++      * loadhist.el (unload-feature): Doc fix.
++
  2007-10-13  Glenn Morris  <rgm@gnu.org>
  
        * progmodes/octave-mod.el (octave-looking-at-kw): Add doc string.
diff --cc lisp/comint.el
Simple merge
diff --cc lisp/dired.el
Simple merge
Simple merge
diff --cc lisp/faces.el
Simple merge
diff --cc lisp/files.el
Simple merge
diff --cc lisp/frame.el
index 30573db9e66cf18b10e901429f5b0a6a81204eb9,cbdfa45d4f7775f5baff6c82c282403d187ac778..1c11829475bd81e08920dcc74b76c675bbb0f412
@@@ -941,28 -797,36 +941,35 @@@ is given and non-nil, the unwanted fram
              (list 'frame-configuration-p configuration)))
    (let ((config-alist (cdr configuration))
        frames-to-delete)
 -    (mapcar (function
 -           (lambda (frame)
 -             (let ((parameters (assq frame config-alist)))
 -               (if parameters
 -                   (progn
 -                     (modify-frame-parameters
 -                      frame
 -                      ;; Since we can't set a frame's minibuffer status,
 -                      ;; we might as well omit the parameter altogether.
 -                      (let* ((parms (nth 1 parameters))
 -                             (mini (assq 'minibuffer parms))
 -                             (name (assq 'name parms))
 -                             (explicit-name (cdr (assq 'explicit-name parms))))
 -                        (when mini (setq parms (delq mini parms)))
 -                        ;; Leave name in iff it was set explicitly.
 -                        ;; This should fix the behavior reported in
 -                        ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
 -                        (when (and name (not explicit-name))
 -                          (setq parms (delq name parms)))
 -                        parms))
 -                     (set-window-configuration (nth 2 parameters)))
 -                 (setq frames-to-delete (cons frame frames-to-delete))))))
 -          (frame-list))
 -    (if nodelete
 -      ;; Note: making frames invisible here was tried
 -      ;; but led to some strange behavior--each time the frame
 -      ;; was made visible again, the window manager asked afresh
 -      ;; for where to put it.
 -      (mapcar 'iconify-frame frames-to-delete)
 -      (mapcar 'delete-frame frames-to-delete))))
 +    (dolist (frame (frame-list))
 +      (let ((parameters (assq frame config-alist)))
 +        (if parameters
 +            (progn
 +              (modify-frame-parameters
 +               frame
 +               ;; Since we can't set a frame's minibuffer status,
 +               ;; we might as well omit the parameter altogether.
 +               (let* ((parms (nth 1 parameters))
-                       (mini (assq 'minibuffer parms)))
-                  (if mini (setq parms (delq mini parms)))
++                    (mini (assq 'minibuffer parms))
++                    (name (assq 'name parms))
++                    (explicit-name (cdr (assq 'explicit-name parms))))
++               (when mini (setq parms (delq mini parms)))
++               ;; Leave name in iff it was set explicitly.
++               ;; This should fix the behavior reported in
++               ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
++               (when (and name (not explicit-name))
++                 (setq parms (delq name parms)))
 +                 parms))
 +              (set-window-configuration (nth 2 parameters)))
 +          (setq frames-to-delete (cons frame frames-to-delete)))))
 +    (mapc (if nodelete
 +              ;; Note: making frames invisible here was tried
 +              ;; but led to some strange behavior--each time the frame
 +              ;; was made visible again, the window manager asked afresh
 +              ;; for where to put it.
 +              'iconify-frame
 +            'delete-frame)
 +          frames-to-delete)))
  \f
  ;;;; Convenience functions for accessing and interactively changing
  ;;;; frame parameters.
index 0e4362bce31891d92136816708abc6609cd9f0db,146d224435b93484372c834d2cada94f8ff92f32..8f3979debcf83644de6eccd78f030d1adbc681ca
        * url-auth.el (url-basic-auth): Set path to "/" when URL has an
          empty string filename.
  
+ 2007-10-09  Richard Stallman  <rms@gnu.org>
+       * url-parse.el (url-type, url-user, url-password, url-host)
+       (url-port, url-filename, url-target, url-attributes)
+       (url-fullness, url-set-type, url-set-user, url-set-password)
+       (url-set-host, url-set-port, url-set-filename, url-set-target)
+       (url-set-attributes, url-set-full): Change macros to defuns.
 +2007-09-26  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * url-dav.el (top):
 +      * url-vars.el (top): Use `mapc' rather than `mapcar'.
 +
  2007-09-22  Diane Murray  <disumu@x3y2z1.net>
  
        * url-misc.el (url-generic-emulator-loader): Send the port as a
Simple merge
index df4de29a619e367acf4d777d0ec79e79752ec6f8,b7efd75b4b65451909e1373acb714502536ec124..bebdbd9e04bf1690f4e9ae6a9c6b649f441cdd59
@@@ -135,9 -135,9 +135,10 @@@ path components followed by `..' are re
                  sepchar (substring (url-filename urlobj) (match-beginning 0) (match-end 0)))
          (setq file (url-filename urlobj)))
        (setq file (url-expander-remove-relative-links
-                   (concat (url-basepath (url-filename defobj)) file)))
+                   (expand-file-name file
+                                     (url-file-directory (url-filename defobj)))))
 -      (url-set-filename urlobj (if query (concat file sepchar query) file))))))
 +      (setf (url-filename urlobj)
 +              (if query (concat file sepchar query) file))))))
  
  (provide 'url-expand)
  
Simple merge
diff --cc src/frame.c
Simple merge
diff --cc src/macfns.c
Simple merge
diff --cc src/w32fns.c
Simple merge
diff --cc src/w32term.c
Simple merge
diff --cc src/xdisp.c
Simple merge
diff --cc src/xfns.c
Simple merge