summaryrefslogtreecommitdiff
path: root/doc/lispref
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2012-04-27 11:10:38 +0800
committerChong Yidong <cyd@gnu.org>2012-04-27 11:10:38 +0800
commita8e7d6d783219972c08fd49a3a2afaf26eb139c2 (patch)
tree5e86d23d9285389791dc8321d8a8a2ece2247bea /doc/lispref
parentb360839071ef6c7a9e917fe57a4aaeb39138e8c0 (diff)
parentc5bb756916baa63cc663d68d4c24e5ad33a764e8 (diff)
downloademacs-a8e7d6d783219972c08fd49a3a2afaf26eb139c2.tar.gz
Merge changes from emacs-24 branch
Diffstat (limited to 'doc/lispref')
-rw-r--r--doc/lispref/ChangeLog51
-rw-r--r--doc/lispref/book-spine.texi4
-rw-r--r--doc/lispref/buffers.texi4
-rw-r--r--doc/lispref/commands.texi8
-rw-r--r--doc/lispref/compile.texi2
-rw-r--r--doc/lispref/control.texi4
-rw-r--r--doc/lispref/customize.texi4
-rw-r--r--doc/lispref/display.texi18
-rw-r--r--doc/lispref/elisp.texi49
-rw-r--r--doc/lispref/eval.texi18
-rw-r--r--doc/lispref/files.texi10
-rw-r--r--doc/lispref/frames.texi14
-rw-r--r--doc/lispref/functions.texi27
-rw-r--r--doc/lispref/hash.texi8
-rw-r--r--doc/lispref/help.texi2
-rw-r--r--doc/lispref/intro.texi4
-rw-r--r--doc/lispref/keymaps.texi42
-rw-r--r--doc/lispref/lists.texi8
-rw-r--r--doc/lispref/macros.texi2
-rw-r--r--doc/lispref/minibuf.texi17
-rw-r--r--doc/lispref/modes.texi30
-rw-r--r--doc/lispref/numbers.texi2
-rw-r--r--doc/lispref/objects.texi4
-rw-r--r--doc/lispref/streams.texi4
-rw-r--r--doc/lispref/symbols.texi2
-rw-r--r--doc/lispref/syntax.texi4
-rw-r--r--doc/lispref/text.texi14
-rw-r--r--doc/lispref/tips.texi14
-rw-r--r--doc/lispref/variables.texi2
-rw-r--r--doc/lispref/vol1.texi48
-rw-r--r--doc/lispref/vol2.texi44
-rw-r--r--doc/lispref/windows.texi256
32 files changed, 419 insertions, 301 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 5333e3af3df..9c323d7937f 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,54 @@
+2012-04-27 Glenn Morris <rgm@gnu.org>
+
+ * elisp.texi, vol1.texi, vol2.texi: Some fixes for detailed menu.
+ * modes.texi (Major Modes, Auto-Indentation):
+ * buffers.texi (Buffers): Some fixes for menu descriptions.
+
+2012-04-27 Stefan Monnier <monnier@iro.umontreal.ca>
+ * functions.texi (Simple Lambda, Argument List):
+ * eval.texi (Function Indirection): Avoid deprecated form.
+
+2012-04-27 Glenn Morris <rgm@gnu.org>
+
+ * book-spine.texi, elisp.texi, vol1.texi, vol2.texi:
+ Add "et al." to authors.
+
+ * buffers.texi, commands.texi, compile.texi, control.texi:
+ * customize.texi, display.texi, eval.texi, files.texi, frames.texi:
+ * hash.texi, help.texi, intro.texi, keymaps.texi, lists.texi:
+ * modes.texi, numbers.texi, objects.texi, streams.texi:
+ * symbols.texi, syntax.texi, text.texi, tips.texi, variables.texi:
+ Use Texinfo recommended convention for quotes+punctuation.
+
+2012-04-27 Chong Yidong <cyd@gnu.org>
+
+ * keymaps.texi (Scanning Keymaps): Fix description of NO-REMAP arg
+ to where-is-internal (Bug#10872).
+
+2012-04-27 Glenn Morris <rgm@gnu.org>
+
+ * macros.texi (Indenting Macros): Fix typo.
+
+ * windows.texi (Basic Windows, Windows and Frames, Window Sizes)
+ (Resizing Windows, Deleting Windows, Selecting Windows)
+ (Choosing Window Options, Horizontal Scrolling)
+ (Cyclic Window Ordering, Window History, Dedicated Windows)
+ (Quitting Windows, Window Configurations, Textual Scrolling):
+ (Coordinates and Windows, Window Configurations)
+ (Window Parameters, Window Hooks): Copyedits.
+ (Splitting Windows, Deleting Windows):
+ Fix ignore-window-parameters logic.
+ (Selecting Windows, Choosing Window Options): Markup fixes.
+ (Window Start and End): Remove pointless example.
+ Remove cross-reference to deleted count-lines content.
+ (Textual Scrolling): Mention recenter-redisplay, recenter-top-bottom,
+ and recenter-positions. Remove recenter example.
+
+ * elisp.texi, vol1.texi, vol2.texi: Bump VERSION and DATE.
+
+ * minibuf.texi (Intro to Minibuffers):
+ Tweak discussion of resizing minibuffer window.
+
2012-04-26 Glenn Morris <rgm@gnu.org>
* elisp-covers.texi, front-cover-1.texi: Remove files.
diff --git a/doc/lispref/book-spine.texi b/doc/lispref/book-spine.texi
index 270def6d8b3..721416316d2 100644
--- a/doc/lispref/book-spine.texi
+++ b/doc/lispref/book-spine.texi
@@ -20,8 +20,8 @@
@center by
@center Bil Lewis,
@center Dan LaLiberte,
-@center and the
-@center GNU Manual Group
+@center the GNU Manual Group,
+@center et al.
@sp 5
@center Free Software Foundation
@bye
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 844b6423a52..165faf32b09 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -23,7 +23,7 @@ not be displayed in any windows.
* 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''.
+ "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.
@@ -481,7 +481,7 @@ correspond to the new file name, unless the new name is already in
use.
If @var{filename} is @code{nil} or the empty string, that stands for
-``no visited file.'' In this case, @code{set-visited-file-name} marks
+``no visited file''. In this case, @code{set-visited-file-name} marks
the buffer as having no visited file, without changing the buffer's
modified flag.
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index bf26d83b7bf..dea838462bb 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -718,7 +718,7 @@ We use @code{"p"} because the numeric prefix argument is never
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.''
+because it allows callers to say ``treat this call as interactive''.
But you can also do the job by testing @code{called-interactively-p}.
@defun called-interactively-p kind
@@ -2325,7 +2325,7 @@ 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},
+``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
@@ -2705,7 +2705,7 @@ individual events, which you can put in @code{unread-command-events}.
@defvar unread-command-char
This variable holds a character to be read as command input.
-A value of -1 means ``empty.''
+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
@@ -3195,7 +3195,7 @@ 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
+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.)
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index ead75942b24..8cebd9fade6 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -274,7 +274,7 @@ reloading each file after recompiling it.
use a special Lisp reader construct, @samp{#@@@var{count}}. This
construct skips the next @var{count} characters. It also uses the
@samp{#$} construct, which stands for ``the name of this file, as a
-string.'' It is usually best not to use these constructs in Lisp source
+string''. It is usually best not to use these constructs in Lisp source
files, since they are not designed to be clear to humans reading the
file.
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index aa24291d892..d6dee7ecf91 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -220,7 +220,7 @@ non-@code{nil}, the clause ``succeeds''; then @code{cond} evaluates its
@var{body-forms}, and the value of the last of @var{body-forms} becomes
the value of the @code{cond}. The remaining clauses are ignored.
-If the value of @var{condition} is @code{nil}, the clause ``fails,'' so
+If the value of @var{condition} is @code{nil}, the clause ``fails'', so
the @code{cond} moves on to the following clause, trying its
@var{condition}.
@@ -622,7 +622,7 @@ error is signaled with data @code{(@var{tag} @var{value})}.
@subsection Examples of @code{catch} and @code{throw}
One way to use @code{catch} and @code{throw} is to exit from a doubly
-nested loop. (In most languages, this would be done with a ``goto.'')
+nested loop. (In most languages, this would be done with a ``goto''.)
Here we compute @code{(foo @var{i} @var{j})} for @var{i} and @var{j}
varying from 0 to 9:
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 04b3cdd11f0..c8e60fd84f4 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -817,7 +817,7 @@ For example,
@noindent
describes a variable for which @code{t} means yes, @code{nil} means no,
-and @code{foo} means ``ask.''
+and @code{foo} means ``ask''.
@item (other @var{value})
This alternative can match any Lisp value, but if the user chooses this
@@ -834,7 +834,7 @@ For example,
@noindent
describes a variable for which @code{t} means yes, @code{nil} means no,
-and anything else means ``ask.'' If the user chooses @samp{Ask} from
+and anything else means ``ask''. If the user chooses @samp{Ask} from
the menu of alternatives, that specifies the value @code{foo}; but any
other value (not @code{t}, @code{nil} or @code{foo}) displays as
@samp{Ask}, just like @code{foo}.
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 0113ae86358..4ec3b8bf08a 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -155,7 +155,7 @@ boundary. @xref{Filling}.
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
+``wraps''. (The display table can specify alternate characters to use
for this; @pxref{Display Tables}).
@defopt truncate-lines
@@ -451,7 +451,7 @@ 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
+@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
@@ -1308,7 +1308,7 @@ 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.''
+``lost''.
@end defun
@defun remove-overlays &optional start end name value
@@ -1385,7 +1385,7 @@ foo
@end example
Emacs stores the overlays of each buffer in two lists, divided
-around an arbitrary ``center position.'' One list extends backwards
+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.
@@ -4359,7 +4359,7 @@ $$\pmatrix{ 2 & -1 & 0 \cr
@end ifnottex
@item disabled
-Specifies transforming the image so that it looks ``disabled.''
+Specifies transforming the image so that it looks ``disabled''.
@end table
@item :mask @var{mask}
@@ -5531,7 +5531,7 @@ Any @var{args} are passed to @var{map-function}.
@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
+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.
@@ -5842,7 +5842,7 @@ display the character @var{c} as those glyphs; @pxref{Glyphs}).
@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.''
+``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
@@ -6153,7 +6153,7 @@ capability (@samp{vb}).
@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
+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
@@ -6162,7 +6162,7 @@ variable.
@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
+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.
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 4319d5eddda..9c5ae73f718 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -5,11 +5,10 @@
@c %**end of header
@c Version of the manual and of Emacs.
-@c Please remember to update the edition number in README as well.
-@c And also the copies in vol1.texi and vol2.texi.
-@set VERSION 3.0
+@c Please remember to update these in vol1.texi and vol2.texi as well.
+@set VERSION 3.1
@include emacsver.texi
-@set DATE July 2009
+@set DATE July 2012
@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
@@ -73,8 +72,8 @@ developing GNU and promoting software freedom.''
@subtitle For Emacs Version @value{EMACSVER}
@subtitle Revision @value{VERSION}, @value{DATE}
-@author by Bil Lewis, Dan LaLiberte, Richard Stallman
-@author and the GNU Manual Group
+@author by Bil Lewis, Dan LaLiberte, Richard Stallman,
+@author the GNU Manual Group, et al.
@page
@vskip 0pt plus 1filll
@insertcopying
@@ -460,7 +459,7 @@ Functions
* Closures:: Functions that enclose a lexical environment.
* Obsolete Functions:: Declaring functions obsolete.
* Inline Functions:: Defining functions that the compiler
- will open code.
+ will expand inline.
* Declaring Functions:: Telling the compiler that a function is defined.
* Function Safety:: Determining whether a function is safe to call.
* Related Topics:: Cross-references to specific Lisp primitives
@@ -493,7 +492,7 @@ Common Problems Using Macros
* 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
+Customization Settings
* Common Keywords:: Common keyword arguments for all kinds of
customization declarations.
@@ -754,6 +753,7 @@ Defining Menus
various features.
* Menu Separators:: Drawing a horizontal line through a menu.
* Alias Menu Items:: Using command aliases in menu items.
+* Toolkit Differences:: Not all toolkits provide the same features.
Major and Minor Modes
@@ -824,6 +824,21 @@ Multiline Font Lock Constructs
* Region to Refontify:: Controlling which region gets refontified
after a buffer change.
+Automatic Indentation of code
+
+* SMIE:: A simple minded indentation engine.
+
+Simple Minded Indentation Engine
+
+* SMIE setup:: SMIE setup and features.
+* Operator Precedence Grammars:: A very simple parsing technique.
+* SMIE Grammar:: Defining the grammar of a language.
+* SMIE Lexer:: Defining tokens.
+* SMIE Tricks:: Working around the parser's limitations.
+* SMIE Indentation:: Specifying indentation rules.
+* SMIE Indentation Helpers:: Helper functions for indentation rules.
+* SMIE Indentation Example:: Sample indentation rules.
+
Documentation
* Documentation Basics:: Where doc strings are defined and stored.
@@ -1220,8 +1235,7 @@ Processes
* 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.
+* Misc Network:: Additional relevant functions for net connections.
* Serial Ports:: Communicating with serial ports.
* Byte Packing:: Using bindat to pack and unpack binary data.
@@ -1341,6 +1355,7 @@ Images
* GIF Images:: Special features for GIF format.
* TIFF Images:: Special features for TIFF format.
* PostScript Images:: Special features for PostScript format.
+* ImageMagick Images:: Special features available through ImageMagick.
* 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
@@ -1396,13 +1411,6 @@ Operating System Interface
* Notifications:: Desktop notifications.
* Dynamic Libraries:: On-demand loading of support libraries.
-Preparing Lisp code for distribution
-
-* Packaging Basics:: The basic concepts of Emacs Lisp packages.
-* Simple Packages:: How to package a single .el file.
-* Multi-file Packages:: How to package multiple files.
-* Package Archives:: Maintaining package archives.
-
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1421,6 +1429,13 @@ Terminal Input
* Input Modes:: Options for how input is processed.
* Recording Input:: Saving histories of recent or all input events.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+* Package Archives:: Maintaining package archives.
+
Tips and Conventions
* Coding Conventions:: Conventions for clean and robust programs.
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index 4c1150d1a51..76059079ca1 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -103,7 +103,7 @@ interpretation. @xref{Command Loop}.
@dfn{form} (or an @dfn{expression}). How Emacs evaluates a form
depends on its data type. Emacs has three different kinds of form
that are evaluated differently: symbols, lists, and ``all other
-types.'' This section describes all three kinds, one by one, starting
+types''. This section describes all three kinds, one by one, starting
with the ``all other types'' which are self-evaluating forms.
@menu
@@ -304,6 +304,22 @@ function, not a symbol.
Executing the function itself evaluates its body; this does involve
symbol function indirection when calling @code{erste}.
+ This form is rarely used and is now deprecated. Instead, you should write it
+as:
+
+@smallexample
+@group
+(funcall (lambda (arg) (erste arg))
+ '(1 2 3))
+@end group
+@end smallexample
+or just
+@smallexample
+@group
+(let ((arg '(1 2 3))) (erste arg))
+@end group
+@end smallexample
+
The built-in function @code{indirect-function} provides an easy way to
perform symbol function indirection explicitly.
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 3597d9f80c4..1af904aff41 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -71,8 +71,8 @@ back into the file.
In spite of the distinction between files and buffers, people often
refer to a file when they mean a buffer and vice-versa. Indeed, we say,
-``I am editing a file,'' rather than, ``I am editing a buffer that I
-will soon save as a file of the same name.'' Humans do not usually need
+``I am editing a file'', rather than, ``I am editing a buffer that I
+will soon save as a file of the same name''. Humans do not usually need
to make the distinction explicit. When dealing with a computer program,
however, it is good to keep the distinction in mind.
@@ -688,7 +688,7 @@ The file lock is really a file, a symbolic link with a special name,
stored in the same directory as the file you are editing.
When you access files using NFS, there may be a small probability that
-you and another user will both lock the same file ``simultaneously.''
+you and another user will both lock the same file ``simultaneously''.
If this happens, it is possible for the two users to make changes
simultaneously, but Emacs will still warn the user who saves second.
Also, the detection of modification of a buffer visiting a file changed
@@ -1806,7 +1806,7 @@ return value, but backup version numbers are kept.
@end defun
@defun file-name-extension filename &optional period
-This function returns @var{filename}'s final ``extension,'' if any,
+This function returns @var{filename}'s final ``extension'', if any,
after applying @code{file-name-sans-versions} to remove any
version/backup part. The extension, in a file name, is the part that
follows the last @samp{.} in the last name component (minus any
@@ -2798,7 +2798,7 @@ unlocking the buffer if it is locked.
possibly others to be added in the future. It need not implement all
these operations itself---when it has nothing special to do for a
certain operation, it can reinvoke the primitive, to handle the
-operation ``in the usual way.'' It should always reinvoke the primitive
+operation ``in the usual way''. It should always reinvoke the primitive
for an operation it does not recognize. Here's one way to do this:
@smallexample
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index d824f51e47e..869f03e2273 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -882,7 +882,7 @@ This variable specifies how to blink the cursor. Each element has the
form @code{(@var{on-state} . @var{off-state})}. Whenever the cursor
type equals @var{on-state} (comparing using @code{equal}), the
corresponding @var{off-state} specifies what the cursor looks like
-when it blinks ``off.'' Both @var{on-state} and @var{off-state}
+when it blinks ``off''. Both @var{on-state} and @var{off-state}
should be suitable values for the @code{cursor-type} frame parameter.
There are various defaults for how to blink each type of cursor, if
@@ -1069,7 +1069,7 @@ characters rather than pixels.
These values include the internal borders, and windows' scroll bars
and fringes (which belong to individual windows, not to the frame
itself). The exact value of the heights depends on the window-system
-and toolkit in use. With Gtk+, the height does not include any tool
+and toolkit in use. With GTK+, the height does not include any tool
bar or menu bar. With the Motif or Lucid toolkits, it includes the
tool bar but not the menu bar. In a graphical version with no
toolkit, it includes both the tool bar and menu bar. For a text
@@ -1532,7 +1532,7 @@ track of such changes. @xref{Misc Events}.
Most window systems use a desktop metaphor. Part of this metaphor is
the idea that windows are stacked in a notional third dimension
perpendicular to the screen surface, and thus ordered from ``highest''
-to ``lowest.'' Where two windows overlap, the one higher up covers
+to ``lowest''. Where two windows overlap, the one higher up covers
the one underneath. Even a window at the bottom of the stack can be
seen if no other window overlaps it.
@@ -1540,7 +1540,7 @@ seen if no other window overlaps it.
@cindex lowering a frame
A window's place in this ordering is not fixed; in fact, users tend
to change the order frequently. @dfn{Raising} a window means moving
-it ``up,'' to the top of the stack. @dfn{Lowering} a window means
+it ``up'', to the top of the stack. @dfn{Lowering} a window means
moving it to the bottom of the stack. This motion is in the notional
third dimension only, and does not change the position of the window
on the screen.
@@ -1814,7 +1814,7 @@ the menu keymap as necessary.
A dialog box is a variant of a pop-up menu---it looks a little
different, it always appears in the center of a frame, and it has just
one level and one or more buttons. The main use of dialog boxes is
-for asking questions that the user can answer with ``yes,'' ``no,''
+for asking questions that the user can answer with ``yes'', ``no'',
and a few other alternatives. With a single button, they can also
force the user to acknowledge important information. The functions
@code{y-or-n-p} and @code{yes-or-no-p} use dialog boxes instead of the
@@ -2028,7 +2028,7 @@ colors.)
These functions provide a way to determine which color names are
valid, and what they look like. In some cases, the value depends on the
@dfn{selected frame}, as described below; see @ref{Input Focus}, for the
-meaning of the term ``selected frame.''
+meaning of the term ``selected frame''.
To read user input of color names with completion, use
@code{read-color} (@pxref{High-Level Completion, read-color}).
@@ -2425,7 +2425,7 @@ software (as a string). Really this means whoever distributes the X
server.
When the developers of X labeled software distributors as
-``vendors,'' they showed their false assumption that no system could
+``vendors'', they showed their false assumption that no system could
ever be developed and distributed noncommercially.
@end defun
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 73bdefe19fc..b5cf38ed6f2 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -266,13 +266,12 @@ function is the value returned by the last element of the body.
@end example
@noindent
-We can call this function by writing it as the @sc{car} of an
-expression, like this:
+We can call this function by passing it to @code{funcall}, like this:
@example
@group
-((lambda (a b c) (+ a b c))
- 1 2 3)
+(funcall (lambda (a b c) (+ a b c))
+ 1 2 3)
@end group
@end example
@@ -287,8 +286,8 @@ this example:
@example
@group
-((lambda (a b c) (+ a b c))
- 1 (* 2 3) (- 5 4))
+(funcall (lambda (a b c) (+ a b c))
+ 1 (* 2 3) (- 5 4))
@end group
@end example
@@ -399,16 +398,16 @@ after a @code{&rest} argument.
Here are some examples of argument lists and proper calls:
@smallexample
-((lambda (n) (1+ n)) ; @r{One required:}
- 1) ; @r{requires exactly one argument.}
+(funcall (lambda (n) (1+ n)) ; @r{One required:}
+ 1) ; @r{requires exactly one argument.}
@result{} 2
-((lambda (n &optional n1) ; @r{One required and one optional:}
- (if n1 (+ n n1) (1+ n))) ; @r{1 or 2 arguments.}
- 1 2)
+(funcall (lambda (n &optional n1) ; @r{One required and one optional:}
+ (if n1 (+ n n1) (1+ n))) ; @r{1 or 2 arguments.}
+ 1 2)
@result{} 3
-((lambda (n &rest ns) ; @r{One required and one rest:}
- (+ n (apply '+ ns))) ; @r{1 or more arguments.}
- 1 2 3 4 5)
+(funcall (lambda (n &rest ns) ; @r{One required and one rest:}
+ (+ n (apply '+ ns))) ; @r{1 or more arguments.}
+ 1 2 3 4 5)
@result{} 15
@end smallexample
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 0ca4c915a65..1aa6004b3a6 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -74,13 +74,13 @@ alternatives:
Keys which are numbers are ``the same'' if they are @code{equal}, that
is, if they are equal in value and either both are integers or both
are floating point numbers; otherwise, two distinct objects are never
-``the same.''
+``the same''.
@item eq
Any two distinct Lisp objects are ``different'' as keys.
@item equal
-Two Lisp objects are ``the same,'' as keys, if they are equal
+Two Lisp objects are ``the same'', as keys, if they are equal
according to @code{equal}.
@end table
@@ -128,7 +128,7 @@ doing that takes some extra time.
The default size is 65.
@item :rehash-size @var{rehash-size}
-When you add an association to a hash table and the table is ``full,''
+When you add an association to a hash table and the table is ``full'',
it grows automatically. This value specifies how to make the hash table
larger, at that time.
@@ -262,7 +262,7 @@ will use @var{test-fn} to compare key values, and @var{hash-fn} to compute
a ``hash code'' from a key value.
The function @var{test-fn} should accept two arguments, two keys, and
-return non-@code{nil} if they are considered ``the same.''
+return non-@code{nil} if they are considered ``the same''.
The function @var{hash-fn} should accept one argument, a key, and return
an integer that is the ``hash code'' of that key. For good results, the
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 5dfb2b05ff8..762b42113f2 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -599,7 +599,7 @@ subcommands of the prefix key.
@defopt help-event-list
The value of this variable is a list of event types that serve as
-alternative ``help characters.'' These events are handled just like the
+alternative ``help characters''. These events are handled just like the
event specified by @code{help-char}.
@end defopt
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index d3a5b253162..37d2cc55a9e 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -146,7 +146,7 @@ printer'' refer to those routines in Lisp that convert textual
representations of Lisp objects into actual Lisp objects, and vice
versa. @xref{Printed Representation}, for more details. You, the
person reading this manual, are thought of as ``the programmer'' and are
-addressed as ``you.'' ``The user'' is the person who uses Lisp
+addressed as ``you''. ``The user'' is the person who uses Lisp
programs, including those you write.
@cindex typographic conventions
@@ -219,7 +219,7 @@ the examples in this manual, this is indicated with @samp{@result{}}:
@end example
@noindent
-You can read this as ``@code{(car '(1 2))} evaluates to 1.''
+You can read this as ``@code{(car '(1 2))} evaluates to 1''.
When a form is a macro call, it expands into a new form for Lisp to
evaluate. We show the result of the expansion with
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index b12752fdeea..337364cb2ce 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1032,7 +1032,7 @@ binding of @var{othertype} in @var{othermap} and uses that.
This feature permits you to define one key as an alias for another key.
For example, an entry whose @sc{car} is the keymap called @code{esc-map}
and whose @sc{cdr} is 32 (the code for @key{SPC}) means, ``Use the global
-binding of @kbd{Meta-@key{SPC}}, whatever that may be.''
+binding of @kbd{Meta-@key{SPC}}, whatever that may be''.
@end itemize
@item @var{symbol}
@@ -1887,9 +1887,9 @@ maps searched are @var{keymap} and the global keymap. If @var{keymap}
is a list of keymaps, only those keymaps are searched.
Usually it's best to use @code{overriding-local-map} as the expression
-for @var{keymap}. Then @code{where-is-internal} searches precisely the
-keymaps that are active. To search only the global map, pass
-@code{(keymap)} (an empty keymap) as @var{keymap}.
+for @var{keymap}. Then @code{where-is-internal} searches precisely
+the keymaps that are active. To search only the global map, pass the
+value @code{(keymap)} (an empty keymap) as @var{keymap}.
If @var{firstonly} is @code{non-ascii}, then the value is a single
vector representing the first key sequence found, rather than a list of
@@ -1903,20 +1903,24 @@ If @var{noindirect} is non-@code{nil}, @code{where-is-internal} doesn't
follow indirect keymap bindings. This makes it possible to search for
an indirect definition itself.
-When command remapping is in effect (@pxref{Remapping Commands}),
-@code{where-is-internal} figures out when a command will be run due to
-remapping and reports keys accordingly. It also returns @code{nil} if
-@var{command} won't really be run because it has been remapped to some
-other command. However, if @var{no-remap} is non-@code{nil}.
-@code{where-is-internal} ignores remappings.
+The fifth argument, @var{no-remap}, determines how this function
+treats command remappings (@pxref{Remapping Commands}). There are two
+cases of interest:
-@smallexample
-@group
-(where-is-internal 'describe-function)
- @result{} ([8 102] [f1 102] [help 102]
- [menu-bar help-menu describe describe-function])
-@end group
-@end smallexample
+@table @asis
+@item If a command @var{other-command} is remapped to @var{command}:
+If @var{no-remap} is @code{nil}, find the bindings for
+@var{other-command} and treat them as though they are also bindings
+for @var{command}. If @var{no-remap} is non-@code{nil}, include the
+vector @code{[remap @var{other-command}]} in the list of possible key
+sequences, instead of finding those bindings.
+
+@item If @var{command} is remapped to @var{other-command}:
+If @var{no-remap} is @code{nil}, return the bindings for
+@var{other-command} rather than @var{command}. If @var{no-remap} is
+non-@code{nil}, return the bindings for @var{command}, ignoring the
+fact that it is remapped.
+@end table
@end defun
@deffn Command describe-bindings &optional prefix buffer-or-name
@@ -2147,7 +2151,7 @@ This works because @code{toggle-debug-on-error} is defined as a command
which toggles the variable @code{debug-on-error}.
@dfn{Radio buttons} are a group of menu items, in which at any time one
-and only one is ``selected.'' There should be a variable whose value
+and only one is ``selected''. There should be a variable whose value
says which one is selected at any time. The @var{selected} form for
each radio button in the group should check whether the variable has the
right value for selecting that button. Clicking on the button should
@@ -2424,7 +2428,7 @@ Next we define the menu items:
Note the symbols which the bindings are ``made for''; these appear
inside square brackets, in the key sequence being defined. In some
cases, this symbol is the same as the command name; sometimes it is
-different. These symbols are treated as ``function keys,'' but they are
+different. These symbols are treated as ``function keys'', but they are
not real function keys on the keyboard. They do not affect the
functioning of the menu itself, but they are ``echoed'' in the echo area
when the user selects from the menu, and they appear in the output of
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 2325915d76a..423bc7b6d8a 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -34,12 +34,12 @@ object that represents an ordered pair. That is, it has two slots,
and each slot @dfn{holds}, or @dfn{refers to}, some Lisp object. One
slot is known as the @sc{car}, and the other is known as the @sc{cdr}.
(These names are traditional; see @ref{Cons Cell Type}.) @sc{cdr} is
-pronounced ``could-er.''
+pronounced ``could-er''.
We say that ``the @sc{car} of this cons cell is'' whatever object
its @sc{car} slot currently holds, and likewise for the @sc{cdr}.
- A list is a series of cons cells ``chained together,'' so that each
+ A list is a series of cons cells ``chained together'', so that each
cell refers to the next one. There is one cons cell for each element
of the list. By convention, the @sc{car}s of the cons cells hold the
elements of the list, and the @sc{cdr}s are used to chain the list
@@ -1632,7 +1632,7 @@ a @sc{cdr} @code{equal} to @var{value}.
@code{rassoc} is like @code{assoc} except that it compares the @sc{cdr} of
each @var{alist} association instead of the @sc{car}. You can think of
-this as ``reverse @code{assoc},'' finding the key for a given value.
+this as ``reverse @code{assoc}'', finding the key for a given value.
@end defun
@defun assq key alist
@@ -1673,7 +1673,7 @@ a @sc{cdr} @code{eq} to @var{value}.
@code{rassq} is like @code{assq} except that it compares the @sc{cdr} of
each @var{alist} association instead of the @sc{car}. You can think of
-this as ``reverse @code{assq},'' finding the key for a given value.
+this as ``reverse @code{assq}'', finding the key for a given value.
For example:
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index bc4cec3307d..3984e5c03aa 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -604,7 +604,7 @@ either.
@section Indenting Macros
Within a macro definition, you can use the @code{declare} form
-(@pxref{Defining Macros}) to specify how to @key{TAB} should indent
+(@pxref{Defining Macros}) to specify how @key{TAB} should indent
calls to the macro. An indentation specification is written like this:
@example
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index c840eb6ded0..8ce7e0d4686 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -57,16 +57,17 @@ including @code{beginning-of-line}, @code{forward-word},
@code{forward-sentence}, and @code{forward-paragraph}, stop at the
boundary between the prompt and the actual text.
+@c See http://debbugs.gnu.org/11276
The minibuffer's window is normally a single line; it grows
-automatically if the contents require more space. You can explicitly
-@c FIXME? Works in 23.4, not 24.0.95. (Bug#11276)
-resize it temporarily with the window sizing commands; it reverts to
-its normal size when the minibuffer is exited. You can resize it
-@c FIXME? Doesn't work in any version of Emacs?
+automatically if the contents require more space. Whilst it is
+active, you can explicitly resize it temporarily with the window
+sizing commands; it reverts to its normal size when the minibuffer is
+exited. When the minibuffer is not active, you can resize it
permanently by using the window sizing commands in the frame's other
-window, when the minibuffer is not active. If the frame contains just
-a minibuffer, you can change the minibuffer's size by changing the
-frame's size.
+window, or dragging the mode line with the mouse. (Due to details of
+the current implementation, for this to work @code{resize-mini-windows}
+must be @code{nil}.) If the frame contains just a minibuffer, you can
+change the minibuffer's size by changing the frame's size.
Use of the minibuffer reads input events, and that alters the values
of variables such as @code{this-command} and @code{last-command}
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index aa089aec36b..00cd43d7b71 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -283,7 +283,7 @@ buffer is put in Fundamental mode (@pxref{Major Mode Conventions}).
* Derived Modes:: Defining a new major mode based on another major
mode.
* Basic Major Modes:: Modes that other modes are often derived from.
-* Mode Hooks:: Hooks run at the end of major mode commands.
+* Mode Hooks:: Hooks run at the end of major mode functions.
* Tabulated List Mode:: Parent mode for buffers containing tabulated data.
* Generic Modes:: Defining a simple major mode that supports
comment syntax and Font Lock mode.
@@ -384,7 +384,7 @@ reserved for users.
A major mode can also rebind the keys @kbd{M-n}, @kbd{M-p} and
@kbd{M-s}. The bindings for @kbd{M-n} and @kbd{M-p} should normally
-be some kind of ``moving forward and backward,'' but this does not
+be some kind of ``moving forward and backward'', but this does not
necessarily mean cursor motion.
It is legitimate for a major mode to rebind a standard key sequence if
@@ -938,7 +938,7 @@ such a major mode, please correct it to follow these conventions.
When you defined a major mode using @code{define-derived-mode}, it
automatically makes sure these conventions are followed. If you
-define a major mode ``by hand,'' not using @code{define-derived-mode},
+define a major mode ``by hand'', not using @code{define-derived-mode},
use the following functions to handle these conventions automatically.
@defun run-mode-hooks &rest hookvars
@@ -1122,8 +1122,8 @@ documentation for the mode command. If you do not supply it,
The argument @var{comment-list} is a list in which each element is
either a character, a string of one or two characters, or a cons cell.
A character or a string is set up in the mode's syntax table as a
-``comment starter.'' If the entry is a cons cell, the @sc{car} is set
-up as a ``comment starter'' and the @sc{cdr} as a ``comment ender.''
+``comment starter''. If the entry is a cons cell, the @sc{car} is set
+up as a ``comment starter'' and the @sc{cdr} as a ``comment ender''.
(Use @code{nil} for the latter if you want comments to end at the end
of the line.) Note that the syntax table mechanism has limitations
about what comment starters and enders are actually possible.
@@ -1648,7 +1648,7 @@ See the command \\[hungry-electric-delete]."
@end smallexample
@noindent
-This defines a minor mode named ``Hungry mode,'' a command named
+This defines a minor mode named ``Hungry mode'', a command named
@code{hungry-mode} to toggle it, a variable named @code{hungry-mode}
which indicates whether the mode is enabled, and a variable named
@code{hungry-mode-map} which holds the keymap that is active when the
@@ -3374,7 +3374,7 @@ Another one is SMIE which takes an approach in the spirit
of Lisp sexps and adapts it to non-Lisp languages.
@menu
-* SMIE:: A simple minded indentation engine
+* SMIE:: A simple minded indentation engine.
@end menu
@node SMIE
@@ -3400,14 +3400,14 @@ languages cannot be parsed correctly using SMIE, at least not without
resorting to some special tricks (@pxref{SMIE Tricks}).
@menu
-* SMIE setup:: SMIE setup and features
-* Operator Precedence Grammars:: A very simple parsing technique
-* SMIE Grammar:: Defining the grammar of a language
-* SMIE Lexer:: Defining tokens
-* SMIE Tricks:: Working around the parser's limitations
-* SMIE Indentation:: Specifying indentation rules
-* SMIE Indentation Helpers:: Helper functions for indentation rules
-* SMIE Indentation Example:: Sample indentation rules
+* SMIE setup:: SMIE setup and features.
+* Operator Precedence Grammars:: A very simple parsing technique.
+* SMIE Grammar:: Defining the grammar of a language.
+* SMIE Lexer:: Defining tokens.
+* SMIE Tricks:: Working around the parser's limitations.
+* SMIE Indentation:: Specifying indentation rules.
+* SMIE Indentation Helpers:: Helper functions for indentation rules.
+* SMIE Indentation Example:: Sample indentation rules.
@end menu
@node SMIE setup
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 66f491b7780..02d306b3f75 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -777,7 +777,7 @@ and returns that value as a floating point number.
sequence of @dfn{bits} (digits which are either zero or one). A bitwise
operation acts on the individual bits of such a sequence. For example,
@dfn{shifting} moves the whole sequence left or right one or more places,
-reproducing the same pattern ``moved over.''
+reproducing the same pattern ``moved over''.
The bitwise operations in Emacs Lisp apply only to integers.
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 58ceeb02b76..b49d2bc05fe 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -675,7 +675,7 @@ not distinguish between a cons cell slot ``holding'' a value versus
@cindex atoms
Because cons cells are so central to Lisp, we also have a word for
-``an object which is not a cons cell.'' These objects are called
+``an object which is not a cons cell''. These objects are called
@dfn{atoms}.
@cindex parenthesis
@@ -1289,7 +1289,7 @@ without qualification, we mean a Lisp macro, not a keyboard macro.
A @dfn{primitive function} is a function callable from Lisp but
written in the C programming language. Primitive functions are also
called @dfn{subrs} or @dfn{built-in functions}. (The word ``subr'' is
-derived from ``subroutine.'') Most primitive functions evaluate all
+derived from ``subroutine''.) Most primitive functions evaluate all
their arguments when they are called. A primitive function that does
not evaluate all its arguments is called a @dfn{special form}
(@pxref{Special Forms}).@refill
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 7028b6e4e3f..66df1f34eda 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -114,7 +114,7 @@ When it is called with one argument (always a character), @var{function}
should save the argument and arrange to return it on the next call.
This is called @dfn{unreading} the character; it happens when the Lisp
reader reads one character too many and wants to ``put it back where it
-came from.'' In this case, it makes no difference what value
+came from''. In this case, it makes no difference what value
@var{function} returns.
@end itemize
@@ -618,7 +618,7 @@ spacing between calls.
@defun terpri &optional stream
@cindex newline in print
This function outputs a newline to @var{stream}. The name stands
-for ``terminate print.''
+for ``terminate print''.
@end defun
@defun write-char character &optional stream
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index ac2cea02040..1e749b8c3bb 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -140,7 +140,7 @@ act correctly if it is evaluated with lexical scoping enabled
@code{defun} defines a symbol as a function, creating a lambda
expression and storing it in the function cell of the symbol. This
lambda expression thus becomes the function definition of the symbol.
-(The term ``function definition,'' meaning the contents of the function
+(The term ``function definition'', meaning the contents of the function
cell, is derived from the idea that @code{defun} gives the symbol its
definition as a function.) @code{defsubst} and @code{defalias} are two
other ways of defining a function. @xref{Functions}.
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 830ceeedefd..4a860657444 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -56,7 +56,7 @@ Modes}, for an example of how to set up a syntax table.
A syntax table can inherit the data for some characters from the
standard syntax table, while specifying other characters itself. The
``inherit'' syntax class means ``inherit this character's syntax from
-the standard syntax table.'' Just changing the standard syntax for a
+the standard syntax table''. Just changing the standard syntax for a
character affects all syntax tables that inherit from it.
@defun syntax-table-p object
@@ -617,7 +617,7 @@ higher-level functions for moving over balanced expressions.
A character's syntax controls how it changes the state of the
parser, rather than describing the state itself. For example, a
string delimiter character toggles the parser state between
-``in-string'' and ``in-code,'' but the syntax of characters does not
+``in-string'' and ``in-code'', but the syntax of characters does not
directly say whether they are inside a string. For example (note that
15 is the syntax code for generic string delimiters),
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index a9c51fead1b..d794ddc385b 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -555,7 +555,7 @@ error; if some of the text in it is read-only, it signals a
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,
+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.
@@ -806,7 +806,7 @@ 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
+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
@@ -845,7 +845,7 @@ 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
+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.
@@ -1093,8 +1093,8 @@ 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
+``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.
To facilitate support for window systems that support multiple
@@ -3504,7 +3504,7 @@ once for the same part of the buffer, you can use the variable
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.''
+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}
@@ -3808,7 +3808,7 @@ 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.''
+field is also considered to be ``on the boundary''.
Commands like @kbd{C-a} with no argument, that normally move backward
to a specific kind of location and stay there once there, probably
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 4ba7dd9dfe9..0e58373119f 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -640,7 +640,7 @@ have the form (KEY . VALUE). Here, KEY is ...
@item
Never change the case of a Lisp symbol when you mention it in a doc
-string. If the symbol's name is @code{foo}, write ``foo,'' not
+string. If the symbol's name is @code{foo}, write ``foo'', not
``Foo'' (which is a different symbol).
This might appear to contradict the policy of writing function
@@ -772,9 +772,9 @@ is indicative and has a proper subject.
@item
The documentation string for a function that is a yes-or-no predicate
-should start with words such as ``Return t if,'' to indicate
-explicitly what constitutes ``truth.'' The word ``return'' avoids
-starting the sentence with lower-case ``t,'' which could be somewhat
+should start with words such as ``Return t if'', to indicate
+explicitly what constitutes ``truth''. The word ``return'' avoids
+starting the sentence with lower-case ``t'', which could be somewhat
distracting.
@item
@@ -797,8 +797,8 @@ returned.''
@item
Avoid using the word ``cause'' (or its equivalents) unnecessarily.
-Instead of, ``Cause Emacs to display text in boldface,'' write just
-``Display text in boldface.''
+Instead of, ``Cause Emacs to display text in boldface'', write just
+``Display text in boldface''.
@item
Avoid using ``iff'' (a mathematics term meaning ``if and only if''),
@@ -821,7 +821,7 @@ to set, use @code{defcustom}. @xref{Defining Variables}.
@item
The documentation string for a variable that is a yes-or-no flag should
-start with words such as ``Non-nil means,'' to make it clear that
+start with words such as ``Non-nil means'', to make it clear that
all non-@code{nil} values are equivalent and indicate explicitly what
@code{nil} and non-@code{nil} mean.
@end itemize
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index e0e629ec9d3..4e622231645 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -670,7 +670,7 @@ symbol is changed.
@code{setq} does not evaluate @var{symbol}; it sets the symbol that you
write. We say that this argument is @dfn{automatically quoted}. The
-@samp{q} in @code{setq} stands for ``quoted.''
+@samp{q} in @code{setq} stands for ``quoted''.
The value of the @code{setq} form is the value of the last @var{form}.
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 25ea8577467..2687cd57d5a 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -24,10 +24,9 @@
@end tex
@c Version of the manual and of Emacs.
-@c Please remember to update the edition number in README as well.
-@set VERSION 3.0
+@set VERSION 3.1
@include emacsver.texi
-@set DATE July 2009
+@set DATE May 2012
@dircategory Emacs
@direntry
@@ -90,8 +89,8 @@ developing GNU and promoting software freedom.''
@subtitle For Emacs Version @value{EMACSVER}
@subtitle Revision @value{VERSION}, @value{DATE}
-@author by Bil Lewis, Dan LaLiberte, Richard Stallman
-@author and the GNU Manual Group
+@author by Bil Lewis, Dan LaLiberte, Richard Stallman,
+@author the GNU Manual Group, et al.
@page
@vskip 0pt plus 1filll
@insertcopying
@@ -480,7 +479,7 @@ Functions
* Closures:: Functions that enclose a lexical environment.
* Obsolete Functions:: Declaring functions obsolete.
* Inline Functions:: Defining functions that the compiler
- will open code.
+ will expand inline.
* Declaring Functions:: Telling the compiler that a function is defined.
* Function Safety:: Determining whether a function is safe to call.
* Related Topics:: Cross-references to specific Lisp primitives
@@ -513,7 +512,7 @@ Common Problems Using Macros
* 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
+Customization Settings
* Common Keywords:: Common keyword arguments for all kinds of
customization declarations.
@@ -776,6 +775,7 @@ Defining Menus
various features.
* Menu Separators:: Drawing a horizontal line through a menu.
* Alias Menu Items:: Using command aliases in menu items.
+* Toolkit Differences:: Not all toolkits provide the same features.
Major and Minor Modes
@@ -802,7 +802,7 @@ Major Modes
* Derived Modes:: Defining a new major mode based on another major
mode.
* Basic Major Modes:: Modes that other modes are often derived from.
-* Mode Hooks:: Hooks run at the end of major mode commands.
+* Mode Hooks:: Hooks run at the end of major mode functions.
* Tabulated List Mode:: Parent mode for buffers containing tabulated data.
* Generic Modes:: Defining a simple major mode that supports
comment syntax and Font Lock mode.
@@ -846,6 +846,21 @@ Multiline Font Lock Constructs
* Region to Refontify:: Controlling which region gets refontified
after a buffer change.
+Automatic Indentation of code
+
+* SMIE:: A simple minded indentation engine.
+
+Simple Minded Indentation Engine
+
+* SMIE setup:: SMIE setup and features.
+* Operator Precedence Grammars:: A very simple parsing technique.
+* SMIE Grammar:: Defining the grammar of a language.
+* SMIE Lexer:: Defining tokens.
+* SMIE Tricks:: Working around the parser's limitations.
+* SMIE Indentation:: Specifying indentation rules.
+* SMIE Indentation Helpers:: Helper functions for indentation rules.
+* SMIE Indentation Example:: Sample indentation rules.
+
Documentation
* Documentation Basics:: Where doc strings are defined and stored.
@@ -1242,8 +1257,7 @@ Processes
* 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.
+* Misc Network:: Additional relevant functions for net connections.
* Serial Ports:: Communicating with serial ports.
* Byte Packing:: Using bindat to pack and unpack binary data.
@@ -1363,6 +1377,7 @@ Images
* GIF Images:: Special features for GIF format.
* TIFF Images:: Special features for TIFF format.
* PostScript Images:: Special features for PostScript format.
+* ImageMagick Images:: Special features available through ImageMagick.
* 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
@@ -1418,12 +1433,6 @@ Operating System Interface
* Notifications:: Desktop notifications.
* Dynamic Libraries:: On-demand loading of support libraries.
-Preparing Lisp code for distribution
-
-* Packaging Basics:: The basic concepts of Emacs Lisp packages.
-* Simple Packages:: How to package a single .el file.
-* Multi-file Packages:: How to package multiple files.
-
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1442,6 +1451,13 @@ Terminal Input
* Input Modes:: Options for how input is processed.
* Recording Input:: Saving histories of recent or all input events.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+* Package Archives:: Maintaining package archives.
+
Tips and Conventions
* Coding Conventions:: Conventions for clean and robust programs.
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 2fd2a8d8224..c74e7c438b4 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -24,10 +24,9 @@
@end tex
@c Version of the manual and of Emacs.
-@c Please remember to update the edition number in README as well.
-@set VERSION 3.0
+@set VERSION 3.1
@include emacsver.texi
-@set DATE July 2009
+@set DATE May 2012
@dircategory Emacs
@direntry
@@ -90,8 +89,8 @@ developing GNU and promoting software freedom.''
@subtitle For Emacs Version @value{EMACSVER}
@subtitle Revision @value{VERSION}, @value{DATE}
-@author by Bil Lewis, Dan LaLiberte, Richard Stallman
-@author and the GNU Manual Group
+@author by Bil Lewis, Dan LaLiberte, Richard Stallman,
+@author the GNU Manual Group, et al.
@page
@vskip 0pt plus 1filll
@insertcopying
@@ -479,7 +478,7 @@ Functions
* Closures:: Functions that enclose a lexical environment.
* Obsolete Functions:: Declaring functions obsolete.
* Inline Functions:: Defining functions that the compiler
- will open code.
+ will expand inline.
* Declaring Functions:: Telling the compiler that a function is defined.
* Function Safety:: Determining whether a function is safe to call.
* Related Topics:: Cross-references to specific Lisp primitives
@@ -512,7 +511,7 @@ Common Problems Using Macros
* 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
+Customization Settings
* Common Keywords:: Common keyword arguments for all kinds of
customization declarations.
@@ -775,6 +774,7 @@ Defining Menus
various features.
* Menu Separators:: Drawing a horizontal line through a menu.
* Alias Menu Items:: Using command aliases in menu items.
+* Toolkit Differences:: Not all toolkits provide the same features.
Major and Minor Modes
@@ -801,7 +801,7 @@ Major Modes
* Derived Modes:: Defining a new major mode based on another major
mode.
* Basic Major Modes:: Modes that other modes are often derived from.
-* Mode Hooks:: Hooks run at the end of major mode commands.
+* Mode Hooks:: Hooks run at the end of major mode functions.
* Tabulated List Mode:: Parent mode for buffers containing tabulated data.
* Generic Modes:: Defining a simple major mode that supports
comment syntax and Font Lock mode.
@@ -845,6 +845,21 @@ Multiline Font Lock Constructs
* Region to Refontify:: Controlling which region gets refontified
after a buffer change.
+Automatic Indentation of code
+
+* SMIE:: A simple minded indentation engine.
+
+Simple Minded Indentation Engine
+
+* SMIE setup:: SMIE setup and features.
+* Operator Precedence Grammars:: A very simple parsing technique.
+* SMIE Grammar:: Defining the grammar of a language.
+* SMIE Lexer:: Defining tokens.
+* SMIE Tricks:: Working around the parser's limitations.
+* SMIE Indentation:: Specifying indentation rules.
+* SMIE Indentation Helpers:: Helper functions for indentation rules.
+* SMIE Indentation Example:: Sample indentation rules.
+
Documentation
* Documentation Basics:: Where doc strings are defined and stored.
@@ -1362,6 +1377,7 @@ Images
* GIF Images:: Special features for GIF format.
* TIFF Images:: Special features for TIFF format.
* PostScript Images:: Special features for PostScript format.
+* ImageMagick Images:: Special features available through ImageMagick.
* 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
@@ -1417,12 +1433,6 @@ Operating System Interface
* Notifications:: Desktop notifications.
* Dynamic Libraries:: On-demand loading of support libraries.
-Preparing Lisp code for distribution
-
-* Packaging Basics:: The basic concepts of Emacs Lisp packages.
-* Simple Packages:: How to package a single .el file.
-* Multi-file Packages:: How to package multiple files.
-
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1441,6 +1451,12 @@ Terminal Input
* Input Modes:: Options for how input is processed.
* Recording Input:: Saving histories of recent or all input events.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+
Tips and Conventions
* Coding Conventions:: Conventions for clean and robust programs.
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index a9a25d8e867..094729033b1 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -49,7 +49,7 @@ is displayed in windows.
@section Basic Concepts of Emacs Windows
@cindex window
-A @dfn{window} is a area of the screen which is used to display a
+A @dfn{window} is a area of the screen that is used to display a
buffer (@pxref{Buffers}). In Emacs Lisp, windows are represented by a
special Lisp object type.
@@ -297,8 +297,8 @@ child of its parent.
The functions @code{window-next-sibling} and
@code{window-prev-sibling} should not be confused with the functions
-@code{next-window} and @code{previous-window} which respectively
-return the next and previous window in the cyclic ordering of windows
+@code{next-window} and @code{previous-window}, which return the next
+and previous window, respectively, in the cyclic ordering of windows
(@pxref{Cyclic Window Ordering}).
You can use the following functions to find the first live window on
@@ -376,7 +376,7 @@ line (@pxref{Mode Line Format}).
Emacs provides several functions for finding the height and width of
a window. Except where noted, Emacs reports window heights and widths
-as integer numbers of lines and columns respectively. On a graphical
+as integer numbers of lines and columns, respectively. On a graphical
display, each ``line'' and ``column'' actually corresponds to the
height and width of a ``default'' character specified by the frame's
default font. Thus, if a window is displaying text with a different
@@ -619,7 +619,7 @@ window.
The optional argument @var{max-height}, if non-@code{nil}, specifies
the maximum total height that this function can give @var{window}.
-The optional argument @var{min-height}, if no-@code{nil}, specifies
+The optional argument @var{min-height}, if non-@code{nil}, specifies
the minimum total height that it can give, which overrides the
variable @code{window-min-height}.
@@ -723,7 +723,7 @@ properties of the window selected within @var{window}'s frame.
The behavior of this function may be altered by the window parameters
of @var{window}, so long as the variable
-@code{ignore-window-parameters} is non-@code{nil}. If the value of
+@code{ignore-window-parameters} is @code{nil}. If the value of
the @code{split-window} window parameter is @code{t}, this function
ignores all other window parameters. Otherwise, if the value of the
@code{split-window} window parameter is a function, that function is
@@ -1062,7 +1062,7 @@ combination. @xref{Splitting Windows}.
The behavior of this function may be altered by the window parameters
of @var{window}, so long as the variable
-@code{ignore-window-parameters} is non-@code{nil}. If the value of
+@code{ignore-window-parameters} is @code{nil}. If the value of
the @code{delete-window} window parameter is @code{t}, this function
ignores all other window parameters. Otherwise, if the value of the
@code{delete-window} window parameter is a function, that function is
@@ -1079,7 +1079,7 @@ defaults to the selected window. The return value is @code{nil}.
The behavior of this function may be altered by the window parameters
of @var{window}, so long as the variable
-@code{ignore-window-parameters} is non-@code{nil}. If the value of
+@code{ignore-window-parameters} is @code{nil}. If the value of
the @code{delete-other-windows} window parameter is @code{t}, this
function ignores all other window parameters. Otherwise, if the value
of the @code{delete-other-windows} window parameter is a function,
@@ -1119,8 +1119,8 @@ means operate on that frame.
Note that this argument does not have the same meaning as in other
functions which scan all live windows (@pxref{Cyclic Window
-Ordering}). Specifically, the values @code{t} and @code{nil} have the
-opposite of their meanings in those other functions.
+Ordering}). Specifically, the meanings of @code{t} and @code{nil} here
+are the opposite of what they are in those other functions.
@end deffn
@node Selecting Windows
@@ -1171,11 +1171,11 @@ the buffer list.
This macro selects @var{window}, executes @var{forms} in sequence, then
restores the previously selected window and current buffer. The ordering
of recently selected windows and the buffer list remain unchanged unless
-you deliberately change them within @var{forms}, for example, by calling
+you deliberately change them within @var{forms}; for example, by calling
@code{select-window} with argument @var{norecord} @code{nil}.
-The order of recently selected windows and the buffer list are not
-changed by this macro.
+This macro does not change the order of recently selected windows or
+the buffer list.
@end defmac
@defun frame-selected-window &optional frame
@@ -1185,7 +1185,7 @@ within that frame. @var{frame} should be a live frame; if omitted or
@end defun
@defun set-frame-selected-window frame window &optional norecord
-This function makes @code{window} the window selected within the frame
+This function makes @var{window} the window selected within the frame
@var{frame}. @var{frame} should be a live frame; if omitted or
@code{nil}, it defaults to the selected frame. @var{window} should be
a live window; if omitted or @code{nil}, it defaults to the selected
@@ -1223,7 +1223,7 @@ the cyclic ordering of windows. @var{window} should be a live window;
if omitted or @code{nil}, it defaults to the selected window.
The optional argument @var{minibuf} specifies whether minibuffer windows
-shall be included in the cyclic ordering. Normally, when @var{minibuf}
+should be included in the cyclic ordering. Normally, when @var{minibuf}
is @code{nil}, a minibuffer window is included only if it is currently
``active''; this matches the behavior of @kbd{C-x o}. (Note that a
minibuffer window is active as long as its minibuffer is in use; see
@@ -1805,14 +1805,14 @@ desired buffer) or @code{nil} (which means the splitting failed).
@end defopt
@defun split-window-sensibly window
-This function tries to split @code{window}, and return the newly
-created window. If @code{window} cannot be split, it returns
+This function tries to split @var{window}, and return the newly
+created window. If @var{window} cannot be split, it returns
@code{nil}.
This function obeys the usual rules that determine when a window may
be split (@pxref{Splitting Windows}). It first tries to split by
placing the new window below, subject to the restriction imposed by
-@code{split-height-threshold} (see below) in addition to any other
+@code{split-height-threshold} (see below), in addition to any other
restrictions. If that fails, it tries to split by placing the new
window to the right, subject to @code{split-width-threshold} (see
below). If that fails, and the window is the only window on its
@@ -1944,7 +1944,7 @@ to display @var{buffer}.
If @var{args} is an alist, it specifies frame parameters for the new
frame. If @var{args} is a list whose @sc{car} is a symbol, then
-@code{(car @var{args})} is called as a function to actually create and
+@code{(car @var{args})} is a function to actually create and
set up the frame; it is called with @var{buffer} as first argument, and
@code{(cdr @var{args})} as additional arguments.
@@ -1962,7 +1962,7 @@ This variable holds frame parameters for
@defopt same-window-buffer-names
A list of buffer names for buffers that should be displayed in the
-selected window. If the buffer's name is in this list,
+selected window. If a buffer's name is in this list,
@code{display-buffer} handles the buffer by switching to it in the
selected window.
@end defopt
@@ -1997,8 +1997,8 @@ above.
@section Window History
@cindex window history
-Each window remembers the buffers it has displayed earlier and the order
-in which these buffers have been removed from it. This history is used,
+Each window remembers the buffers it has previously displayed, and the order
+in which these buffers were removed from it. This history is used,
for example, by @code{replace-buffer-in-windows} (@pxref{Buffers and
Windows}). This list is automatically maintained by Emacs, but you can
use the following functions to explicitly inspect or alter it:
@@ -2061,41 +2061,41 @@ This command displays the previous buffer in @var{window}. The
argument @var{window} should be a live window or @code{nil} (meaning
the selected window). If the optional argument @var{bury-or-kill} is
non-@code{nil}, this means that the buffer currently shown in
-@var{window} is about to be buried or killed and consequently shall
+@var{window} is about to be buried or killed and consequently should
not be switched to in future invocations of this command.
The previous buffer is usually the buffer shown before the buffer
currently shown in @var{window}. However, a buffer that has been buried
-or killed or has been already shown by a recent invocation of
-@code{switch-to-prev-buffer} does not qualify as previous buffer.
+or killed, or has been already shown by a recent invocation of
+@code{switch-to-prev-buffer}, does not qualify as previous buffer.
If repeated invocations of this command have already shown all buffers
previously shown in @var{window}, further invocations will show buffers
from the buffer list of the frame @var{window} appears on (@pxref{The
-Buffer List}) trying to skip buffers that are already shown in another
+Buffer List}), trying to skip buffers that are already shown in another
window on that frame.
@end deffn
@deffn Command switch-to-next-buffer &optional window
-This command switches to the next buffer in @var{window} thus undoing
+This command switches to the next buffer in @var{window}, thus undoing
the effect of the last @code{switch-to-prev-buffer} command in
@var{window}. The argument @var{window} must be a live window and
defaults to the selected one.
-If there is no recent invocation of a @code{switch-to-prev-buffer} that
+If there is no recent invocation of @code{switch-to-prev-buffer} that
can be undone, this function tries to show a buffer from the buffer list
of the frame @var{window} appears on (@pxref{The Buffer List}).
@end deffn
By default @code{switch-to-prev-buffer} and @code{switch-to-next-buffer}
can switch to a buffer that is already shown in another window on the
-same frame. The following option can be used to override that behavior.
+same frame. The following option can be used to override this behavior.
@defopt switch-to-visible-buffer
If this variable is non-@code{nil}, @code{switch-to-prev-buffer} and
@code{switch-to-next-buffer} may switch to a buffer that is already
-visible on the same frame, provided the buffer was shown in the argument
-window before. If it's @code{nil}, @code{switch-to-prev-buffer} and
+visible on the same frame, provided the buffer was shown in the relevant
+window before. If it is @code{nil}, @code{switch-to-prev-buffer} and
@code{switch-to-next-buffer} always try to avoid switching to a buffer
that is already visible in another window on the same frame.
@end defopt
@@ -2137,7 +2137,7 @@ another buffer in it and iconifies the frame.
This function returns non-@code{nil} if @var{window} is dedicated to its
buffer and @code{nil} otherwise. More precisely, the return value is
the value assigned by the last call of @code{set-window-dedicated-p} for
-@var{window} or @code{nil} if that function was never called with
+@var{window}, or @code{nil} if that function was never called with
@var{window} as its argument. The default for @var{window} is the
selected window.
@end defun
@@ -2158,20 +2158,20 @@ non-@code{nil} value.
@node Quitting Windows
@section Quitting Windows
-When you want to get rid of a window used for displaying a buffer you
+When you want to get rid of a window used for displaying a buffer, you
can call @code{delete-window} or @code{delete-windows-on}
(@pxref{Deleting Windows}) to remove that window from its frame. If the
buffer is shown on a separate frame, you might want to call
@code{delete-frame} (@pxref{Deleting Frames}) instead. If, on the other
hand, a window has been reused for displaying the buffer, you might
-prefer showing the buffer previously shown in that window by calling the
+prefer showing the buffer previously shown in that window, by calling the
function @code{switch-to-prev-buffer} (@pxref{Window History}).
Finally, you might want to either bury (@pxref{The Buffer List}) or kill
(@pxref{Killing Buffers}) the window's buffer.
The following function uses information on how the window for
-displaying the buffer was obtained in the first place thus attempting to
-automatize the above decisions for you.
+displaying the buffer was obtained in the first place, thus attempting to
+automate the above decisions for you.
@deffn Command quit-window &optional kill window
This command quits @var{window} and buries its buffer. The argument
@@ -2199,39 +2199,39 @@ restore the original height of @var{window}.
The three cases described so far require that the buffer shown in
@var{window} is still the buffer displayed by the last buffer display
function for this window. If another buffer has been shown in the
-meantime or the buffer previously shown no longer exists, this command
+meantime, or the buffer previously shown no longer exists, this command
calls @code{switch-to-prev-buffer} (@pxref{Window History}) to show some
other buffer instead.
@end deffn
The function @code{quit-window} bases its decisions on information
stored in @var{window}'s @code{quit-restore} window parameter
-(@pxref{Window Parameters}) and resets that parameter to @code{nil}
+(@pxref{Window Parameters}), and resets that parameter to @code{nil}
after it's done.
The following option specifies how to deal with a frame containing just
-one window that shall be either quit or whose buffer shall be buried.
+one window that should be either quit, or whose buffer should be buried.
@defopt frame-auto-hide-function
The function specified by this option is called to automatically hide
-frames. This function is called with one argument - a frame.
+frames. This function is called with one argument---a frame.
The function specified here is called by @code{bury-buffer} (@pxref{The
Buffer List}) when the selected window is dedicated and shows the buffer
-that shall be buried. It is also called by @code{quit-window} (see
-above) when the frame of the window that shall be quit has been
+that should be buried. It is also called by @code{quit-window} (see
+above) when the frame of the window that should be quit has been
specially created for displaying that window's buffer and the buffer
-shall be buried.
+should be buried.
The default is to call @code{iconify-frame} (@pxref{Visibility of
-Frames}). Alternatively, you may either specify @code{delete-frame}
+Frames}). Alternatively, you may specify either @code{delete-frame}
(@pxref{Deleting Frames}) to remove the frame from its display,
@code{ignore} to leave the frame unchanged, or any other function that
can take a frame as its sole argument.
Note that the function specified by this option is called if and only if
-there's at least one other frame on the terminal of the frame it's
-supposed to handle and that frame contains only one live window.
+there is at least one other frame on the terminal of the frame it's
+supposed to handle, and that frame contains only one live window.
@end defopt
@@ -2321,14 +2321,7 @@ command to a key.
@cindex window top line
This function returns the display-start position of window
@var{window}. If @var{window} is @code{nil}, the selected window is
-used. For example,
-
-@example
-@group
-(window-start)
- @result{} 7058
-@end group
-@end example
+used.
When you create a window, or display a different buffer in it, the
display-start position is set to a display-start position recently used
@@ -2340,9 +2333,6 @@ it explicitly since the previous redisplay)---to make sure point appears
on the screen. Nothing except redisplay automatically changes the
window-start position; if you move point, do not expect the window-start
position to change in response until after the next redisplay.
-
-For a realistic example of using @code{window-start}, see the
-description of @code{count-lines}. @xref{Definition of count-lines}.
@end defun
@cindex window end position
@@ -2516,12 +2506,16 @@ commands move the paper up and down. Thus, if you are looking at the
middle of a buffer and repeatedly call @code{scroll-down}, you will
eventually see the beginning of the buffer.
- Some people have urged that the opposite convention be used: they
+ Unfortunately, this sometimes causes confusion, because some people
+tend to think in terms of the opposite convention: they
imagine the window moving over text that remains in place, so that
``down'' commands take you to the end of the buffer. This convention
is consistent with fact that such a command is bound to a key named
-@key{PageDown} on modern keyboards. We have not switched to this
-convention as that is likely to break existing Emacs Lisp code.
+@key{PageDown} on modern keyboards.
+@ignore
+We have not switched to this convention as that is likely to break
+existing Emacs Lisp code.
+@end ignore
Textual scrolling functions (aside from @code{scroll-other-window})
have unpredictable results if the current buffer is not the one
@@ -2551,13 +2545,8 @@ signals an error. Otherwise, it returns @code{nil}.
This function scrolls backward by @var{count} lines in the selected
window.
-If @var{count} is negative, it scrolls forward instead. If
-@var{count} is omitted or @code{nil}, the distance scrolled is
-@code{next-screen-context-lines} lines less than the height of the
-window's text area.
-
-If the selected window cannot be scrolled any further, this function
-signals an error. Otherwise, it returns @code{nil}.
+If @var{count} is negative, it scrolls forward instead. In other
+respects, it behaves the same way as @code{scroll-up} does.
@end deffn
@deffn Command scroll-up-command &optional count
@@ -2587,8 +2576,8 @@ already displayed, @code{scroll-other-window} displays it in some
window.
When the selected window is the minibuffer, the next window is normally
-the one at the top left corner. You can specify a different window to
-scroll, when the minibuffer is selected, by setting the variable
+the leftmost one immediately above it. You can specify a different
+window to scroll, when the minibuffer is selected, by setting the variable
@code{minibuffer-scroll-window}. This variable has no effect when any
other window is selected. When it is non-@code{nil} and the
minibuffer is selected, it takes precedence over
@@ -2600,7 +2589,7 @@ window is the one at the bottom right corner. In this case,
@code{scroll-other-window} attempts to scroll the minibuffer. If the
minibuffer contains just one line, it has nowhere to scroll to, so the
line reappears after the echo area momentarily displays the message
-@samp{Beginning of buffer}.
+@samp{End of buffer}.
@end deffn
@defvar other-window-scroll-buffer
@@ -2699,12 +2688,12 @@ If @var{count} is a non-negative number, that puts the line containing
point @var{count} lines down from the top of the window. If
@var{count} is a negative number, then it counts upward from the
bottom of the window, so that @minus{}1 stands for the last usable
-line in the window. If @var{count} is a non-@code{nil} list, then it
-stands for the line in the middle of the window.
+line in the window.
-If @var{count} is @code{nil}, @code{recenter} puts the line containing
-point in the middle of the window, then clears and redisplays the entire
-selected frame.
+If @var{count} is @code{nil} (or a non-@code{nil} list),
+@code{recenter} puts the line containing point in the middle of the
+window. If @var{count} is @code{nil}, this function may redraw the
+frame, according to the value of @code{recenter-redisplay}.
When @code{recenter} is called interactively, @var{count} is the raw
prefix argument. Thus, typing @kbd{C-u} as the prefix sets the
@@ -2713,22 +2702,32 @@ prefix argument. Thus, typing @kbd{C-u} as the prefix sets the
top.
With an argument of zero, @code{recenter} positions the current line at
-the top of the window. This action is so handy that some people make a
-separate key binding to do this. For example,
+the top of the window. The command @code{recenter-top-bottom} offers
+a more convenient way to achieve this.
+@end deffn
-@example
-@group
-(defun line-to-top-of-window ()
- "Scroll current line to top of window.
-Replaces three keystroke sequence C-u 0 C-l."
- (interactive)
- (recenter 0))
+@defopt recenter-redisplay
+If this variable is non-@code{nil}, calling @code{recenter} with a
+@code{nil} argument redraws the frame. The default value is
+@code{tty}, which means only redraw the frame if it is a tty frame.
+@end defopt
-(global-set-key [kp-multiply] 'line-to-top-of-window)
-@end group
-@end example
+@deffn Command recenter-top-bottom &optional count
+This command, which is the default binding for @kbd{C-l}, acts like
+@code{recenter}, except if called with no argument. In that case,
+successive calls place point according to the cycling order defined
+by the variable @code{recenter-positions}.
@end deffn
+@defopt recenter-positions
+This variable controls how @code{recenter-top-bottom} behaves when
+called with no argument. The default value is @code{(middle top
+bottom)}, which means that successive calls of
+@code{recenter-top-bottom} with no argument cycle between placing
+point at the middle, top, and bottom of the window.
+@end defopt
+
+
@node Vertical Scrolling
@section Vertical Fractional Scrolling
@cindex vertical fractional scrolling
@@ -2817,8 +2816,8 @@ times the normal character width. How many characters actually
disappear off to the left depends on their width, and could vary from
line to line.
- Because we read from side to side in the ``inner loop,'' and from top
-to bottom in the ``outer loop,'' the effect of horizontal scrolling is
+ Because we read from side to side in the ``inner loop'', and from top
+to bottom in the ``outer loop'', the effect of horizontal scrolling is
not like that of textual or vertical scrolling. Textual scrolling
involves selection of a portion of text to display, and vertical
scrolling moves the window contents contiguously; but horizontal
@@ -3014,7 +3013,7 @@ frame.
@defun coordinates-in-window-p coordinates window
This function checks whether a window @var{window} occupies the
-frame-relative coordinates @var{coordinates}, and if so which part of
+frame-relative coordinates @var{coordinates}, and if so, which part of
the window that is. @var{window} should be a live window.
@var{coordinates} should be a cons cell of the form @code{(@var{x}
. @var{y})}, where @var{x} and @var{y} are frame-relative coordinates.
@@ -3112,14 +3111,14 @@ for the current buffer.
You can bring back an entire frame layout by restoring a previously
saved window configuration. If you want to record the layout of all
frames instead of just one, use a frame configuration instead of a
-window configuration; see @ref{Frame Configurations}.
+window configuration. @xref{Frame Configurations}.
@defun current-window-configuration &optional frame
This function returns a new object representing @var{frame}'s current
window configuration. The default for @var{frame} is the selected
frame. The variable @code{window-persistent-parameters} specifies
-whether and which window parameters are saved by this function, see
-@ref{Window Parameters} for details.
+which window parameters (if any) are saved by this function.
+@xref{Window Parameters}.
@end defun
@defun set-window-configuration configuration
@@ -3136,9 +3135,9 @@ change and triggers execution of the @code{window-size-change-functions}
know how to tell whether the new configuration actually differs from the
old one.
-If the frame which @var{configuration} was saved from is dead, all this
+If the frame from which @var{configuration} was saved is dead, all this
function does is restore the three variables @code{window-min-height},
-@code{window-min-width} and @code{minibuffer-scroll-window}. In this
+@code{window-min-width} and @code{minibuffer-scroll-window}. In this
case, the function returns @code{nil}. Otherwise, it returns @code{t}.
Here is a way of using this function to get the same effect
@@ -3221,8 +3220,8 @@ configurations.
The objects returned by @code{current-window-configuration} die
together with the Emacs process. In order to store a window
-configuration on disk and read it back in another Emacs session, the
-functions described next can be used. These functions are also useful
+configuration on disk and read it back in another Emacs session, you
+can use the functions described next. These functions are also useful
to clone the state of a frame into an arbitrary live window
(@code{set-window-configuration} effectively clones the windows of a
frame into the root window of that very frame only).
@@ -3235,17 +3234,17 @@ of the selected frame.
If the optional argument @var{writable} is non-@code{nil}, this means to
not use markers for sampling positions like @code{window-point} or
@code{window-start}. This argument should be non-@code{nil} when the
-state shall be written to disk and read back in another session.
+state will be written to disk and read back in another session.
Together, the argument @var{writable} and the variable
@code{window-persistent-parameters} specify which window parameters are
-saved by this function, see @ref{Window Parameters} for details.
+saved by this function. @xref{Window Parameters}.
@end defun
The value returned by @code{window-state-get} can be used in the same
session to make a clone of a window in another window. It can be also
written to disk and read back in another session. In either case, use
-the function described next to restore the state of the window.
+the following function to restore the state of the window.
@defun window-state-put state &optional window ignore
This function puts the window state @var{state} into @var{window}. The
@@ -3254,9 +3253,9 @@ earlier invocation of @code{window-state-get}, see above. The optional
argument @var{window} must specify a live window and defaults to the
selected one.
-The optional argument @var{ignore} non-@code{nil} means to ignore
-minimum window sizes and fixed size restrictions. If @var{ignore}
-equals @code{safe}, this means windows can get as small as one line
+If the optional argument @var{ignore} is non-@code{nil}, it means to ignore
+minimum window sizes and fixed-size restrictions. If @var{ignore}
+is @code{safe}, this means windows can get as small as one line
and/or two columns.
@end defun
@@ -3276,8 +3275,8 @@ setting for @var{parameter}, this function returns @code{nil}.
@defun window-parameters &optional window
This function returns all parameters of @var{window} and their values.
-The default for @var{window} is the selected window. The return value,
-if non-@code{nil} is an association list whose elements have the form
+The default for @var{window} is the selected window. The return value
+is either @code{nil}, or an association list whose elements have the form
@code{(@var{parameter} . @var{value})}.
@end defun
@@ -3287,34 +3286,34 @@ This function sets @var{window}'s value of @var{parameter} to
is the selected window.
@end defun
-By default, functions saving and restoring window configurations or the
+By default, the functions that save and restore window configurations or the
states of windows (@pxref{Window Configurations}) do not care about
-window parameters. This means, that when you change the value of a
+window parameters. This means that when you change the value of a
parameter within the body of a @code{save-window-excursion}, the
-previous value is not restored upon exit of that macro. It also means
+previous value is not restored when that macro exits. It also means
that when you restore via @code{window-state-put} a window state saved
earlier by @code{window-state-get}, all cloned windows have their
-parameters reset to @code{nil}. The following variable allows to
-override the standard behavior.
+parameters reset to @code{nil}. The following variable allows you to
+override the standard behavior:
@defvar window-persistent-parameters
This variable is an alist specifying which parameters get saved by
-@code{current-window-configuration} and @code{window-state-get} and
+@code{current-window-configuration} and @code{window-state-get}, and
subsequently restored by @code{set-window-configuration} and
-@code{window-state-put}, see @ref{Window Configurations}.
+@code{window-state-put}. @xref{Window Configurations}.
-The @sc{car} of each entry of this alist is the symbol specifying the
+The @sc{car} of each entry of this alist is a symbol specifying the
parameter. The @sc{cdr} should be one of the following:
@table @asis
@item @code{nil}
-This value means the parameter is neither saved by
+This value means the parameter is saved neither by
@code{window-state-get} nor by @code{current-window-configuration}.
@item @code{t}
This value specifies that the parameter is saved by
-@code{current-window-configuration} and, provided its @var{writable}
-argument is @code{nil}, by @code{window-state-get}.
+@code{current-window-configuration} and (provided its @var{writable}
+argument is @code{nil}) by @code{window-state-get}.
@item @code{writable}
This means that the parameter is saved unconditionally by both
@@ -3325,8 +3324,8 @@ may fail with an @code{invalid-read-syntax} error.
@end table
@end defvar
-Some functions, notably @code{delete-window},
-@code{delete-other-windows} and @code{split-window} may behave specially
+Some functions (notably @code{delete-window},
+@code{delete-other-windows} and @code{split-window}), may behave specially
when their @var{window} argument has a parameter set. You can override
such special behavior by binding the following variable to a
non-@code{nil} value:
@@ -3334,7 +3333,7 @@ non-@code{nil} value:
@defvar ignore-window-parameters
If this variable is non-@code{nil}, some standard functions do not
process window parameters. The functions currently affected by this are
-@code{split-window}, @code{delete-window}, @code{delete-other-windows}
+@code{split-window}, @code{delete-window}, @code{delete-other-windows},
and @code{other-window}.
An application can bind this variable to a non-@code{nil} value around
@@ -3368,18 +3367,19 @@ This parameter marks the window as not selectable by @code{other-window}
(@pxref{Cyclic Window Ordering}).
@item @code{clone-of}
-This parameter specifies the window this one has been cloned from and is
-installed by @code{window-state-get}, see @ref{Window Configurations}.
+This parameter specifies the window that this one has been cloned
+from. It is installed by @code{window-state-get} (@pxref{Window
+Configurations}).
@item @code{quit-restore}
-This parameter tells how to proceed with a window when the buffer it
-shows is no more needed. It is installed by the buffer display
-functions (@pxref{Choosing Window}) and consulted by the function
+This parameter specifies what to do with a window when the buffer it
+shows is not needed any more. It is installed by the buffer display
+functions (@pxref{Choosing Window}), and consulted by the function
@code{quit-window} (@pxref{Quitting Windows}).
@end table
-In addition, the parameters @code{window-atom} and @code{window-side}
-are reserved and should not be used by applications.
+There are additional parameters @code{window-atom} and @code{window-side};
+these are reserved and should not be used by applications.
@node Window Hooks
@@ -3401,7 +3401,7 @@ the window also runs these functions.
This variable is not a normal hook, because each function is called with
two arguments: the window, and its new display-start position.
-These functions must be careful in using @code{window-end}
+These functions must take care when using @code{window-end}
(@pxref{Window Start and End}); if you need an up-to-date value, you
must use the @var{update} argument to ensure you get it.
@@ -3439,7 +3439,7 @@ of an existing frame. This includes splitting or deleting windows,
changing the sizes of windows, or displaying a different buffer in a
window.
-The buffer-local part of this hook is run once per each window on the
+The buffer-local part of this hook is run once for each window on the
affected frame, with the relevant window selected and its buffer
current. The global part is run once for the modified frame, with that
frame selected.