]> git.eshelyaron.com Git - emacs.git/commitdiff
*** empty log message ***
authorRichard M. Stallman <rms@gnu.org>
Tue, 26 May 1998 18:56:56 +0000 (18:56 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 26 May 1998 18:56:56 +0000 (18:56 +0000)
33 files changed:
lispref/advice.texi
lispref/anti.texi
lispref/backups.texi
lispref/buffers.texi
lispref/calendar.texi
lispref/commands.texi
lispref/customize.texi
lispref/debugging.texi
lispref/display.texi
lispref/edebug.texi
lispref/elisp.texi
lispref/errors.texi
lispref/frames.texi
lispref/help.texi
lispref/intro.texi
lispref/keymaps.texi
lispref/loading.texi
lispref/markers.texi
lispref/minibuf.texi
lispref/modes.texi
lispref/nonascii.texi
lispref/os.texi
lispref/positions.texi
lispref/processes.texi
lispref/searching.texi
lispref/sequences.texi
lispref/streams.texi
lispref/strings.texi
lispref/syntax.texi
lispref/text.texi
lispref/tips.texi
lispref/variables.texi
lispref/windows.texi

index 3d61ae41c38ed460660fc9a941a94712ceea1eff..24ddb628941f040b9898b0427507d24ef34ed79a 100644 (file)
@@ -12,10 +12,12 @@ function, by @dfn{advising the function}.  This is a clean method for a
 library to customize functions defined by other parts of Emacs---cleaner
 than redefining the whole function.
 
-  Each piece of advice can be enabled or disabled explicitly.  The
-enabled pieces of advice for any given function actually take effect
-when you activate advice for that function, or when that function is
-subsequently defined or redefined.
+@cindex piece of advice
+  Each function can have multiple @dfn{pieces of advice}, separately
+defined.  Each defined piece of advice can be enabled or disabled
+explicitly.  The enabled pieces of advice for any given function
+actually take effect when you @dfn{activate} advice for that function, or when
+that function is subsequently defined or redefined.
 
   @strong{Usage Note:} Advice is useful for altering the behavior of
 existing calls to an existing function.  If you want the new behavior
@@ -25,12 +27,13 @@ function (or a new command) which uses the existing function.
 @menu
 * Simple Advice::           A simple example to explain the basics of advice.
 * Defining Advice::         Detailed description of @code{defadvice}.
+* Around-Advice::           Wrapping advice around a function's definition.
 * Computed Advice::         ...is to @code{defadvice} as @code{fset} is to @code{defun}.
 * Activation of Advice::    Advice doesn't do anything until you activate it.
 * Enabling Advice::         You can enable or disable each piece of advice.
 * Preactivation::           Preactivation is a way of speeding up the
                               loading of compiled advice.
-* Argument Access::         How advice can access the function's arguments.
+* Argument Access in Advice:: How advice can access the function's arguments.
 * Subr Arguments::          Accessing arguments when advising a primitive.
 * Combined Definition::     How advice is implemented.
 @end menu
@@ -63,7 +66,6 @@ this:
         (newline))))
 @end example
 
-@cindex piece of advice
   This expression defines a @dfn{piece of advice} for the function
 @code{previous-line}.  This piece of advice is named
 @code{next-line-at-end}, and the symbol @code{before} says that it is
@@ -100,10 +102,12 @@ expression to wrap around the invocation of the base definition.
 
 @node Defining Advice
 @section Defining Advice
+@cindex defining advice
+@cindex advice, defining
 
   To define a piece of advice, use the macro @code{defadvice}.  A call
 to @code{defadvice} has the following syntax, which is based on the
-syntax of @code{defun}/@code{defmacro} but adds more:
+syntax of @code{defun} and @code{defmacro}, but adds more:
 
 @findex defadvice
 @example
@@ -132,14 +136,13 @@ wrapped around the execution of the function itself.  After-advice and
 around-advice can override the return value by setting
 @code{ad-return-value}.
 
-Around-advice specifies where the ``original'' function definition
-should go by means of the special symbol @code{ad-do-it}.  Where this
-symbol occurs inside the around-advice body, it is replaced with a
-@code{progn} containing the forms of the surrounded code.  If the
-around-advice does not use @code{ad-do-it}, then the original function
-definition is never run.  This provides a way to override the original
-definition completely.  (It also overrides lower-positioned pieces of
-around-advice).
+@defvar ad-return-value
+While advice is executing, after the function's original definition has
+been executed, this variable holds its return value, which will
+ultimately be returned to the caller after finishing all the advice.
+After-advice and around-advice can arrange to return some other value
+by storing it in this variable.
+@end defvar
 
 The argument @var{name} is the name of the advice, a non-@code{nil}
 symbol.  The advice name uniquely identifies one piece of advice, within all
@@ -152,11 +155,12 @@ definition calls for several different pieces of information.
 
 The optional @var{position} specifies where, in the current list of
 advice of the specified @var{class}, this new advice should be placed.
-It should be either @code{first}, @code{last} or a number that
-specifies a zero-based position (@code{first} is equivalent to 0).  If
-no position is specified, the default is @code{first}.  The
-@var{position} value is ignored when redefining an existing piece of
-advice.
+It should be either @code{first}, @code{last} or a number that specifies
+a zero-based position (@code{first} is equivalent to 0).  If no position
+is specified, the default is @code{first}.  Position values outside the
+range of existing positions in this class are mapped to the beginning or
+the end of the range, whichever is closer.  The @var{position} value is
+ignored when redefining an existing piece of advice.
 
 The optional @var{arglist} can be used to define the argument list for
 the sake of advice.  This becomes the argument list of the combined
@@ -168,12 +172,11 @@ This argument list must be compatible with the argument list of the
 original function, so that it can handle the ways the function is
 actually called.  If more than one piece of advice specifies an argument
 list, then the first one (the one with the smallest position) found in
-the list of all classes of advice is used.  Numbers outside the range
-are mapped to the beginning or the end, whichever is closer.
+the list of all classes of advice is used.
 
-The remaining elements, @var{flags}, is a list of symbols that specify
-further information about how to use this piece of advice.  Here are the
-valid symbols and their meanings:
+The remaining elements, @var{flags}, are symbols that specify further
+information about how to use this piece of advice.  Here are the valid
+symbols and their meanings:
 
 @table @code
 @item activate
@@ -190,8 +193,8 @@ activate an undefined function's advice.  However, defining
 
 @item protect
 Protect this piece of advice against non-local exits and errors in
-preceding code and advice.  Protecting advice makes it a cleanup in an
-@code{unwind-protect} form, so that it will execute even if the
+preceding code and advice.  Protecting advice places it as a cleanup in
+an @code{unwind-protect} form, so that it will execute even if the
 previous code gets an error or uses @code{throw}.  @xref{Cleanups}.
 
 @item compile
@@ -233,6 +236,38 @@ expanded when a program is compiled, not when a compiled program is run.
 All subroutines used by the advice need to be available when the byte
 compiler expands the macro.
 
+@node Around-Advice
+@section Around-Advice
+
+  Around-advice lets you ``wrap'' a Lisp expression ``around'' the
+original function definition.  You specify where the original function
+definition should go by means of the special symbol @code{ad-do-it}.
+Where this symbol occurs inside the around-advice body, it is replaced
+with a @code{progn} containing the forms of the surrounded code.  Here
+is an example:
+
+@example
+(defadvice foo (around foo-around)
+  "Ignore case in `foo'."
+  (let ((case-fold-search t))
+    ad-do-it))
+@end example
+
+@noindent
+Its effect is to make sure that case is ignored in
+searches when the original definition of @code{foo} is run.
+
+@defvar ad-do-it
+This is not really a variable, but it is somewhat used like one
+in around-advice.  It specifies the place to run the function's
+original definition and other ``earlier'' around-advice.
+@end defvar
+
+If the around-advice does not use @code{ad-do-it}, then it does not run
+the original function definition.  This provides a way to override the
+original definition completely.  (It also overrides lower-positioned
+pieces of around-advice).
+
 @node Computed Advice
 @section Computed Advice
 
@@ -270,6 +305,7 @@ replaced with the new one.
 @node Activation of Advice
 @section Activation of Advice
 @cindex activating advice
+@cindex advice, activating
 
 By default, advice does not take effect when you define it---only when
 you @dfn{activate} advice for the function that was advised.  You can
@@ -302,10 +338,13 @@ This command activates the advice for @var{function}.
 
 To activate advice for a function whose advice is already active is not
 a no-op.  It is a useful operation which puts into effect any changes in
-advice since the previous activation of that function's advice.
+that function's advice since the previous activation of advice for that
+function.
 
 @deffn Command ad-deactivate function
 This command deactivates the advice for @var{function}.
+@cindex deactivating advice
+@cindex advice, deactivating
 @end deffn
 
 @deffn Command ad-activate-all &optional compile
@@ -323,7 +362,7 @@ which has at least one piece of advice that matches @var{regexp}.
 @end deffn
 
 @deffn Command ad-deactivate-regexp regexp
-This command deactivates the advice for all functions whose names match
+This command deactivates all pieces of advice whose names match
 @var{regexp}.  More precisely, it deactivates all advice for any
 function which has at least one piece of advice that matches
 @var{regexp}.
@@ -332,6 +371,7 @@ function which has at least one piece of advice that matches
 @deffn Command ad-update-regexp regexp &optional compile
 This command activates pieces of advice whose names match @var{regexp},
 but only those for functions whose advice is already activated.
+@cindex reactivating advice
 
 Reactivating a function's advice is useful for putting into effect all
 the changes that have been made in its advice (including enabling and
@@ -355,17 +395,20 @@ This variable controls whether to compile the combined definition
 that results from activating advice for a function.
 @end defopt
 
-  If the advised definition was constructed during ``preactivation'' (see
-below), then that definition must already be compiled, because it was
-constructed during byte-compilation of the file that contained the
-@code{defadvice} with the @code{preactivate} flag.
+  If the advised definition was constructed during ``preactivation''
+(@pxref{Preactivation}), then that definition must already be compiled,
+because it was constructed during byte-compilation of the file that
+contained the @code{defadvice} with the @code{preactivate} flag.
 
 @node Enabling Advice
 @section Enabling and Disabling Advice
+@cindex enabling advice
+@cindex advice, enabling and disabling
+@cindex disabling advice
 
   Each piece of advice has a flag that says whether it is enabled or
-not.  By enabling or disabling a piece of advice, you can turn it off
-and on without having to undefine and redefine it.  For example, here is
+not.  By enabling or disabling a piece of advice, you can turn it on
+and off without having to undefine and redefine it.  For example, here is
 how to disable a particular piece of advice named @code{my-advice} for
 the function @code{foo}:
 
@@ -373,7 +416,7 @@ the function @code{foo}:
 (ad-disable-advice 'foo 'before 'my-advice)
 @end example
 
-This function by itself only changes the enable flag for a piece of
+  This function by itself only changes the enable flag for a piece of
 advice.  To make the change take effect in the advised definition, you
 must activate the advice for @code{foo} again:
 
@@ -408,6 +451,8 @@ This command enables all pieces of advice whose names match
 
 @node Preactivation
 @section Preactivation
+@cindex preactivating advice
+@cindex advice, preactivating
 
   Constructing a combined definition to execute advice is moderately
 expensive.  When a library advises many functions, this can make loading
@@ -486,7 +531,7 @@ for that function.
   A more robust method is to use macros that are translated into the
 proper access forms at activation time, i.e., when constructing the
 advised definition.  Access macros access actual arguments by position
-regardless of how these actual argument get distributed onto the
+regardless of how these actual arguments get distributed onto the
 argument variables of a function.  This is robust because in Emacs Lisp
 the meaning of an argument is strictly determined by its position in the
 argument list.
index d93e99cf962b790e07b5390b1813e2fc027d8978..d9873088f17d9a09f4d617d122d1dadfbf92745d 100644 (file)
@@ -73,7 +73,7 @@ or the strings are not equal.
 or specified padding.
 
 @item
-The functions @code{split-string} and @code{concat-chars} no longer exist.
+The functions @code{split-string} and @code{string} no longer exist.
 Neither does @code{store-substring} or @code{sref}.
 
 @item
index 3cdd88d5c08b3f3884a2cfff785b35778a62c6c0..e18c2ba78268c0272ab96ad21881fc0dccc9c57f 100644 (file)
@@ -588,17 +588,17 @@ about them, you can get rid of them by reading in the previous version
 of the file with the @code{revert-buffer} command.  @xref{Reverting, ,
 Reverting a Buffer, emacs, The GNU Emacs Manual}.
 
-@deffn Command revert-buffer &optional check-auto-save noconfirm
+@deffn Command revert-buffer &optional ignore-auto noconfirm
 This command replaces the buffer text with the text of the visited
 file on disk.  This action undoes all changes since the file was visited
 or saved.
 
-If the argument @var{check-auto-save} is non-@code{nil}, and the
-latest auto-save file is more recent than the visited file,
-@code{revert-buffer} asks the user whether to use that instead.
-Otherwise, it always uses the text of the visited file itself.
-Interactively, @var{check-auto-save} is set if there is a numeric prefix
-argument.
+By default, if the latest auto-save file is more recent than the visited
+file, @code{revert-buffer} asks the user whether to use that instead.
+But if the argument @var{ignore-auto} is non-@code{nil}, then only the
+the visited file itself is used.  Interactively, @var{ignore-auto} is
+@code{t} unless there is a numeric prefix argument; thus, the
+interactive default is to check the auto-save file.
 
 Normally, @code{revert-buffer} asks for confirmation before it changes
 the buffer; but if the argument @var{noconfirm} is non-@code{nil},
@@ -616,6 +616,14 @@ buffer.  Preserving any additional markers would be problematical.
 You can customize how @code{revert-buffer} does its work by setting
 these variables---typically, as buffer-local variables.
 
+@defvar revert-without-query
+This variable holds a list of files that should be reverted without
+query.  The value is a list of regular expressions.  If a file name
+matches one of these regular expressions, then @code{revert-buffer}
+reverts the file without asking the user for confirmation, if the file
+has changed on disk and the buffer is not modified.
+@end defvar
+
 @defvar revert-buffer-function
 The value of this variable is the function to use to revert this buffer.
 If non-@code{nil}, it is called as a function with no arguments to do
index c54f1e6b9b0ec28dfe67419148dde3a354a33c95..f1227d60705cfdf8f8fb15552dd4c52473739fa4 100644 (file)
@@ -213,7 +213,7 @@ If the buffer that used to be current has been killed by the time of
 exit from @code{save-current-buffer}, then it is not made current again,
 of course.  Instead, whichever buffer was current just before exit
 remains current.
-@end defmac
+@end defspec
 
 @defmac with-current-buffer buffer body...
 @tindex with-current-buffer
@@ -427,7 +427,7 @@ the same file name.  In such cases, this function returns the first
 such buffer in the buffer list.
 @end defun
 
-@deffn Command set-visited-file-name filename
+@deffn Command set-visited-file-name filename &optional no-query along-with-file
 If @var{filename} is a non-empty string, this function changes the
 name of the file visited in current buffer to @var{filename}.  (If the
 buffer had no visited file, this gives it one.)  The @emph{next time}
@@ -440,6 +440,13 @@ 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
 the buffer as having no visited file.
 
+Normally, this function asks the user for confirmation if the specified
+file already exists.  If @var{no-query} is non-@code{nil}, that prevents
+asking this question.
+
+If @var{along-with-file} is non-@code{nil}, that means to assume that the
+former visited file has been renamed to @var{filename}.
+
 @c Wordy to avoid overfull hbox.  --rjc 16mar92
 When the function @code{set-visited-file-name} is called interactively, it
 prompts for @var{filename} in the minibuffer.
@@ -723,21 +730,21 @@ live buffer.
 @code{buffer-list} frame parameter with @code{modify-frame-parameters}
 (@pxref{Parameter Access}).
 
-@defun other-buffer &optional buffer visible-ok
+@defun other-buffer &optional buffer visible-ok frame
 This function returns the first buffer in the buffer list other than
-@var{buffer}.  Usually this is the buffer selected most recently (in the
-currently selected frame), aside from @var{buffer}.  Buffers whose names
-start with a space are not considered at all.
+@var{buffer}.  Usually this is the buffer selected most recently (in
+frame @var{frame} or else the currently selected frame), aside from
+@var{buffer}.  Buffers whose names start with a space are not considered
+at all.
 
 If @var{buffer} is not supplied (or if it is not a buffer), then
 @code{other-buffer} returns the first buffer in the selected frame's
 buffer list that is not now visible in any window in a visible frame.
 
-If the selected frame has a non-@code{nil} @code{buffer-predicate}
-parameter, then @code{other-buffer} uses that predicate to decide which
-buffers to consider.  It calls the predicate once for each buffer, and
-if the value is @code{nil}, that buffer is ignored.  @xref{Window Frame
-Parameters}.
+If @var{frame} has a non-@code{nil} @code{buffer-predicate} parameter,
+then @code{other-buffer} uses that predicate to decide which buffers to
+consider.  It calls the predicate once for each buffer, and if the value
+is @code{nil}, that buffer is ignored.  @xref{Window Frame Parameters}.
 
 @c Emacs 19 feature
 If @var{visible-ok} is @code{nil}, @code{other-buffer} avoids returning
index ff1fec3cffcd9ff1fc45248db0acf6abed1d2741..171f6a2263a68d7aa95009939dca97aa8b28bd24 100644 (file)
@@ -577,7 +577,7 @@ HHeshvan 25 Happy Hebrew birthday!
 
 @noindent
 and would appear in the diary for any date that corresponds to Heshvan 25
-on the Hebrew calendar.  And here is  Islamic-date diary entry  that matches
+on the Hebrew calendar.  And here is an Islamic-date diary entry that matches
 Dhu al-Qada 25:
 
 @smallexample
@@ -668,7 +668,7 @@ shown in the fancy diary buffer, set the variable
 @cindex sorting diary entries
   If you use the fancy diary display, you can use the normal hook
 @code{list-diary-entries-hook} to sort each day's diary entries by their
-time of day.  Here's how
+time of day.  Here's how:
 
 @findex sort-diary-entries
 @example
index 49c9d3c16e357fde69483c9e63c9fdf701179e93..7690b4e1497939d6dbe37b5c14e1c759ed983a99 100644 (file)
@@ -1589,7 +1589,7 @@ buffer position.  Here's how to do that:
       (- (point-max) (point-min))))
 @end example
 
-Recall that scroll bar events have two integers forming ratio in place
+Recall that scroll bar events have two integers forming a ratio, in place
 of a pair of x and y coordinates.
 @end defun
 
@@ -1652,7 +1652,8 @@ and such numbers cannot be included in a string.
 
   To support programs with @samp{\M-} in string constants, there are
 special rules for including certain meta characters in a string.
-Here are the rules for interpreting keyboard
+Here are the rules for interpreting a string as a sequence of input
+characters:
 
 @itemize @bullet
 @item
@@ -1854,7 +1855,7 @@ If @code{cursor-in-echo-area} is non-@code{nil}, then @code{read-event}
 moves the cursor temporarily to the echo area, to the end of any message
 displayed there.  Otherwise @code{read-event} does not move the cursor.
 
-If @code{read-event} gets an event is defined as a help character, in
+If @code{read-event} gets an event that is defined as a help character, in
 some cases @code{read-event} processes the event directly without
 returning.  @xref{Help Functions}.  Certain other events, called
 @dfn{special events}, are also processed directly within
@@ -1948,7 +1949,8 @@ What character-@kbd{177}
 
 This section describes how to ``peek ahead'' at events without using
 them up, how to check for pending input, and how to discard pending
-input.
+input.  See also the function @code{read-passwd} (@pxref{Reading a
+Password}).
 
 @defvar unread-command-events
 @cindex next input
index dffd3de49a35fc15f53ad505cf646dbc77131295..f581fc423458ff307b148adf048a7bb524a58a4a 100644 (file)
@@ -372,9 +372,9 @@ The value must be a directory name, and you can do completion with
 @item hook
 The value must be a list of functions (or a single function, but that is
 obsolete usage).  This customization type is used for hook variables.
-You can use the @code{:option} in the @code{defcustom} for a hook
-variable to specify functions recommended for use in the hook;
-see @ref{Variable Definitions}.
+You can use the @code{:options} keyword in a hook variable's
+@code{defcustom} to specify a list of functions recommended for use in
+the hook; see @ref{Variable Definitions}.
 
 @item symbol
 The value must be a symbol.  It appears in the customization buffer as
index 8e5ed2834a53230d0f16e970129693dd518ec665..6f46c37c21f57caf85e6e236510f071b132b6013 100644 (file)
@@ -124,7 +124,7 @@ the debugger gets a chance.
 If you set @code{debug-on-signal} to a non-@code{nil} value, then the
 debugger gets the first chance at every error; an error will invoke the
 debugger regardless of any @code{condition-case}, if it fits the
-criterion specified by the values of @code{debug-on-error} and
+criteria specified by the values of @code{debug-on-error} and
 @code{debug-ignored-errors}.
 
 @strong{Warning:} This variable is strong medicine!  Various parts of
@@ -139,9 +139,9 @@ enter the debugger.
 
   To debug an error that happens during loading of the @file{.emacs}
 file, use the option @samp{--debug-init}, which binds
-@code{debug-on-error} to @code{t} while @file{.emacs} is loaded, and
+@code{debug-on-error} to @code{t} while loading @file{.emacs}, and
 bypasses the @code{condition-case} which normally catches errors in the
-init-file.
+init file.
 
   If your @file{.emacs} file sets @code{debug-on-error}, the effect may
 not last past the end of loading @file{.emacs}.  (This is an undesirable
@@ -737,7 +737,7 @@ the old indentation actually fit the intended nesting of parentheses,
 and you have put back those parentheses, @kbd{C-M-q} should not change
 anything.
 
-@node Compilation Errors, Edebug, Syntax Errors, Debugging
+@node Compilation Errors
 @section Debugging Problems in Compilation
 
   When an error happens during byte compilation, it is normally due to
index 4b09a8b337286880b217ebb1ddfc9c9ffca5f995..e3680f9581524f490eb02c8fbf42b7b45f01c610 100644 (file)
@@ -11,7 +11,6 @@ that Emacs presents to the user.
 
 @menu
 * Refresh Screen::      Clearing the screen and redrawing everything on it.
-* Screen Size::         How big is the Emacs screen.
 * Truncation::          Folding or wrapping long text lines.
 * The Echo Area::       Where messages are displayed.
 * Invisible Text::      Hiding part of the buffer text.
@@ -33,7 +32,7 @@ that Emacs presents to the user.
 @section Refreshing the Screen
 
 The function @code{redraw-frame} redisplays the entire contents of a
-given frame.  @xref{Frames}.
+given frame (@pxref{Frames}).
 
 @c Emacs 19 feature
 @defun redraw-frame frame
@@ -65,65 +64,6 @@ has been suspended and resumed.  Non-@code{nil} means there is no need
 to redraw, @code{nil} means redrawing is needed.  The default is @code{nil}.
 @end defvar
 
-@node Screen Size
-@section Screen Size
-@cindex size of screen
-@cindex screen size
-@cindex display lines
-@cindex display columns
-@cindex resize redisplay
-
-  The screen size functions access or specify the height or width of
-the terminal.  When you are using multiple frames, they apply to the
-selected frame (@pxref{Frames}).
-
-@defun screen-height
-This function returns the number of lines on the screen that are
-available for display.
-
-@example
-@group
-(screen-height)
-     @result{} 50
-@end group
-@end example
-@end defun
-
-@defun screen-width
-This function returns the number of columns on the screen that are
-available for display.
-
-@example
-@group
-(screen-width)
-     @result{} 80
-@end group
-@end example
-@end defun
-
-@defun set-screen-height lines &optional not-actual-size
-This function declares that the terminal can display @var{lines} lines.
-The sizes of existing windows are altered proportionally to fit.
-
-If @var{not-actual-size} is non-@code{nil}, then Emacs displays
-@var{lines} lines of output, but does not change its value for the
-actual height of the screen.  (Knowing the correct actual size may be
-necessary for correct cursor positioning.)  Using a smaller height than
-the terminal actually implements may be useful to reproduce behavior
-observed on a smaller screen, or if the terminal malfunctions when using
-its whole screen.
-
-If @var{lines} is different from what it was previously, then the
-entire screen is cleared and redisplayed using the new size.
-
-This function returns @code{nil}.
-@end defun
-
-@defun set-screen-width columns &optional not-actual-size
-This function declares that the terminal can display @var{columns}
-columns.  The details are as in @code{set-screen-height}.
-@end defun
-
 @node Truncation
 @section Truncation
 @cindex line wrapping
@@ -173,7 +113,7 @@ a window, that forces truncation.
   You can override the glyphs that indicate continuation or truncation
 using the display table; see @ref{Display Tables}.
 
-  If your buffer contains @strong{very} long lines, and you use
+  If your buffer contains @emph{very} long lines, and you use
 continuation to display them, just thinking about them can make Emacs
 redisplay slow.  The column computation and indentation functions also
 become slow.  Then you might find it advisable to set
@@ -395,7 +335,7 @@ overlaps the overlay on exit from the search.
 
   During the search, such overlays are made temporarily visible by
 temporarily modifying their invisible and intangible properties.  If you
-want this to be done differently for a certain overlays, give it a
+want this to be done differently for a certain overlay, give it a
 @code{isearch-open-invisible-temporary} property which is a function.
 The function is called with two arguments: the first is the overlay, and
 the second is @code{t} to make the overlay visible, or @code{nil} to
@@ -1093,7 +1033,7 @@ subsequent elements of @var{spec} are never used.  Normally
 @code{t} is used in the last (or only) element of @var{spec}.
 
 @item a list
-If @var{display} is alist, each elements should have the form
+If @var{display} is a list, each element should have the form
 @code{(@var{characteristic} @var{value}@dots{})}.  Here
 @var{characteristic} specifies a way of classifying frames, and the
 @var{value}s are possible classifications which @var{display} should
@@ -1110,7 +1050,7 @@ What kinds of colors the frame supports---either @code{color},
 @code{grayscale}, or @code{mono}.
 
 @item background
-The kind of background--- either @code{light} or @code{dark}.
+The kind of background---either @code{light} or @code{dark}.
 @end table
 
 If an element of @var{display} specifies more than one @var{value} for a
@@ -1139,6 +1079,15 @@ with @code{defface}:
 with the customization buffer, and @code{face-documentation} for the
 documentation string.
 
+@tindex frame-background-mode
+@defopt frame-background-mode
+This option, if non-@code{nil}, specifies the background type to use for
+interpreting face definitions.  If it is @code{dark}, then Emacs treats
+all frames as if they had a dark background, regardless of their actual
+background colors.  If it is @code{light}, then Emacs treats all frames
+as if they had a light background.
+@end defopt
+
 @node Merging Faces
 @subsection Merging Faces for Display
 
@@ -1339,6 +1288,12 @@ for more information about Transient Mark mode.
 Normally, the value is the face number of the face named @code{region}.
 @end defvar
 
+@tindex frame-update-face-colors
+@defun frame-update-face-colors frame
+This function updates the way faces display on @var{frame}, for a change
+in @var{frame}'s foreground or background color.
+@end defun
+
 @node Blinking
 @section Blinking Parentheses
 @cindex parenthesis matching
@@ -1356,23 +1311,23 @@ The value of @code{blink-paren-function} may be @code{nil}, in which
 case nothing is done.
 @end defvar
 
-@defvar blink-matching-paren
+@defopt blink-matching-paren
 If this variable is @code{nil}, then @code{blink-matching-open} does
 nothing.
-@end defvar
+@end defopt
 
-@defvar blink-matching-paren-distance
+@defopt blink-matching-paren-distance
 This variable specifies the maximum distance to scan for a matching
 parenthesis before giving up.
-@end defvar
+@end defopt
 
-@defvar blink-matching-paren-delay
+@defopt blink-matching-delay
 This variable specifies the number of seconds for the cursor to remain
 at the matching parenthesis.  A fraction of a second often gives
 good results, but the default is 1, which works on all systems.
-@end defvar
+@end defopt
 
-@defun blink-matching-open
+@deffn Command blink-matching-open
 This function is the default value of @code{blink-paren-function}.  It
 assumes that point follows a character with close parenthesis syntax and
 moves the cursor momentarily to the matching opening character.  If that
@@ -1398,7 +1353,7 @@ Here is an example of calling this function explicitly.
     (blink-matching-open)))
 @end group
 @end smallexample
-@end defun
+@end deffn
 
 @node Inverse Video
 @section Inverse Video
@@ -1655,13 +1610,13 @@ below).
 
   Here are the possible types of elements in the glyph table:
 
-@table @var
-@item string
+@table @asis
+@item @var{string}
 Send the characters in @var{string} to the terminal to output
 this glyph.  This alternative is available on character terminals,
 but not under a window system.
 
-@item integer
+@item @var{integer}
 Define this glyph code as an alias for glyph code @var{integer}.  You
 can use an alias to specify a face code for the glyph; see below.
 
@@ -1705,13 +1660,13 @@ It also terminates any keyboard macro currently executing unless
 This is a synonym for @code{ding}.
 @end defun
 
-@defvar visible-bell
+@defopt visible-bell
 This variable determines whether Emacs should flash the screen to
 represent a bell.  Non-@code{nil} means yes, @code{nil} means no.  This
 is effective on a window system, and on a character-only terminal
 provided the terminal's Termcap entry defines the visible bell
 capability (@samp{vb}).
-@end defvar
+@end defopt
 
 @defvar ring-bell-function
 @tindex ring-bell-function
@@ -1728,11 +1683,20 @@ differently.  An Emacs frame is a single window as far as X is
 concerned; the individual Emacs windows are not known to X at all.
 
 @defvar window-system
-@cindex X Window System
 This variable tells Lisp programs what window system Emacs is running
-under.  Its value should be a symbol such as @code{x} (if Emacs is
-running under X) or @code{nil} (if Emacs is running on an ordinary
-terminal).
+under.  The possible values are
+
+@table @code
+@item x
+@cindex X Window System
+Emacs is displaying using X.
+@item pc
+Emacs is displaying using MSDOS.
+@item w32
+Emacs is displaying using Windows NT or Windows 95.
+@item nil
+Emacs is using a character-based terminal.
+@end table
 @end defvar
 
 @defvar window-setup-hook
index c93330e38ae0ab86acfbe75fb58d690909d21fc7..03a8a6940f6f3e18e98e430df992aec78b775bad 100644 (file)
@@ -9,7 +9,7 @@
 
 @c , Bugs and Todo List, Top, Top
 
-@node Edebug,, Compilation Errors, Debugging
+@node Edebug, Syntax Errors, Debugger, Debugging
 @section Edebug
 @cindex Edebug mode
 
@@ -583,10 +583,12 @@ position (@code{edebug-bounce-point}).  With a prefix argument @var{n},
 pause for @var{n} seconds instead.
 
 @item w
-Move point back to the current stop point (@code{edebug-where}) in the
-source code buffer.  Also, if you use this command in a different window
-displaying the same buffer, that window will be used instead to display
-the current definition in the future.
+Move point back to the current stop point in the source code buffer
+(@code{edebug-where}).
+
+If you use this command in a different window displaying the same
+buffer, that window will be used instead to display the current
+definition in the future.
 
 @item W
 @c Its function is not simply to forget the saved configuration -- dan
@@ -842,11 +844,10 @@ with @code{(apply 'format @var{format-string} @var{format-args})}.
 It also appends a newline to separate entries.
 @end defun
 
-  @code{edebug-tracing} and @code{edebug-trace} insert lines in the trace
-buffer even if Edebug is not active.
-
-  Adding text to the trace buffer also scrolls its window to show the
-last lines inserted.
+  @code{edebug-tracing} and @code{edebug-trace} insert lines in the
+trace buffer whenever they are called, even if Edebug is not active.
+Adding text to the trace buffer also scrolls its window to show the last
+lines inserted.
 
 @node Coverage Testing
 @subsection Coverage Testing
@@ -855,18 +856,22 @@ last lines inserted.
 @cindex frequency counts
 @cindex performance analysis
 Edebug provides rudimentary coverage testing and display of execution
-frequency.  Coverage testing works by comparing the result of each
-expression with the previous result; coverage is considered OK if two
-different results are found.  Thus, to sufficiently test the coverage of
-your code, try to execute it under conditions that evaluate all
-expressions more than once, and produce different results for each
-expression.  Coverage testing makes execution slower, so it is only done
-if @code{edebug-test-coverage} is non-@code{nil}.  Whether or not
-coverage testing is enabled, frequency counting is performed for all
-execution of an instrumented function, even if the execution mode is
-Go-nonstop.
-
-Use @kbd{M-x edebug-display-freq-count} to display both the
+frequency.
+
+  Coverage testing works by comparing the result of each expression with
+the previous result; each form in the program is considered ``covered''
+if it has returned two different values since you began testing coverage
+in the current Emacs session.  Thus, to do coverage testing on your
+program, execute it under various conditions and note whether it behaves
+correctly; Edebug will tell you when you have tried enough different
+conditions that each form has returned two different values.
+
+  Coverage testing makes execution slower, so it is only done if
+@code{edebug-test-coverage} is non-@code{nil}.  Whether or not coverage
+testing is enabled, frequency counting is performed for all execution of
+an instrumented function, even if the execution mode is Go-nonstop.
+
+  Use @kbd{M-x edebug-display-freq-count} to display both the
 coverage information and the frequency counts for a definition.
 
 @deffn Command edebug-display-freq-count
@@ -882,7 +887,7 @@ count of an earlier expression on the same line.
 
 The character @samp{=} following the count for an expression says that
 the expression has returned the same value each time it was evaluated.
-This is the only coverage information that Edebug records.
+In other words, it is not yet ``covered'' for coverage testing purposes.
 
 To clear the frequency count and coverage data for a definition,
 simply reinstrument it with @code{eval-defun}.
@@ -1073,7 +1078,7 @@ name.
 @end deffn
 
 Here is a simple example that defines the specification for the
-@code{for} example macro (@code{Argument Evaluation}), followed by an
+@code{for} example macro (@pxref{Argument Evaluation}), followed by an
 alternative, equivalent specification.
 
 @example
@@ -1143,7 +1148,7 @@ their meanings:
 
 @table @code
 @item sexp
-A single unevaluated expression, which is not instrumented.
+A single unevaluated Lisp object, which is not instrumented.
 @c an "expression" is not necessarily intended for evaluation.
 
 @item form
@@ -1180,8 +1185,8 @@ elements must all match or none, use @code{&optional
 @item &rest
 @kindex &rest @r{(Edebug)}
 All following elements in the specification list are repeated zero or
-more times.  All the elements need not match in the last repetition,
-however.
+more times.  In the last repetition, however, it is ok if the expression
+runs out before matching all of the elements of the specification list.
 
 To repeat only a few elements, use @code{[&rest @var{specs}@dots{}]}.
 To specify several elements that must all match on every repetition, use
index 7dbc8093346ab97a64406f1e856ab49f6536cb04..e1467e97b62e138e86cc236f7785929d7284499e 100644 (file)
@@ -66,11 +66,10 @@ instead of in the original English.
 
 @titlepage
 @title GNU Emacs Lisp Reference Manual
-@subtitle GNU Emacs Version 20
-@subtitle for Unix Users
+@subtitle For Emacs Version 20.3
 @c The edition number appears in several places in this file
 @c and also in the file intro.texi.
-@subtitle Revision 2.5, February 1998
+@subtitle Revision 2.5, May 1998
 
 @author by Bil Lewis, Dan LaLiberte, Richard Stallman
 @author and the GNU Manual Group
@@ -81,9 +80,9 @@ Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998 Free Softw
 @sp 2
 Edition 2.5 @*
 Revised for Emacs Version 20.3,@*
-February 1998.@*
+May 1998.@*
 @sp 2
-ISBN 1-882114-71-X
+ISBN 1-882114-72-8
 
 @sp 2
 Published by the Free Software Foundation @*
@@ -271,7 +270,7 @@ Editing Types
 * Process Type::            A process running on the underlying OS.
 * Stream Type::             Receive or send characters.
 * Keymap Type::             What function a keystroke invokes.
-* Overlay Type::        How an overlay is represented.
+* Overlay Type::            How an overlay is represented.
 
 Numbers
 
@@ -292,7 +291,7 @@ Strings and Characters
 * Creating Strings::        Functions to allocate new strings.
 * Text Comparison::         Comparing characters or strings.
 * String Conversion::       Converting characters or strings and vice versa.
-* Formatting Strings::      @code{format}: Emacs's analog of @code{printf}.
+* Formatting Strings::      @code{format}: Emacs's analogue of @code{printf}.
 * Case Conversion::         Case conversion functions.
 
 Lists
@@ -454,7 +453,7 @@ Advising Functions
 * Enabling Advice::         You can enable or disable each piece of advice.
 * Preactivation::           Preactivation is a way of speeding up the
                               loading of compiled advice.
-* Argument Access::         How advice can access the function's arguments.
+* Argument Access in Advice:: How advice can access the function's arguments.
 * Subr Arguments::          Accessing arguments when advising a primitive.
 * Combined Definition::     How advice is implemented.
 
@@ -692,14 +691,14 @@ Frames
 * Input Focus::                    Specifying the selected frame.
 * Visibility of Frames::    Frames may be visible or invisible, or icons.
 * Raising and Lowering::    Raising a frame makes it hide other X windows;
-                             lowering it makes the others hide them.
+                             lowering it puts it underneath the others.
 * Frame Configurations::    Saving the state of all frames.
 * Mouse Tracking::         Getting events that say when the mouse moves.
 * Mouse Position::         Asking where the mouse is, or moving it.
 * Pop-Up Menus::           Displaying a menu for the user to select from.
 * Dialog Boxes::            Displaying a box to ask yes or no.
 * Pointer Shapes::          Specifying the shape of the mouse pointer.
-* Window System Selections::Transferring text to and from other X clients.
+* Window System Selections::Transferring text to and from other window.
 * Color Names::                    Getting the definitions of color names.
 * Resources::              Getting resource values from the server.
 * Server Data::                    Getting info about the X server.
index 823eadddeac2ac1667b18c6990a54623d49f6043..cee673fd3c86bbb4294bd8ef40e547d0ad3c06db 100644 (file)
@@ -55,7 +55,7 @@ See @code{/} and @code{%} in @ref{Numbers}.
 @xref{Read Only Buffers}.
 
 @item cyclic-function-indirection
-@code{"Symbol's chain of function indirections contains a loop"}@*
+@code{"Symbol's chain of function indirections@* contains a loop"}@*
 @xref{Function Indirection}.
 
 @item end-of-buffer
index 612a1a3ff641734a64f0b151ace920c26eeecc72..0044a61ac8008d6e81078cf4b78fee2d3b6fe54f 100644 (file)
@@ -50,12 +50,15 @@ This predicate returns @code{t} if @var{object} is a frame, and
 * Pointer Shapes::              Specifying the shape of the mouse pointer.
 * Window System Selections::    Transferring text to and from other X clients.
 * Font Names::                  Looking up font names.
+* Fontsets::                    A fontset is a collection of fonts
+                                  for displaying various character sets.
 * Color Names::                        Getting the definitions of color names.
 * Resources::                  Getting resource values from the server.
 * Server Data::                        Getting info about the X server.
 @end menu
 
-  @xref{Display}, for related information.
+  @xref{Display}, for information about the related topic of 
+controlling Emacs redisplay.
 
 @node Creating Frames
 @section Creating Frames
@@ -92,11 +95,10 @@ frame just created.
 
 @node Multiple Displays
 @section Multiple Displays
-@cindex multiple displays
-@cindex multiple X terminals
+@cindex multiple X displays
 @cindex displays, multiple
 
-  A single Emacs can talk to more than one X Window display.
+  A single Emacs can talk to more than one X display.
 Initially, Emacs uses just one display---the one chosen with the
 @code{DISPLAY} environment variable or with the @samp{--display} option
 (@pxref{Initial Options,,, emacs, The GNU Emacs Manual}).  To connect to
@@ -104,16 +106,18 @@ another display, use the command @code{make-frame-on-display} or specify
 the @code{display} frame parameter when you create the frame.
 
   Emacs treats each X server as a separate terminal, giving each one its
-own selected frame and its own minibuffer windows.  A few Lisp variables
-have values local to the current terminal (that is, the terminal
-corresponding to the currently selected frame): these are
-@code{default-minibuffer-frame}, @code{defining-kbd-macro},
-@code{last-kbd-macro}, and @code{system-key-alist}.  These variables are
-always terminal-local and can never be buffer-local or frame-local
-(@pxref{Buffer-Local Variables}).
+own selected frame and its own minibuffer windows.
+
+  A few Lisp variables are @dfn{terminal-local}; that is, they have a
+separate binding for each terminal.  The binding in effect at any time
+is the one for the terminal that the currently selected frame belongs
+to.  These variables include @code{default-minibuffer-frame},
+@code{defining-kbd-macro}, @code{last-kbd-macro}, and
+@code{system-key-alist}.  They are always terminal-local, and can never
+be buffer-local (@pxref{Buffer-Local Variables}) or frame-local.
 
   A single X server can handle more than one screen.  A display name
-@samp{@var{host}.@var{server}.@var{screen}} has three parts; the last
+@samp{@var{host}:@var{server}.@var{screen}} has three parts; the last
 part specifies the screen number for a given server.  When you use two
 screens belonging to one server, Emacs knows by the similarity in their
 names that they share a single keyboard, and it treats them as a single
@@ -164,8 +168,8 @@ Just what parameters a frame has depends on what display mechanism it
 uses.
 
 Frame parameters exist for the sake of window systems.  A terminal frame
-has a few parameters, mostly for compatibility's sake; only the height,
-width, @code{name}, @code{title}, @code{buffer-list} and
+has a few parameters, mostly for compatibility's sake; only the @code{height},
+@code{width}, @code{name}, @code{title}, @code{buffer-list} and
 @code{buffer-predicate} parameters do something special.
 
 @menu
@@ -418,9 +422,20 @@ appears.  If this is @code{nil}, the frame's title is used.
 The color to use for the image of a character.  This is a string; the
 window system defines the meaningful color names.
 
+If you set the @code{foreground-color} frame parameter, you should
+call @code{frame-update-face-colors} to update faces accordingly.
+
 @item background-color
 The color to use for the background of characters.
 
+If you set the @code{background-color} frame parameter, you should
+call @code{frame-update-face-colors} to update faces accordingly.
+@xref{Face Functions}.
+
+@item background-mode
+This parameter is either @code{dark} or @code{light}, according
+to whether the background color is a light one or a dark one.
+
 @item mouse-color
 The color for the mouse pointer.
 
@@ -430,6 +445,11 @@ The color for the cursor that shows point.
 @item border-color
 The color for the border of the frame.
 
+@item display-type
+This parameter describes the range of possible colors that can be used
+in this frame.  Its value is @code{color}, @code{grayscale} or
+@code{mono}.
+
 @item cursor-type
 The way to display the cursor.  The legitimate values are @code{bar},
 @code{box}, and @code{(bar . @var{width})}.  The symbol @code{box}
@@ -470,6 +490,10 @@ it and see if it works.)
 
 @node Size and Position
 @subsection Frame Size And Position
+@cindex size of frame
+@cindex screen size
+@cindex frame size
+@cindex resize frame
 
   You can read or change the size and position of a frame using the
 frame parameters @code{left}, @code{top}, @code{height}, and
@@ -481,15 +505,28 @@ by the window manager in its usual fashion.
 @defun set-frame-position frame left top
 This function sets the position of the top left corner of @var{frame} to
 @var{left} and @var{top}.  These arguments are measured in pixels, and
-count from the top left corner of the screen.  Negative parameter values
-count up or rightward from the top left corner of the screen.
+normally count from the top left corner of the screen.
+
+Negative parameter values position the bottom edge of the window up from
+the bottom edge of the screen, or the right window edge to the left of
+the right edge of the screen.  It would probably be better if the values
+were always counted from the left and top, so that negative arguments
+would position the frame partly off the top or left edge of the screen,
+but it seems inadvisable to change that now.
 @end defun
 
 @defun frame-height &optional frame
 @defunx frame-width &optional frame
 These functions return the height and width of @var{frame}, measured in
-characters.  If you don't supply @var{frame}, they use the selected
-frame.
+lines and columns.  If you don't supply @var{frame}, they use the
+selected frame.
+@end defun
+
+@defun screen-height
+@defunx screen-width
+These functions are old aliases for @code{frame-height} and
+@code{frame-width}.  When you are using a non-window terminal, the size
+of the frame is normally the same as the size of the terminal screen.
 @end defun
 
 @defun frame-pixel-height &optional frame
@@ -515,15 +552,38 @@ To set the size based on values measured in pixels, use
 them to units of characters.
 @end defun
 
+@defun set-frame-height frame lines &optional pretend
+This function resizes @var{frame} to a height of @var{lines} lines.  The
+sizes of existing windows in @var{frame} are altered proportionally to
+fit.
+
+If @var{pretend} is non-@code{nil}, then Emacs displays @var{lines}
+lines of output in @var{frame}, but does not change its value for the
+actual height of the frame.  This is only useful for a terminal frame.
+Using a smaller height than the terminal actually implements may be
+useful to reproduce behavior observed on a smaller screen, or if the
+terminal malfunctions when using its whole screen.  Setting the frame
+height ``for real'' does not always work, because knowing the correct
+actual size may be necessary for correct cursor positioning on a
+terminal frame.
+@end defun
+
+@defun set-frame-width frame width &optional pretend
+This function sets the width of @var{frame}, measured in characters.
+The argument @var{pretend} has the same meaning as in
+@code{set-frame-height}.
+@end defun
+
+@findex set-screen-height
+@findex set-screen-width
   The old-fashioned functions @code{set-screen-height} and
 @code{set-screen-width}, which were used to specify the height and width
 of the screen in Emacs versions that did not support multiple frames,
-are still usable.  They apply to the selected frame.  @xref{Screen
-Size}.
+are still usable.  They apply to the selected frame.
 
 @defun x-parse-geometry geom
 @cindex geometry specification
-The function @code{x-parse-geometry} converts a standard X Windows
+The function @code{x-parse-geometry} converts a standard X window
 geometry string to an alist that you can use as part of the argument to
 @code{make-frame}.
 
@@ -562,17 +622,11 @@ Here is an example:
 
 @example
 (x-parse-geometry "35x70+0-0")
-     @result{} ((width . 35) (height . 70)
-         (left . 0) (top - 0))
+     @result{} ((height . 70) (width . 35)
+         (top - 0) (left . 0))
 @end example
 @end defun
 
-@ignore
-New functions @code{set-frame-height} and @code{set-frame-width} set the
-size of a specified frame.  The frame is the first argument; the size is
-the second.
-@end ignore
-
 @node Frame Titles
 @section Frame Titles
 
@@ -768,8 +822,7 @@ actually displayed on the terminal.  @code{switch-frame} is the only way
 to switch frames, and the change lasts until overridden by a subsequent
 call to @code{switch-frame}.  Each terminal screen except for the
 initial one has a number, and the number of the selected frame appears
-in the mode line after the word @samp{Emacs} (@pxref{Mode Line
-Variables}).
+in the mode line before the buffer name (@pxref{Mode Line Variables}).
 
 @c ??? This is not yet implemented properly.
 @defun select-frame frame
@@ -1283,7 +1336,7 @@ just as fonts do, and you can use a fontset name in place of a font name
 when you specify the ``font'' for a frame or a face.  Here is
 information about defining a fontset under Lisp program control.
 
-@defun create-fontset-from-fontset-spec fontset-spec &optional style noerror
+@defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror
 This function defines a new fontset according to the specification
 string @var{fontset-spec}.  The string should have this format:
 
@@ -1298,22 +1351,23 @@ The first part of the string, @var{fontpattern}, should have the form of
 a standard X font name, except that the last two fields should be
 @samp{fontset-@var{alias}}.
 
-Each fontset has two names, one long and one short.  The long name is
+The new fontset has two names, one long and one short.  The long name is
 @var{fontpattern} in its entirety.  The short name is
 @samp{fontset-@var{alias}}.  You can refer to the fontset by either
 name.  If a fontset with the same name already exists, an error is
 signaled, unless @var{noerror} is non-@code{nil}, in which case this
 function does nothing.
 
+If optional argument @var{style-variant-p} is non-@code{nil}, that says
+to create bold, italic and bold-italic variants of the fontset as well.
+These variant fontsets do not have a short name, only a long one, which
+is made by altering @var{fontpattern} to indicate the bold or italic
+status.
+
 The specification string also says which fonts to use in the fontset.
 See below for the details.
 @end defun
 
-  If optional argument @var{style} is specified, it specifies a way to
-modify the fontset.  It should be one of @code{bold}, @code{italic}, and
-@code{bold-italic}, and it says to find the bold, italic or bold-italic
-version of each font if possible.
-
   The construct @samp{@var{charset}:@var{font}} specifies which font to
 use (in this fontset) for one particular character set.  Here,
 @var{charset} is the name of a character set, and @var{font} is the font
@@ -1354,7 +1408,7 @@ and the font specification for Chinese GB2312 characters would be this:
 
   You may not have any Chinese font matching the above font
 specification.  Most X distributions include only Chinese fonts that
-have @samp{song ti} or @samp{fangsong ti} in @var{family} field.  In
+have @samp{song ti} or @samp{fangsong ti} in the @var{family} field.  In
 such a case, @samp{Fontset-@var{n}} can be specified as below:
 
 @smallexample
@@ -1415,7 +1469,7 @@ defined, the value is @code{nil}.
 @end example
 
 The color values are returned for @var{frame}'s display.  If @var{frame}
-is omitted or @code{nil}, the information is return for the selected
+is omitted or @code{nil}, the information is returned for the selected
 frame's display.
 @end defun
 
index cde0956b5beb3b56da7ffbfd00d8fcbd3b173796..9c88c971705b0e2f6302c9fc834a430ebfbe555a 100644 (file)
@@ -99,15 +99,15 @@ Help, emacs, The GNU Emacs Manual}.
 @c Wordy to prevent overfull hbox.  --rjc 15mar92
   The @file{emacs/lib-src} directory contains two utilities that you can
 use to print nice-looking hardcopy for the file
-@file{emacs/etc/DOC-@var{version}}.  These are @file{sorted-doc.c} and
-@file{digest-doc.c}.
+@file{emacs/etc/DOC-@var{version}}.  These are @file{sorted-doc} and
+@file{digest-doc}.
 
 @node Accessing Documentation
 @section Access to Documentation Strings
 
 @defun documentation-property symbol property &optional verbatim
 This function returns the documentation string that is recorded
-@var{symbol}'s property list under property @var{property}.  It
+in @var{symbol}'s property list under property @var{property}.  It
 retrieves the text from a file if necessary, and runs
 @code{substitute-command-keys} to substitute actual key bindings.  (This
 substitution is not done if @var{verbatim} is non-@code{nil}.)
@@ -116,7 +116,7 @@ substitution is not done if @var{verbatim} is non-@code{nil}.)
 @group
 (documentation-property 'command-line-processed
    'variable-documentation)
-     @result{} "t once command line has been processed"
+     @result{} "Non-nil once command line has been processed"
 @end group
 @group
 (symbol-plist 'command-line-processed)
@@ -218,7 +218,7 @@ goal-column     Option
 @c That makes them incorrect.
 
 @group
-set-goal-column Command: C-x C-n
+set-goal-column Keys: C-x C-n
 Set the current horizontal position as a goal for C-n and C-p.
 @end group
 @c DO NOT put a blank line here!  That is factually inaccurate!
@@ -496,7 +496,7 @@ stands for @kbd{C-h}.  When Emacs reads this character, if
 @code{help-form} is a non-@code{nil} Lisp expression, it evaluates that
 expression, and displays the result in a window if it is a string.
 
-Usually the value of @code{help-form}'s value is @code{nil}.  Then the
+Usually the value of @code{help-form} is @code{nil}.  Then the
 help character has no special meaning at the level of command input, and
 it becomes part of a key sequence in the normal way.  The standard key
 binding of @kbd{C-h} is a prefix key for several general-purpose help
index d6471a4ced1b60cec90f2d88105967ac7c742c61..17a8d903d30e4a70f58395b8b6f34efcce1573ea 100644 (file)
@@ -491,10 +491,6 @@ mail @emph{will} be acted on in due time.  If you want to contact the
 Emacs maintainers more quickly, send mail to
 @code{bug-gnu-emacs@@gnu.org}.
 
-@display
- --Bil Lewis, Dan LaLiberte, Richard Stallman
-@end display
-
 @node Lisp History
 @section Lisp History
 @cindex Lisp history
index d29878d3288ef07f0dadd6e50f1f2a20aad4fd28..f3b4108c710b2aa2e1b6b16bf2ff7a4766420af5 100644 (file)
@@ -338,7 +338,8 @@ For example, @kbd{C-x} is a prefix key, and it uses a keymap that is
 also stored in the variable @code{ctl-x-map}.  This keymap defines
 bindings for key sequences starting with @kbd{C-x}.
 
-  Here is a list of the standard prefix keys of Emacs and their keymaps:
+  Some of the standard Emacs prefix keys use keymaps that are
+also found in Lisp variables:
 
 @itemize @bullet
 @item
@@ -369,6 +370,12 @@ mode-specific bindings.
 This map is found via the function cell of the symbol
 @code{Control-X-prefix}.
 
+@item
+@cindex @kbd{C-x @key{RET}}
+@vindex mule-keymap
+@code{mule-keymap} is the global keymap used for the @kbd{C-x @key{RET}}
+prefix key.
+
 @item
 @cindex @kbd{C-x 4}
 @vindex ctl-x-4-map
@@ -384,11 +391,28 @@ key.
 
 @c Emacs 19 feature
 @item
-@cindex @kbd{C-x n}
-@cindex @kbd{C-x r}
-@cindex @kbd{C-x a}
-The prefix keys @kbd{C-x n}, @kbd{C-x r} and @kbd{C-x a} use keymaps
-that have no special names.
+@cindex @kbd{C-x 6}
+@vindex 2C-mode-map
+@code{2C-mode-map} is the global keymap used for the @kbd{C-x 6} prefix
+key.
+
+@item
+@cindex @kbd{C-x v}
+@vindex vc-prefix-map
+@code{vc-prefix-map} is the global keymap used for the @kbd{C-x v} prefix
+key.
+
+@item
+@cindex @kbd{M-g}
+@vindex facemenu-keymap
+@code{facemenu-keymap} is the global keymap used for the @kbd{M-g}
+prefix key.
+
+@c Emacs 19 feature
+@item
+The other Emacs prefix keys are @kbd{C-x @@}, @kbd{C-x a i}, @kbd{C-x
+@key{ESC}} and @kbd{@key{ESC} @key{ESC}}.  They use keymaps that have no
+special names.
 @end itemize
 
   The keymap binding of a prefix key is used for looking up the event
@@ -615,7 +639,7 @@ particular minor modes.  The elements of this alist look like the
 elements of @code{minor-mode-map-alist}: @code{(@var{variable}
 . @var{keymap})}.
 
-If a variable appears an element of
+If a variable appears as an element of
 @code{minor-mode-overriding-map-alist}, the map specified by that
 element totally replaces any map specified for the same variable in
 @code{minor-mode-map-alist}.
@@ -1179,16 +1203,15 @@ Dired mode is set up:
 
 @smallexample
 @group
-  @dots{}
-  (setq dired-mode-map (make-keymap))
-  (suppress-keymap dired-mode-map)
-  (define-key dired-mode-map "r" 'dired-rename-file)
-  (define-key dired-mode-map "\C-d" 'dired-flag-file-deleted)
-  (define-key dired-mode-map "d" 'dired-flag-file-deleted)
-  (define-key dired-mode-map "v" 'dired-view-file)
-  (define-key dired-mode-map "e" 'dired-find-file)
-  (define-key dired-mode-map "f" 'dired-find-file)
-  @dots{}
+(setq dired-mode-map (make-keymap))
+(suppress-keymap dired-mode-map)
+(define-key dired-mode-map "r" 'dired-rename-file)
+(define-key dired-mode-map "\C-d" 'dired-flag-file-deleted)
+(define-key dired-mode-map "d" 'dired-flag-file-deleted)
+(define-key dired-mode-map "v" 'dired-view-file)
+(define-key dired-mode-map "e" 'dired-find-file)
+(define-key dired-mode-map "f" 'dired-find-file)
+@dots{}
 @end group
 @end smallexample
 @end defun
index 6dda4a437ed3d43939016b1c6068643a16d084e6..cdea882874a26e7edfe83b16364047be6e05bc8b 100644 (file)
@@ -148,7 +148,8 @@ Normally, the variable's value is @code{nil}, which means those
 functions should use @code{read}.
 @end defvar
 
-  For how @code{load} is used to build Emacs, see @ref{Building Emacs}.
+  For information about how @code{load} is used in building Emacs, see
+@ref{Building Emacs}.
 
 @node Library Search
 @section Library Search
@@ -176,16 +177,15 @@ directory names, and @samp{.} is used for the current default directory.
 Here is an example of how to set your @code{EMACSLOADPATH} variable from
 a @code{csh} @file{.login} file:
 
-@c This overfull hbox is OK.  --rjc 16mar92
 @smallexample
-setenv EMACSLOADPATH .:/user/bil/emacs:/usr/local/lib/emacs/lisp
+setenv EMACSLOADPATH .:/user/bil/emacs:/usr/local/lib/emacs/20.3/lisp
 @end smallexample
 
   Here is how to set it using @code{sh}:
 
 @smallexample
 export EMACSLOADPATH
-EMACSLOADPATH=.:/user/bil/emacs:/usr/local/lib/emacs/lisp
+EMACSLOADPATH=.:/user/bil/emacs:/usr/local/lib/emacs/20.3/lisp
 @end smallexample
 
   Here is an example of code you can place in a @file{.emacs} file to add
index 0fa549bdd1639b738d00e269ee8a31967e575e6f..ee4d214449840d89460333b954801f3dc7adc3c7 100644 (file)
@@ -316,9 +316,9 @@ relocating a marker to point after the inserted text.
 @defun set-marker-insertion-type marker type
 @tindex set-marker-insertion-type
 This function sets the insertion type of marker @var{marker} to
-@var{type}.  If @var{type} is @code{t}, @var{marker} will advances when
-text is inserted at it.  If @var{type} is @code{nil}, @var{marker} does
-not advance when text is inserted there.
+@var{type}.  If @var{type} is @code{t}, @var{marker} will advance when
+text is inserted at its position.  If @var{type} is @code{nil},
+@var{marker} does not advance when text is inserted there.
 @end defun
 
 @defun marker-insertion-type marker
index 8ddb5d7235050d2ed06cd98b238a7dfbd393ccca..dd0a7e82cbe4724a08eb92a4e58ad921d320f210 100644 (file)
@@ -38,7 +38,7 @@ minibuffer.  However, many operations for managing buffers do not apply
 to minibuffers.  The name of a minibuffer always has the form @w{@samp{
 *Minibuf-@var{number}}}, and it cannot be changed.  Minibuffers are
 displayed only in special windows used only for minibuffers; these
-windows always appear at the bottom of a frame.  (Sometime frames have
+windows always appear at the bottom of a frame.  (Sometimes frames have
 no minibuffer window, and sometimes a special kind of frame contains
 nothing but a minibuffer window; see @ref{Minibuffers and Frames}.)
 
@@ -136,10 +136,10 @@ properties were present in the minibuffer.  Otherwise all the text
 properties are stripped when the value is returned.
 
 If the argument @var{inherit-input-method} is non-@code{nil}, then the
-minibuffer inherits the current buffer's input method (@pxref{Input
-Methods}) and the setting of @code{enable-multibyte-characters}
-(@pxref{Text Representations}) from whichever buffer was current before
-entering the minibuffer.
+minibuffer inherits the current input method (@pxref{Input Methods}) and
+the setting of @code{enable-multibyte-characters} (@pxref{Text
+Representations}) from whichever buffer was current before entering the
+minibuffer.
 
 If @var{initial-contents} is a string, @code{read-from-minibuffer}
 inserts it into the minibuffer, leaving point at the end, before the
@@ -191,10 +191,13 @@ This function is a simplified interface to the
 @end defun
 
 @defvar minibuffer-allow-text-properties
-If this variable is non-@code{nil}, then @code{read-from-minibuffer}
-strips all text properties from the string before returning the string.
+If this variable is @code{nil}, then @code{read-from-minibuffer} strips
+all text properties from the minibuffer input before returning it.
 Since all minibuffer input uses @code{read-from-minibuffer}, this
 variable applies to all minibuffer input.
+
+Note that the completion functions discard text properties unconditionally,
+regardless of the value of this variable.
 @end defvar
 
 @defvar minibuffer-local-map
@@ -679,7 +682,7 @@ edit the input, providing several commands to attempt completion.
 In most cases, we recommend using @var{default}, and not @var{initial}.
 
 If the argument @var{inherit-input-method} is non-@code{nil}, then the
-minibuffer inherits the current buffer's input method (@pxref{Input
+minibuffer inherits the current input method (@pxref{Input
 Methods}) and the setting of @code{enable-multibyte-characters}
 (@pxref{Text Representations}) from whichever buffer was current before
 entering the minibuffer.
@@ -1003,7 +1006,7 @@ predicate @code{user-variable-p} instead of @code{commandp}:
 @end defun
 
   See also the functions @code{read-coding-system} and
-@code{read-non-nil-coding-system}, in @ref{Lisp and Coding Systems}.
+@code{read-non-nil-coding-system}, in @ref{User-Chosen Coding Systems}.
 
 @node Reading File Names
 @subsection Reading File Names
@@ -1035,7 +1038,7 @@ initial input.  It defaults to the current buffer's value of
 
 @c Emacs 19 feature
 If you specify @var{initial}, that is an initial file name to insert in
-the buffer (after with @var{directory}, if that is inserted).  In this
+the buffer (after @var{directory}, if that is inserted).  In this
 case, point goes at the beginning of @var{initial}.  The default for
 @var{initial} is @code{nil}---don't insert any file name.  To see what
 @var{initial} does, try the command @kbd{C-x C-v}.  @strong{Note:} we
index dfbdfee00c6ef504adff5726830c9a8fd775735f..f8a5729ccc38741ba369e92cb8bdb335f72eedc3 100644 (file)
@@ -60,7 +60,7 @@ definition is distinct from that of Text mode, but was derived from it.
 
   Rmail Edit mode offers an example of changing the major mode
 temporarily for a buffer, so it can be edited in a different way (with
-ordinary Emacs commands rather than Rmail).  In such cases, the
+ordinary Emacs commands rather than Rmail commands).  In such cases, the
 temporary major mode usually has a command to switch back to the
 buffer's usual mode (Rmail mode, in this case).  You might be tempted to
 present the temporary redefinitions inside a recursive edit and restore
@@ -823,11 +823,11 @@ minor modes.
 Make a variable whose name ends in @samp{-mode} to control the minor
 mode.  We call this the @dfn{mode variable}.  The minor mode command
 should set this variable (@code{nil} to disable; anything else to
-enable.)
+enable).
 
 If it is possible, implement the mode so that setting the variable
 automatically enables or disables the mode.  Then the minor mode command
-does not need to do anything except the variable.
+does not need to do anything except set the variable.
 
 This variable is used in conjunction with the @code{minor-mode-alist} to
 display the minor mode name in the mode line.  It can also enable
@@ -887,6 +887,9 @@ check for an existing element, to avoid duplication.  For example:
 @end smallexample
 @end itemize
 
+  You can also use @code{add-to-list} to add an element to this list
+just once (@pxref{Setting Variables}).
+
 @node Keymaps and Minor Modes
 @subsection Keymaps and Minor Modes
 
@@ -1135,6 +1138,11 @@ directory.
 @end group
 @end example
 
+@noindent
+(The variables @code{line-number-mode}, @code{column-number-mode}
+and @code{which-func-mode} enable particular minor modes; as usual,
+these variable names are also the minor mode command names.)
+
 @node Mode Line Variables
 @subsection Variables Used in the Mode Line
 
@@ -1174,12 +1182,8 @@ frame at a time.
 
 @defvar mode-line-buffer-identification
 This variable identifies the buffer being displayed in the window.  Its
-default value is @code{("%12b")}, which means that it usually
-displays @samp{Emacs:} followed by seventeen characters of the buffer
-name.  (In a terminal frame, it displays the frame name instead of
-@samp{Emacs}; this has the effect of showing the frame number.)  You may
-want to change this in modes such as Rmail that do not behave like a
-``normal'' Emacs.
+default value is @code{("%12b")}, which means that it usually displays
+twelve characters of the buffer name.
 @end defvar
 
 @defvar global-mode-string
@@ -1240,7 +1244,7 @@ This buffer-local variable contains the mode line information on process
 status in modes used for communicating with subprocesses.  It is
 displayed immediately following the major mode name, with no intervening
 space.  For example, its value in the @samp{*shell*} buffer is
-@code{(":@: %s")}, which allows the shell to display its status along
+@code{(":%s")}, which allows the shell to display its status along
 with the major mode as: @samp{(Shell:@: run)}.  Normally this variable
 is @code{nil}.
 @end defvar
@@ -1456,8 +1460,8 @@ Setting this variable makes it buffer-local in the current buffer.
 
 @defvar imenu-syntax-alist
 This variable is an alist of syntax table modifiers to use while
-executing @code{imenu--generic-function} to override the syntax table of
-the current buffer.  Each element should have this form:
+processing @code{imenu-generic-expression}, to override the syntax table
+of the current buffer.  Each element should have this form:
 
 @example
 (@var{characters} . @var{syntax-description})
@@ -1478,7 +1482,7 @@ For example, Fortran mode uses it this way:
 @end example
 
 The @code{imenu-generic-expression} patterns can then use @samp{\\sw+}
-instead of @samp{\\(\\sw\\|\\s_\\)\\}.  Note that this technique may be
+instead of @samp{\\(\\sw\\|\\s_\\)+}.  Note that this technique may be
 inconvenient to use when the mode needs to limit the initial character
 of a name to a smaller set of characters
 
@@ -2081,7 +2085,9 @@ each of them the arguments @var{args}.
 This function is the way to run an abnormal hook which passes arguments
 to the hook functions, and stops as soon as any hook function fails.  It
 calls each of the hook functions, passing each of them the arguments
-@var{args}, until some hook function returns @code{nil}.  Then it stops.
+@var{args}, until some hook function returns @code{nil}.  Then it stops,
+and returns @code{nil} if some hook function did, and otherwise
+returns a non-@code{nil} value.
 @end defun
 
 @defun run-hook-with-args-until-success hook &rest args
@@ -2089,7 +2095,8 @@ This function is the way to run an abnormal hook which passes arguments
 to the hook functions, and stops as soon as any hook function succeeds.
 It calls each of the hook functions, passing each of them the arguments
 @var{args}, until some hook function returns non-@code{nil}.  Then it
-stops.
+stops, and returns whatever was returned by the last hook function
+that was called.
 @end defun
 
 @defun add-hook hook function &optional append local
index ac7c9ed9c43731d77e670f6258347e06db0222b3..019f1365f729ac4449726959a3ecf1bddb683349 100644 (file)
@@ -46,13 +46,14 @@ character set by setting the variable @code{nonascii-insert-offset}).
 
 @cindex leading code
 @cindex multibyte text
+@cindex trailing codes
   In multibyte representation, a character may occupy more than one
 byte, and as a result, the full range of Emacs character codes can be
 stored.  The first byte of a multibyte character is always in the range
 128 through 159 (octal 0200 through 0237).  These values are called
 @dfn{leading codes}.  The second and subsequent bytes of a multibyte
 character are always in the range 160 through 255 (octal 0240 through
-0377).
+0377); these values are @dfn{trailing codes}.
 
   In a buffer, the buffer-local value of the variable
 @code{enable-multibyte-characters} specifies the representation used.
@@ -156,14 +157,14 @@ If this is non-@code{nil}, it overrides @code{nonascii-insert-offset}.
 @defun string-make-unibyte string
 @tindex string-make-unibyte
 This function converts the text of @var{string} to unibyte
-representation, if it isn't already, and return the result.  If
+representation, if it isn't already, and returns the result.  If
 @var{string} is a unibyte string, it is returned unchanged.
 @end defun
 
 @defun string-make-multibyte string
 @tindex string-make-multibyte
 This function converts the text of @var{string} to multibyte
-representation, if it isn't already, and return the result.  If
+representation, if it isn't already, and returns the result.  If
 @var{string} is a multibyte string, it is returned unchanged.
 @end defun
 
@@ -280,18 +281,18 @@ set that @var{character} belongs to.
 @cindex dimension (of character set)
   In multibyte representation, each character occupies one or more
 bytes.  Each character set has an @dfn{introduction sequence}, which is
-one or two bytes long.  The introduction sequence is the beginning of
-the byte sequence for any character in the character set.  (The
-@sc{ASCII} character set has a zero-length introduction sequence.)  The
-rest of the character's bytes distinguish it from the other characters
-in the same character set.  Depending on the character set, there are
-either one or two distinguishing bytes; the number of such bytes is
-called the @dfn{dimension} of the character set.
+normally one or two bytes long.  (Exception: the @sc{ASCII} character
+set has a zero-length introduction sequence.)  The introduction sequence
+is the beginning of the byte sequence for any character in the character
+set.  The rest of the character's bytes distinguish it from the other
+characters in the same character set.  Depending on the character set,
+there are either one or two distinguishing bytes; the number of such
+bytes is called the @dfn{dimension} of the character set.
 
 @defun charset-dimension charset
 @tindex charset-dimension
 This function returns the dimension of @var{charset};
-At present, the dimension is always 1 or 2.
+at present, the dimension is always 1 or 2.
 @end defun
 
   This is the simplest way to determine the byte length of a character
@@ -481,6 +482,7 @@ by a particular @dfn{coding system}.
 * Coding System Basics::
 * Encoding and I/O::
 * Lisp and Coding Systems::
+* User-Chosen Coding Systems::
 * Default Coding Systems::
 * Specifying Coding Systems::
 * Explicit Encoding::
@@ -559,7 +561,7 @@ as an alias for the coding system.
 @node Encoding and I/O
 @subsection Encoding and I/O
 
-  The principal purpose coding systems is for use in reading and
+  The principal purpose of coding systems is for use in reading and
 writing files.  The function @code{insert-file-contents} uses
 a coding system for decoding the file data, and @code{write-region}
 uses one to encode the buffer contents.
@@ -632,7 +634,7 @@ Otherwise it signals an error with condition @code{coding-system-error}.
 @defun coding-system-change-eol-conversion coding-system eol-type
 @tindex coding-system-change-eol-conversion
 This function returns a coding system which is like @var{coding-system}
-except for its in eol conversion, which is specified by @code{eol-type}.
+except for its eol conversion, which is specified by @code{eol-type}.
 @var{eol-type} should be @code{unix}, @code{dos}, @code{mac}, or
 @code{nil}.  If it is @code{nil}, the returned coding system determines
 the end-of-line conversion from the data.
@@ -692,6 +694,31 @@ is @code{undecided} or @code{(undecided)}.
 @tindex detect-coding-string
 This function is like @code{detect-coding-region} except that it
 operates on the contents of @var{string} instead of bytes in the buffer.
+@end defun
+
+  @xref{Process Information}, for how to examine or set the coding
+systems used for I/O to a subprocess.
+
+@node User-Chosen Coding Systems
+@subsection User-Chosen Coding Systems
+
+@tindex select-safe-coding-system
+@defun select-safe-coding-system from to &optional preferred-coding-system
+This function selects a coding system for encoding the between
+@var{from} and @var{to}, asking the user to choose if necessary.
+
+The optional argument @var{preferred-coding-system} specifies a coding
+system try first.  If it can handle the text in the specified region,
+then it is used.  If this argument is omitted, the current buffer's
+value of @code{buffer-file-coding-system} is tried first.
+
+If the region contains some multibyte characters that the preferred
+coding system cannot encode, this function asks the user to choose from
+a list of coding systems which can encode the text, and returns the
+user's choice.
+
+One other kludgy feature: if @var{from} is a string, the string is the
+target text, and @var{to} is ignored.
 @end defun
 
   Here are two functions you can use to let the user specify a coding
@@ -713,15 +740,12 @@ the user tries to enter null input, it asks the user to try again.
 @xref{Coding Systems}.
 @end defun
 
-  @xref{Process Information}, for how to examine or set the coding
-systems used for I/O to a subprocess.
-
 @node Default Coding Systems
 @subsection Default Coding Systems
 
   This section describes variables that specify the default coding
 system for certain files or when running certain subprograms, and the
-function which which I/O operations use to access them.
+function that I/O operations use to access them.
 
   The idea of these variables is that you set them once and for all to the
 defaults you want, and then do not change them again.  To specify a
@@ -738,7 +762,7 @@ reading and writing particular files.  Each element has the form
 expression that matches certain file names.  The element applies to file
 names that match @var{pattern}.
 
-The @sc{cdr} of the element, @var{val}, should be either a coding
+The @sc{cdr} of the element, @var{coding}, should be either a coding
 system, a cons cell containing two coding systems, or a function symbol.
 If @var{val} is a coding system, that coding system is used for both
 reading the file and writing it.  If @var{val} is a cons cell containing
@@ -763,7 +787,7 @@ other coding systems later using @code{set-process-coding-system}.
 
   @strong{Warning:} Coding systems such as @code{undecided} which
 determine the coding system from the data do not work entirely reliably
-with asynchronous subprocess output.  This is because Emacs processes
+with asynchronous subprocess output.  This is because Emacs handles
 asynchronous subprocess output in batches, as it arrives.  If the coding
 system leaves the character code conversion unspecified, or leaves the
 end-of-line conversion unspecified, Emacs must try to detect the proper
@@ -917,6 +941,15 @@ write them with @code{write-region} (@pxref{Writing to Files}), and
 suppress encoding for that @code{write-region} call by binding
 @code{coding-system-for-write} to @code{no-conversion}.
 
+  Raw bytes sometimes contain overlong byte-sequences that look like a
+proper multibyte character plus extra bytes containing trailing codes.
+For most purposes, Emacs treats such a sequence in a buffer or string as
+a single character, and if you look at its character code, you get the
+value that corresponds to the multibyte character sequence---the extra
+bytes are disregarded.  This behavior is not quite clean, but raw bytes
+are used only in limited places in Emacs, so as a practical matter
+problems can be avoided.
+
 @defun encode-coding-region start end coding-system
 @tindex encode-coding-region
 This function encodes the text from @var{start} to @var{end} according
@@ -1092,12 +1125,14 @@ This variable defines all the supported input methods.
 Each element defines one input method, and should have the form:
 
 @example
-(@var{input-method} @var{language-env} @var{activate-func} @var{title} @var{description} @var{args}...)
+(@var{input-method} @var{language-env} @var{activate-func}
+ @var{title} @var{description} @var{args}...)
 @end example
 
-Here @var{input-method} is the input method name, a string; @var{env} is
-another string, the name of the language environment this input method
-is recommended for.  (That serves only for documentation purposes.)
+Here @var{input-method} is the input method name, a string;
+@var{language-env} is another string, the name of the language
+environment this input method is recommended for.  (That serves only for
+documentation purposes.)
 
 @var{title} is a string to display in the mode line while this method is
 active.  @var{description} is a string describing this method and what
@@ -1107,6 +1142,6 @@ it is good for.
 @var{args}, if any, are passed as arguments to @var{activate-func}.  All
 told, the arguments to @var{activate-func} are @var{input-method} and
 the @var{args}.
-@end defun
+@end defvar
 
 
index b3764422dffa8412f8c39235d8bdf107e03fd572..f9b6595f71c5dfb511e3309f7a2b6b87efdb2d8f 100644 (file)
@@ -19,6 +19,7 @@ pertaining to the terminal and the screen.
 * Getting Out::         How exiting works (permanent or temporary).
 * System Environment::  Distinguish the name and kind of system.
 * User Identification:: Finding the name and user id of the user.
+* Reading a Password::  Reading a password from the terminal.
 * Time of Day::                Getting the current time.
 * Time Conversion::     Converting a time from numeric form to a string, or
                           to calendrical data (or vice versa).
@@ -195,6 +196,7 @@ loading of this file with the option @samp{-no-site-file}.
 @defvar site-run-file
 This variable specifies the site-customization file to load
 before the user's init file.  Its normal value is @code{"site-start"}.
+(The only way to change it with real effect is before dumping Emacs.)
 @end defvar
 
   If there is a great deal of code in your @file{.emacs} file, you
@@ -214,12 +216,13 @@ then the default library is not loaded.  The default value is
 @end defopt
 
 @defvar before-init-hook
-This normal hook is run, once, just before loading of all the init files
+This normal hook is run, once, just before loading all the init files
 (the user's init file, @file{default.el}, and/or @file{site-start.el}).
+(The only way to change it with real effect is before dumping Emacs.)
 @end defvar
 
 @defvar after-init-hook
-This normal hook is run, once, just after loading of all the init files
+This normal hook is run, once, just after loading all the init files
 (the user's init file, @file{default.el}, and/or @file{site-start.el}),
 before the terminal-specific initialization.
 @end defvar
@@ -568,6 +571,9 @@ The value of this variable is a symbol indicating the type of operating
 system Emacs is operating on.  Here is a table of the possible values:
 
 @table @code
+@item alpha-vms
+VMS on the Alpha.
+
 @item aix-v3
 AIX.
 
@@ -727,13 +733,13 @@ containing the Emacs executable.
 @end defvar
 
 @defun load-average &optional use-float
-This function returns the current 1-minute, 5-minute and 15-minute load
-averages in a list.
+This function returns the current 1-minute, 5-minute, and 15-minute load
+averages, in a list.
 
 By default, the values are integers that are 100 times the system load
 averages, which indicate the average number of processes trying to run.
 If @var{use-float} is non-@code{nil}, then they are returned
-as floating point numbers instead.
+as floating point numbers and without multiplying by 100.
 
 @example
 @group
@@ -864,6 +870,29 @@ This function returns the real @sc{uid} of the user.
 This function returns the effective @sc{uid} of the user.  
 @end defun
 
+@node Reading a Password
+@section Reading a Password
+@cindex passwords, reading
+
+  To read a password to pass to another program, you can use the
+function @code{read-passwd}.
+
+@tindex read-passwd
+@defun read-passwd prompt &optional confirm default
+This function reads a password, prompting with @var{prompt}.  It does
+not echo the password as the user types it; instead, it echoes @samp{.}
+for each character in the password.
+
+The optional argument @var{confirm}, if non-@code{nil}, says to read the
+password twice and insist it must be the same both times.  If it isn't
+the same, the user has to type it over and over until the last two
+times match.
+
+The optional argument @var{default} specifies the default password to
+return if the user enters empty input.  If @var{default} is @code{nil},
+then @code{read-passwd} returns the null string in that case.
+@end defun
+
 @node Time of Day
 @section Time of Day
 
@@ -1129,7 +1158,7 @@ after a certain length of idleness.
   Emacs cannot run timers at any arbitrary point in a Lisp program; it
 can run them only when Emacs could accept output from a subprocess:
 namely, while waiting or inside certain primitive functions such as
-@code{sit-for} or @code{read-char} which @emph{can} wait.  Therefore, a
+@code{sit-for} or @code{read-event} which @emph{can} wait.  Therefore, a
 timer's execution may be delayed if Emacs is busy.  However, the time of
 execution is very precise if Emacs is idle.
 
@@ -1139,8 +1168,9 @@ at time @var{time}.  The argument @var{function} is a function to call
 later, and @var{args} are the arguments to give it when it is called.
 The time @var{time} is specified as a string.
 
-Absolute times may be specified in a wide variety of formats, and tries
-to accept all common date formats.  Valid formats include these two,
+Absolute times may be specified in a wide variety of formats; this
+function tries to accept all the commonly used date formats.  Valid
+formats include these two,
 
 @example
 @var{year}-@var{month}-@var{day} @var{hour}:@var{min}:@var{sec} @var{timezone}
@@ -1664,7 +1694,7 @@ It is not crucial to exclude from the alist the keysyms of other X
 servers; those do no harm, as long as they don't conflict with the ones
 used by the X server actually in use.
 
-The variable is always local to the current X terminal and cannot be
+The variable is always local to the current terminal, and cannot be
 buffer-local.  @xref{Multiple Displays}.
 @end defvar
 
@@ -1684,7 +1714,7 @@ entries and DEC terminal concentrators, see @file{emacs/etc/TERMS}.
 @code{C-s} and @kbd{C-q} for flow control.  Therefore, the choice of
 @kbd{C-s} and @kbd{C-q} as command characters for searching and quoting
 was natural and uncontroversial.  With so many commands needing key
-assignments. of course we assigned meanings to nearly all @sc{ASCII}
+assignments, of course we assigned meanings to nearly all @sc{ASCII}
 control characters.
 
   Later, some terminals were introduced which required these characters
index e4f9a4cc7b8b59ba588ecd778a6c2358e99f9d29..02bd42b6669f353d65033527cef6c4f03f79ade4 100644 (file)
@@ -180,13 +180,15 @@ whether a given character is part of a word.  @xref{Syntax Tables}.
 
 @deffn Command forward-word count
 This function moves point forward @var{count} words (or backward if
-@var{count} is negative).  More precisely, it keeps moving until it
-moves across a word-constituent character and encounters a
-word-separator character, then returns @code{t}.
+@var{count} is negative).  ``Moving one word'' means moving until point
+crosses a word-constituent character and then encounters a
+word-separator character (or the boundary of the accessible part of the
+buffer).
 
-If this motion encounters the beginning or end of the buffer, or the
-limits of the accessible portion when narrowing is in effect, point
-stops there and the value is @code{nil}.
+If it is possible to move @var{count} words, without being stopped by
+the buffer boundary (except perhaps after the last word), the value is
+@code{t}.  Otherwise, the return value is @code{nil} and point stops
+at the buffer boundary.
 
 In an interactive call, @var{count} is set to the numeric prefix
 argument.
@@ -657,7 +659,7 @@ This function moves point in the current buffer forward, skipping over a
 given set of characters.  It examines the character following point,
 then advances point if the character matches @var{character-set}.  This
 continues until it reaches a character that does not match.  The
-function returns @code{nil}.
+function returns the number of characters moved over.
 
 The argument @var{character-set} is like the inside of a
 @samp{[@dots{}]} in a regular expression except that @samp{]} is never
@@ -699,6 +701,9 @@ comes back" twice.
 This function moves point backward, skipping characters that match
 @var{character-set}, until @var{limit}.  It is just like
 @code{skip-chars-forward} except for the direction of motion.
+
+The return value indicates the distance traveled.  It is an integer that
+is zero or less.
 @end defun
 
 @node Excursions
@@ -765,7 +770,7 @@ The value returned by @code{save-excursion} is the result of the last of
   @strong{Warning:} Ordinary insertion of text adjacent to the saved
 point value relocates the saved value, just as it relocates all markers.
 Therefore, when the saved point value is restored, it normally comes
-after the inserted text.
+before the inserted text.
 
   Although @code{save-excursion} saves the location of the mark, it does
 not prevent functions which modify the buffer from setting
index 8589348b282d6b3b6b8a98223946586d1447463c..400ab2e53a6259eb1ff984013a217e0e17899e1d 100644 (file)
@@ -79,12 +79,12 @@ Expansion}).
 
   Each of the subprocess-creating functions has a @var{buffer-or-name}
 argument which specifies where the standard output from the program will
-go.  It should be a buffer or a buffer name (which will create the
-buffer if it does not already exist).  It can also be @code{nil}, which
-says to discard the output unless a filter function handles it.
-(@xref{Filter Functions}, and @ref{Read and Print}.)  Normally, you
-should avoid having multiple processes send output to the same buffer
-because their output would be intermixed randomly.
+go.  It should be a buffer or a buffer name; if it is a buffer name,
+that will create the buffer if it does not already exist.  It can also
+be @code{nil}, which says to discard the output unless a filter function
+handles it.  (@xref{Filter Functions}, and @ref{Read and Print}.)
+Normally, you should avoid having multiple processes send output to the
+same buffer because their output would be intermixed randomly.
 
 @cindex program arguments
   All three of the subprocess-creating functions have a @code{&rest}
@@ -102,14 +102,14 @@ must use @var{args} to provide those.
 @code{default-directory} (@pxref{File Name Expansion}).
 
 @cindex environment variables, subprocesses
-  The subprocess inherits its environment from Emacs; but you can
+  The subprocess inherits its environment from Emacs, but you can
 specify overrides for it with @code{process-environment}.  @xref{System
 Environment}.
 
 @defvar exec-directory 
 @pindex movemail
 The value of this variable is the name of a directory (a string) that
-contains programs that come with GNU Emacs, that are intended for Emacs
+contains programs that come with GNU Emacs, programs intended for Emacs
 to invoke.  The program @code{movemail} is an example of such a program;
 Rmail uses it to fetch new mail from an inbox.
 @end defvar
@@ -224,7 +224,7 @@ parallel with Emacs; but you can think of it as synchronous in that
 Emacs is essentially finished with the subprocess as soon as this
 function returns.
 
-@item (@var{real-destination} @var{error-destination})
+@item @code{(@var{real-destination} @var{error-destination})}
 Keep the standard output stream separate from the standard error stream;
 deal with the ordinary output as specified by @var{real-destination},
 and dispose of the error output according to @var{error-destination}.
@@ -365,8 +365,8 @@ then returns the command's output as a string.
 @section Creating an Asynchronous Process
 @cindex asynchronous subprocess
 
-  After an @dfn{asynchronous process} is created, Emacs and the Lisp
-program both continue running immediately.  The process thereafter runs
+  After an @dfn{asynchronous process} is created, Emacs and the subprocess
+both continue running immediately.  The process thereafter runs
 in parallel with Emacs, and the two can communicate with each other
 using the functions described in following sections.  However,
 communication is only partially asynchronous: Emacs sends data to the
@@ -484,13 +484,13 @@ deleted automatically after they terminate, but not necessarily right
 away.  If you delete a terminated process explicitly before it is
 deleted automatically, no harm results.
 
-@defvar delete-exited-processes
+@defopt delete-exited-processes
 This variable controls automatic deletion of processes that have
 terminated (due to calling @code{exit} or to a signal).  If it is
 @code{nil}, then they continue to exist until the user runs
 @code{list-processes}.  Otherwise, they are deleted immediately after
 they exit.
-@end defvar
+@end defopt
 
 @defun delete-process name
 This function deletes the process associated with @var{name}, killing it
@@ -505,10 +505,15 @@ the name of a process, a buffer, or the name of a buffer.
 @end smallexample
 @end defun
 
-@defun process-kill-without-query process
-This function declares that Emacs need not query the user if
-@var{process} is still running when Emacs is exited.  The process will
-be deleted silently.  The value is @code{t}.
+@defun process-kill-without-query process &optional do-query
+This function specifies whether Emacs should query the user if
+@var{process} is still running when Emacs is exited.  If @var{do-query}
+is @code{nil}, the process will be deleted silently.
+Otherwise, Emacs will query about killing it.
+
+The value is @code{t} if the process was formerly set up to require
+query.  @code{nil} otherwise.  A newly-created process always requires
+query.
 
 @smallexample
 @group
@@ -1145,9 +1150,7 @@ subprocess output.
 The argument @var{seconds} need not be an integer.  If it is a floating
 point number, this function waits for a fractional number of seconds.
 Some systems support only a whole number of seconds; on these systems,
-@var{seconds} is rounded down.  If the system doesn't support waiting
-fractions of a second, you get an error if you specify nonzero
-@var{millisec}.
+@var{seconds} is rounded down.
 
 Not all operating systems support waiting periods other than multiples
 of a second; on those that do not, you get an error if you specify
index 7ba8a9fe6668d54a9098d5b83f5ca58227e52b0f..265bc9aba5b5a438dcf88dc143886d618ac335eb 100644 (file)
@@ -234,7 +234,7 @@ backtracking loops.  For example, it could take hours for the regular
 expression @samp{\(x+y*\)*a} to try to match the sequence
 @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz}, before it ultimately fails.
 The slowness is because Emacs must try each imaginable way of grouping
-the 35 @samp{x}'s before concluding that none of them can work.  To make
+the 35 @samp{x}s before concluding that none of them can work.  To make
 sure your regular expressions run fast, check nested repetitions
 carefully.
 
@@ -266,9 +266,9 @@ matches @samp{cr}, @samp{car}, @samp{cdr}, @samp{caddaar}, etc.
 
 You can also include character ranges in a character alternative, by
 writing the starting and ending characters with a @samp{-} between them.
-Thus, @samp{[a-z]} matches any lower-case ASCII letter.  Ranges may be
+Thus, @samp{[a-z]} matches any lower-case @sc{ASCII} letter.  Ranges may be
 intermixed freely with individual characters, as in @samp{[a-z$%.]},
-which matches any lower case ASCII letter or @samp{$}, @samp{%} or
+which matches any lower case @sc{ASCII} letter or @samp{$}, @samp{%} or
 period.
  
 You cannot always match all non-@sc{ASCII} characters with the regular
@@ -280,9 +280,9 @@ does match all non-@sc{ASCII} characters, in both multibyte and unibyte
 representations, because only the @sc{ASCII} characters are excluded.
 
 The beginning and end of a range must be in the same character set
-(@pxref{Character Sets}).  Thus, @samp{[a-\x8c0]} is invalid because
-@samp{a} is in the @sc{ASCII} character set but the character 0x8c0
-(@samp{A} with grave accent) is in the Emacs character set for Latin-1.
+(@pxref{Character Sets}).  Thus, @samp{[a-\x8e0]} is invalid because
+@samp{a} is in the @sc{ASCII} character set but the character 0x8e0
+(@samp{a} with grave accent) is in the Emacs character set for Latin-1.
 
 Note that the usual regexp special characters are not special inside a
 character alternative.  A completely different set of characters are
@@ -1286,7 +1286,7 @@ that shows the problem that arises if you fail to save the match data:
   You can save and restore the match data with @code{save-match-data}:
 
 @defmac save-match-data body@dots{}
-This special form executes @var{body}, saving and restoring the match
+This macro executes @var{body}, saving and restoring the match
 data around it.
 @end defmac
 
index 26263831d1c16663868c6d2eccc6022b60d2cf3d..f812112e243a0ab7b0bc85c9eeaee26b900108ae 100644 (file)
@@ -637,7 +637,7 @@ name.  @xref{Splitting Characters}, for a description of generic characters.
 
 @defun set-char-table-range char-table range value
 @tindex set-char-table-range
-This function set the value in @var{char-table} for a range of
+This function sets the value in @var{char-table} for a range of
 characters @var{range}.  Here are the possibilities for @var{range}:
 
 @table @asis
@@ -678,11 +678,13 @@ The return value is always @code{nil}; to make this function useful,
 here is how to examine each element of the syntax table:
 
 @example
-(map-char-table
- #'(lambda (key value)
-     (setq accumulator
-           (cons (list key value) accumulator)))
- (syntax-table))
+(let (accumulator)
+  (map-char-table
+   #'(lambda (key value)
+       (setq accumulator
+             (cons (list key value) accumulator)))
+   (syntax-table))
+  accumulator)
 @result{}
 ((475008 nil) (474880 nil) (474752 nil) (474624 nil)
  ... (5 (3)) (4 (3)) (3 (3)) (2 (3)) (1 (3)) (0 (3)))
index cf3f14a095f819b535284e429dd50ba7797da626..5521f74d876e86bc72993cf5c7179e5eba51d8e8 100644 (file)
@@ -389,11 +389,6 @@ initially located as shown immediately before the @samp{h} in
 
 @cindex print example
 @example
-@group
-(setq m (set-marker (make-marker) 10 (get-buffer "foo")))
-     @result{} #<marker at 10 in foo>
-@end group
-
 @group
 ---------- Buffer: foo ----------
 This is t@point{}he contents of foo.
@@ -403,10 +398,6 @@ This is t@point{}he contents of foo.
 (print "This is the output" (get-buffer "foo"))
      @result{} "This is the output"
 
-@group
-m
-     @result{} #<marker at 32 in foo>
-@end group
 @group
 ---------- Buffer: foo ----------
 This is t
@@ -431,8 +422,8 @@ This is the @point{}output
 @end group
 
 @group
-m
-     @result{} #<marker at 11 in foo>
+(setq m (copy-marker 10))
+     @result{} #<marker at 10 in foo>
 @end group
 
 @group
@@ -450,7 +441,7 @@ he @point{}output
 
 @group
 m
-     @result{} #<marker at 35 in foo>
+     @result{} #<marker at 34 in foo>
 @end group
 @end example
 
@@ -723,6 +714,14 @@ In the second expression, the local binding of
 @code{prin1}, but not during the printing of the result.
 @end defvar
 
+@tindex print-escape-nonascii
+@defvar print-escape-nonascii
+If this variable is non-@code{nil}, then unibyte non-@sc{ASCII}
+characters in strings are unconditionally printed as backslash sequences
+by the print functions @code{prin1} and @code{print} that print with
+quoting.
+@end defvar
+
 @defvar print-length
 @cindex printing limits
 The value of this variable is the maximum number of elements to print in
index 5e511a5d3312d626451549d2022b6979c50e3784..dc4aaabb18ee6ddfbdd040a38e5e805dbace363b 100644 (file)
@@ -439,9 +439,9 @@ the string).  The specified part of @var{string2} runs from index
 @var{start2} up to index @var{end2} (default, the end of the string).
 
 The strings are both converted to multibyte for the comparison
-(@pxref{Text Representations}) so that a unibyte string can be usefully
-compared with a multibyte string.  If @var{ignore-case} is
-non-@code{nil}, then case is ignored as well.
+(@pxref{Text Representations}) so that a unibyte string can be equal to
+a multibyte string.  If @var{ignore-case} is non-@code{nil}, then case
+is ignored, so that upper case letters can be equal to lower case letters.
 
 If the specified portions of the two strings match, the value is
 @code{t}.  Otherwise, the value is an integer which indicates how many
index b6a5ea9a1324d0cea531ff2ce140076b42f2cf7b..35cde861d15dfae4fbceac048718344396370cf8 100644 (file)
@@ -362,7 +362,7 @@ character, @samp{/}, does have the @samp{b} flag.
 
 @item @samp{*/}
 This is a comment-end sequence for ``a'' style because the first
-character, @samp{*}, does not have the @samp{b} flag
+character, @samp{*}, does not have the @samp{b} flag.
 
 @item newline
 This is a comment-end sequence for ``b'' style, because the newline
@@ -542,10 +542,8 @@ This function moves point forward across characters having syntax classes
 mentioned in @var{syntaxes}.  It stops when it encounters the end of
 the buffer, or position @var{limit} (if specified), or a character it is
 not supposed to skip.
-@ignore @c may want to change this.
 The return value is the distance traveled, which is a nonnegative
 integer.
-@end ignore
 @end defun
 
 @defun skip-syntax-backward syntaxes &optional limit
@@ -553,10 +551,9 @@ This function moves point backward across characters whose syntax
 classes are mentioned in @var{syntaxes}.  It stops when it encounters
 the beginning of the buffer, or position @var{limit} (if specified), or a
 character it is not supposed to skip.
-@ignore @c may want to change this.
+
 The return value indicates the distance traveled.  It is an integer that
 is zero or less.
-@end ignore
 @end defun
 
 @defun backward-prefix-chars
@@ -598,7 +595,7 @@ stops when it comes to any character that starts a sexp.  If
 @var{stop-comment} is non-@code{nil}, parsing stops when it comes to the
 start of a comment.  If @var{stop-comment} is the symbol
 @code{syntax-table}, parsing stops after the start of a comment or a
-string, or the of a comment or a string, whichever comes first.
+string, or the end of a comment or a string, whichever comes first.
 
 @cindex parse state
 The fifth argument @var{state} is a nine-element list of the same form
@@ -893,7 +890,7 @@ in category table @var{table}.
 @defun get-unused-category table
 This function returns a category name (a character) which is not
 currently defined in @var{table}.  If all possible categories are in use
-in @var{table}, it returns @code{nil},
+in @var{table}, it returns @code{nil}.
 @end defun
 
 @defun category-table
index 69f0c002293828b8465c02bdcb423ef27e12ab72..f87b4f9948ad93cf770d26e764b33742201662f4 100644 (file)
@@ -42,6 +42,7 @@ buffer, together with their properties (when relevant).
                        How to control how much information is kept.
 * Filling::          Functions for explicit filling.
 * Margins::          How to specify margins for filling commands.
+* Adaptive Fill:     Adaptive Fill mode chooses a fill prefix from context.
 * Auto Filling::     How auto-fill mode is implemented to break lines.
 * Sorting::          Functions for sorting parts of the buffer.
 * Columns::          Computing horizontal positions, and using them.
@@ -62,11 +63,12 @@ buffer, together with their properties (when relevant).
 Several simple functions are described here.  See also @code{looking-at}
 in @ref{Regexp Search}.
 
-@defun char-after position
+@defun char-after &optional position
 This function returns the character in the current buffer at (i.e.,
 immediately after) position @var{position}.  If @var{position} is out of
 range for this purpose, either before the beginning of the buffer, or at
-or beyond the end, then the value is @code{nil}.
+or beyond the end, then the value is @code{nil}.  The default for
+@var{position} is point.
 
 In the following example, assume that the first character in the
 buffer is @samp{@@}:
@@ -79,11 +81,12 @@ buffer is @samp{@@}:
 @end example
 @end defun
 
-@defun char-before position
+@defun char-before &optional position
 This function returns the character in the current buffer immediately
 before position @var{position}.  If @var{position} is out of range for
 this purpose, either before the beginning of the buffer, or at or beyond
-the end, then the value is @code{nil}.
+the end, then the value is @code{nil}.  The default for
+@var{position} is point.
 @end defun
 
 @defun following-char
@@ -449,9 +452,12 @@ Programs hardly ever use this function.
 @end deffn
 
 @defvar overwrite-mode
-This variable controls whether overwrite mode is in effect: a
-non-@code{nil} value enables the mode.  It is automatically made
-buffer-local when set in any fashion.
+This variable controls whether overwrite mode is in effect.  The value
+should be @code{overwrite-mode-textual}, @code{overwrite-mode-binary},
+or @code{nil}.  @code{overwrite-mode-textual} specifies textual
+overwrite mode (treats newlines and tabs specially), and
+@code{overwrite-mode-binary} specifies binary overwrite mode (treats
+newlines and tabs like any other characters).
 @end defvar
 
 @node Deletion
@@ -467,7 +473,7 @@ cases.
   All of the deletion functions operate on the current buffer, and all
 return a value of @code{nil}.
 
-@defun erase-buffer
+@deffn Command erase-buffer
 This function deletes the entire text of the current buffer, leaving it
 empty.  If the buffer is read-only, it signals a @code{buffer-read-only}
 error.  Otherwise, it deletes the text without asking for any
@@ -478,7 +484,7 @@ auto-saving of that buffer ``because it has shrunk''.  However,
 @code{erase-buffer} does not do this, the idea being that the future
 text is not really related to the former text, and its size should not
 be compared with that of the former text.
-@end defun
+@end deffn
 
 @deffn Command delete-region start end
 This command deletes the text in the current buffer in the region
@@ -779,6 +785,12 @@ is convenient because it lets the user use all the kill commands to copy
 text into the kill ring from a read-only buffer.
 @end deffn
 
+@defopt kill-read-only-ok
+If this option is non-@code{nil}, @code{kill-region} does not get an
+error if the buffer is read-only.  Instead, it simply returns, updating
+the kill ring but not changing the buffer.
+@end defopt
+
 @deffn Command copy-region-as-kill start end
 This command saves the region defined by @var{start} and @var{end} on
 the kill ring (including text properties), but does not delete the text
@@ -1000,10 +1012,11 @@ A value of @code{t} disables the recording of undo information.
 Here are the kinds of elements an undo list can have:
 
 @table @code
-@item @var{integer}
-This kind of element records a previous value of point.  Ordinary cursor
-motion does not get any sort of undo record, but deletion operations use
-these entries to record where point was before the command.
+@item @var{position}
+This kind of element records a previous value of point; undoing this
+element moves point to @var{position}.  Ordinary cursor motion does not
+make any sort of undo record, but deletion operations use these entries
+to record where point was before the command.
 
 @item (@var{beg} . @var{end})
 This kind of element indicates how to delete text that was inserted.
@@ -1037,11 +1050,6 @@ relocated due to deletion of surrounding text, and that it moved
 @var{adjustment} character positions.  Undoing this element moves
 @var{marker} @minus{} @var{adjustment} characters.
 
-@item @var{position}
-This element indicates where point was at an earlier time.  Undoing this
-element sets point to @var{position}.  Deletion normally creates an
-element of this kind as well as a reinsertion element.
-
 @item nil
 This element is a boundary.  The elements between two boundaries are
 called a @dfn{change group}; normally, each change group corresponds to
@@ -1185,11 +1193,16 @@ It uses the ordinary paragraph motion commands to find paragraph
 boundaries.  @xref{Paragraphs,,, emacs, The Emacs Manual}.
 @end deffn
 
-@deffn Command fill-region start end &optional justify
+@deffn Command fill-region start end &optional justify nosqueeze
 This command fills each of the paragraphs in the region from @var{start}
 to @var{end}.  It justifies as well if @var{justify} is
 non-@code{nil}.
 
+If @var{nosqueeze} is non-@code{nil}, that means to leave whitespace
+other than line breaks untouched.  If @var{to-eop} is non-@code{nil},
+that means to keep filling to the end of the paragraph---or next hard
+newline, if @code{use-hard-newlines} is enabled (see below).
+
 The variable @code{paragraph-separate} controls how to distinguish
 paragraphs.  @xref{Standard Regexps}.
 @end deffn
@@ -1220,7 +1233,7 @@ This variable alters the action of @code{fill-individual-paragraphs} as
 described above.
 @end defopt
 
-@deffn Command fill-region-as-paragraph start end &optional justify
+@deffn Command fill-region-as-paragraph start end &optional justify nosqueeze squeeze-after
 This command considers a region of text as a single paragraph and fills
 it.  If the region was made up of many paragraphs, the blank lines
 between paragraphs are removed.  This function justifies as well as
@@ -1228,11 +1241,13 @@ filling when @var{justify} is non-@code{nil}.
 
 In an interactive call, any prefix argument requests justification.
 
-@cindex Adaptive Fill mode
-In Adaptive Fill mode, which is enabled by default, calling the function
-@code{fill-region-as-paragraph} on an indented paragraph when there is
-no fill prefix uses the indentation of the second line of the paragraph
-as the fill prefix.
+If @var{nosqueeze} is non-@code{nil}, that means to leave whitespace
+other than line breaks untouched.  If @var{squeeze-after} is
+non-@code{nil}, specifies a position in the region, and means don't
+canonicalize spaces before that position.
+
+In Adaptive Fill mode, this command calls @code{fill-context-prefix} to
+choose a fill prefix by default.  @xref{Adaptive Fill}.
 @end deffn
 
 @deffn Command justify-current-line how eop nosqueeze
@@ -1267,6 +1282,12 @@ This function returns the proper justification style to use for filling
 the text around point.
 @end defun
 
+@defopt sentence-end-double-space
+If this variable is non-@code{nil}, a period followed by just one space
+does not count as the end of a sentence, and the filling functions
+avoid breaking the line at such a place.
+@end defopt
+
 @defvar fill-paragraph-function
 This variable provides a way for major modes to override the filling of
 paragraphs.  If the value is non-@code{nil}, @code{fill-paragraph} calls
@@ -1306,7 +1327,7 @@ together.  The resulting filled lines also start with the fill prefix.
 The fill prefix follows the left margin whitespace, if any.
 @end defopt
 
-@defvar fill-column
+@defopt fill-column
 This buffer-local variable specifies the maximum width of filled lines.
 Its value should be an integer, which is a number of columns.  All the
 filling, justification, and centering commands are affected by this
@@ -1316,7 +1337,7 @@ As a practical matter, if you are writing text for other people to
 read, you should set @code{fill-column} to no more than 70.  Otherwise
 the line will be too long for people to read comfortably, and this can
 make the text seem clumsy.
-@end defvar
+@end defopt
 
 @defvar default-fill-column
 The value of this variable is the default value for @code{fill-column} in
@@ -1392,6 +1413,50 @@ place where a break is being considered.  If the function returns
 non-@code{nil}, then the line won't be broken there.
 @end defvar
 
+@node Adaptive Fill
+@section Adaptive Fill Mode
+@cindex Adaptive Fill mode
+
+  Adaptive Fill mode chooses a fill prefix automatically from the text
+in each paragraph being filled.
+
+@defopt adaptive-fill-mode
+Adaptive Fill mode is enabled when this variable is non-@code{nil}.
+It is @code{t} by default.
+@end defopt
+
+@defun fill-context-prefix from to
+This function implements the heart of Adaptive Fill mode; it chooses a
+fill prefix based on the text between @var{from} and @var{to}.  It does
+this by looking at the first two lines of the paragraph, based on the
+variables described below.
+@end defun
+
+@defopt adaptive-fill-regexp
+This variable holds a regular expression to control Adaptive Fill mode.
+Whichever characters starting after the line's left margin match this
+regular expression, those are the candidate for the fill prefix.
+@end defopt
+
+@defopt adaptive-fill-first-line-regexp
+In a one-line paragraph, if the candidate fill prefix matches
+this regular expression, or if it matches @code{comment-start-skip},
+then it is used---otherwise, it is replaced with an equivalent
+number of spaces.
+
+However, the fill prefix is never taken from a one-line paragraph
+if it would act as a paragraph starter on subsequent lines.
+@end defopt
+
+@defopt adaptive-fill-function
+You can specify more complex ways of choosing a fill prefix
+automatically by setting this variable to a function.  The function is
+called when @code{adaptive-fill-regexp} does not match, with point after
+the left margin of a line, and it should return the appropriate fill
+prefix based on that line.  If it returns @code{nil}, that means it sees
+no fill prefix in that line.
+@end defopt
+
 @node Auto Filling
 @comment  node-name,  next,  previous,  up
 @section Auto Filling
@@ -1513,10 +1578,11 @@ the sort order.
 @end group
 @group
   (interactive "P\nr")
-  (save-restriction
-    (narrow-to-region beg end)
-    (goto-char (point-min))
-    (sort-subr reverse 'forward-line 'end-of-line)))
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (goto-char (point-min))
+      (sort-subr reverse 'forward-line 'end-of-line))))
 @end group
 @end example
 
@@ -1531,8 +1597,11 @@ its @code{sort-subr} call looks like this:
 @example
 @group
 (sort-subr reverse
-           (function 
-            (lambda () (skip-chars-forward "\n \t\f")))
+           (function
+             (lambda ()
+               (while (and (not (eobp))
+                      (looking-at paragraph-separate))
+                 (forward-line 1))))
            'forward-paragraph)
 @end group
 @end example
@@ -1541,6 +1610,11 @@ Markers pointing into any sort records are left with no useful
 position after @code{sort-subr} returns.
 @end defun
 
+@defopt sort-fold-case
+If this variable is non-@code{nil}, @code{sort-subr} and the other
+buffer sorting functions ignore case when comparing strings.
+@end defopt
+
 @deffn Command sort-regexp-fields reverse record-regexp key-regexp start end
 This command sorts the region between @var{start} and @var{end}
 alphabetically as specified by @var{record-regexp} and @var{key-regexp}.
@@ -1823,7 +1897,7 @@ but in some text modes, where @key{TAB} inserts a tab,
 @deffn Command reindent-then-newline-and-indent
 @comment !!SourceFile simple.el
 This command reindents the current line, inserts a newline at point,
-and then reindents the new line (the one following the newline just
+and then indents the new line (the one following the newline just
 inserted).
 
 This command does indentation on both lines according to the current
@@ -3177,7 +3251,7 @@ end of the region just changed, and the length of the text that existed
 before the change.  All three arguments are integers.  The buffer that's
 about to change is always the current buffer.
 
-The length of the old text the difference between the buffer positions
+The length of the old text is the difference between the buffer positions
 before and after that text as it was before the change.  As for the
 changed text, its length is simply the difference between the first two
 arguments.
index 264875768b92c8b90561927bef9602f63f3a4507..5a1b6cc5dcf146db0ba717b4e221dfeb1fc1b13e 100644 (file)
@@ -354,7 +354,7 @@ compiled specially (@pxref{Array Functions}):
 @end example
 
 @item
-If calling a small function accounts for a  substantial part of your
+If calling a small function accounts for a substantial part of your
 program's running time, make the function inline.  This eliminates
 the function call overhead.  Since making a function inline reduces
 the flexibility of changing the program, don't do it unless it gives
@@ -396,7 +396,7 @@ that looks good.
 
 @item
 For consistency, phrase the verb in the first sentence of a
-documentation string as an infinitive with ``to'' omitted.  For
+function's documentation string as an infinitive with ``to'' omitted.  For
 instance, use ``Return the cons of A and B.'' in preference to ``Returns
 the cons of A and B@.''  Usually it looks good to do likewise for the
 rest of the first paragraph.  Subsequent paragraphs usually look better
@@ -478,8 +478,8 @@ t and nil without single-quotes.  (In this manual, we use a different
 convention, with single-quotes for all symbols.)
 @end ifinfo
 
-Help mode automatically creates hyperlinks when documentation strings
-use symbol names inside single quotes, when the symbol has either a
+Help mode automatically creates a hyperlink when a documentation string
+uses a symbol name inside single quotes, if the symbol has either a
 function or a variable definition.  You do not need to do anything
 special to make use of this feature.  However, when a symbol has both a
 function definition and a variable definition, and you want to refer to
index 1451db07d065dbe139b24a171543cbc489be7746..4d46e19d0dc191e4c6ff30b705c7c3c44d61b626 100644 (file)
@@ -1073,7 +1073,7 @@ and/or frames is an important customization method.
 
   This section describes buffer-local bindings; for frame-local
 bindings, see the following section, @ref{Frame-Local Variables}.  (A few
-variables have bindings that are local to each terminal; see
+variables have bindings that are local to each terminal; see
 @ref{Multiple Displays}.)
 
 @menu
index bd4bad02137f46b91e42434cdc21f1195bca4636..31151040e586e0ac082295b14f107f6a0cf62bc9 100644 (file)
@@ -252,10 +252,13 @@ characters; see @ref{Display Tables}.
 @end deffn
 
 @deffn Command split-window-vertically size
-This function splits the selected window into two windows, one above
-the other, leaving the selected window with @var{size} lines.
+This function splits the selected window into two windows, one above the
+other, leaving the upper of the two window selected, with @var{size}
+lines.  (If @var{size} is negative, then the lower of the two windows
+gets @minus{} @var{size} lines and the upper window gets the rest, but
+the upper window is still the one selected.)
 
-This function is simply an interface to @code{split-windows}.
+This function is simply an interface to @code{split-window}.
 Here is the complete function definition for it:
 
 @smallexample
@@ -272,7 +275,7 @@ Here is the complete function definition for it:
 This function splits the selected window into two windows
 side-by-side, leaving the selected window with @var{size} columns.
 
-This function is simply an interface to @code{split-windows}.  Here is
+This function is simply an interface to @code{split-window}.  Here is
 the complete definition for @code{split-window-horizontally} (except for
 part of the documentation string):
 
@@ -366,16 +369,20 @@ where there is only one window), then the frame reverts to having a
 single window showing another buffer chosen with @code{other-buffer}.
 @xref{The Buffer List}.
 
-The argument @var{frame} controls which frames to operate on:
+The argument @var{frame} controls which frames to operate on.  This
+function does not use it in quite the same way as the other functions
+which scan all windows; specifically, the values @code{t} and @code{nil}
+have the opposite of their meanings in other functions.  Here are the
+full details:
 
 @itemize @bullet
 @item
-If it is @code{nil}, operate on the selected frame.
+If it is @code{nil}, operate on all frames.
 @item
-If it is @code{t}, operate on all frames.
+If it is @code{t}, operate on the selected frame.
 @item
 If it is @code{visible}, operate on all visible frames.
-@item 0
+@item
 If it is 0, operate on all visible or iconified frames.
 @item
 If it is a frame, operate on that frame.
@@ -463,8 +470,8 @@ If there are two windows of the same size, then the function returns
 the window that is first in the cyclic ordering of windows (see
 following section), starting from the selected window.
 
-The argument @var{frame} controls which set of windows are
-considered.  See @code{get-lru-window}, above.
+The argument @var{frame} controls which set of windows to
+consider.  See @code{get-lru-window}, above.
 @end defun
 
 @node Cyclic Window Ordering
@@ -677,7 +684,7 @@ This variable records the time at which a buffer was last made visible
 in a window.  It is always local in each buffer; each time
 @code{set-window-buffer} is called, it sets this variable to
 @code{(current-time)} in the specified buffer (@pxref{Time of Day}).
-When a buffer is first created, @code{buffer-display-count} starts out
+When a buffer is first created, @code{buffer-display-time} starts out
 with the value @code{nil}.
 @end defvar
 
@@ -704,9 +711,9 @@ functions work by calling @code{set-window-buffer}.
 current so that a Lisp program can access or modify it; they are too
 drastic for that purpose, since they change the display of buffers in
 windows, which would be gratuitous and surprise the user.  Instead, use
-@code{set-buffer} (@pxref{Current Buffer}) and @code{save-excursion}
-(@pxref{Excursions}), which designate buffers as current for programmed
-access without affecting the display of buffers in windows.
+@code{set-buffer} and @code{save-current-buffer} (@pxref{Current
+Buffer}), which designate buffers as current for programmed access
+without affecting the display of buffers in windows.
 
 @deffn Command switch-to-buffer buffer-or-name &optional norecord
 This function makes @var{buffer-or-name} the current buffer, and also
@@ -824,11 +831,23 @@ function does nothing.
 @var{buffer-or-name}.
 
 If the argument @var{frame} is non-@code{nil}, it specifies which frames
-to check when deciding whether the buffer is already displayed.  Its
-value means the same thing as in functions @code{get-buffer-window}
-(@pxref{Buffers and Windows}).  If the buffer is already displayed
-in some window on one of these frames, @code{display-buffer} simply
-returns that window.
+to check when deciding whether the buffer is already displayed.  If the
+buffer is already displayed in some window on one of these frames,
+@code{display-buffer} simply returns that window.  Here are the possible
+values of @var{frame}:
+
+@itemize @bullet
+@item
+If it is @code{nil}, consider windows on the selected frame.
+@item
+If it is @code{t}, consider windows on all frames.
+@item
+If it is @code{visible}, consider windows on all visible frames.
+@item
+If it is 0, consider windows on all visible or iconified frames.
+@item
+If it is a frame, consider windows on that frame.
+@end itemize
 
 Precisely how @code{display-buffer} finds or creates a window depends on
 the variables described below.
@@ -882,7 +901,7 @@ This variable holds an alist specifying frame parameters used when
 more information about frame parameters.
 @end defvar
 
-@defvar special-display-buffer-names
+@defopt special-display-buffer-names
 A list of buffer names for buffers that should be displayed specially.
 If the buffer's name is in this list, @code{display-buffer} handles the
 buffer specially.
@@ -895,9 +914,9 @@ frame.  There are two possibilities for the rest of the list.  It can be
 an alist, specifying frame parameters, or it can contain a function and
 arguments to give to it.  (The function's first argument is always the
 buffer to be displayed; the arguments from the list come after that.)
-@end defvar
+@end defopt
 
-@defvar special-display-regexps
+@defopt special-display-regexps
 A list of regular expressions that specify buffers that should be
 displayed specially.  If the buffer's name matches any of the regular
 expressions in this list, @code{display-buffer} handles the buffer
@@ -908,7 +927,7 @@ By default, special display means to give the buffer a dedicated frame.
 If an element is a list, instead of a string, then the @sc{car} of the
 list is the regular expression, and the rest of the list says how to
 create the frame.  See above, under @code{special-display-buffer-names}.
-@end defvar
+@end defopt
 
 @defvar special-display-function
 This variable holds the function to call to display a buffer specially.
@@ -1084,7 +1103,7 @@ If the last redisplay of @var{window} was preempted, and did not finish,
 Emacs does not know the position of the end of display in that window.
 In that case, this function returns @code{nil}.
 
-If you @var{update} is non-@code{nil}, @code{window-end} always returns
+If @var{update} is non-@code{nil}, @code{window-end} always returns
 an up-to-date value for where the window ends.  If the saved value is
 valid, @code{window-end} returns that; otherwise it computes the correct
 value by scanning the buffer text.
@@ -1253,13 +1272,38 @@ If this variable is non-@code{nil}, it tells @code{scroll-other-window}
 which buffer to scroll.
 @end defvar
 
-@defopt scroll-step
+@tindex scroll-margin
+@defopt scroll-margin
+This option specifies the size of the scroll margin---a minimum number
+of lines between point and the top or bottom of a window.  Whenever
+point gets within this many lines of the top or bottom of the window,
+the window scrolls automatically (if possible) to move point out of the
+margin, closer to the center of the window.
+@end defopt
+
+@tindex scroll-conservatively
+@defopt scroll-conservatively
 This variable controls how scrolling is done automatically when point
-moves off the screen.  If the value is zero, then redisplay scrolls the
-text to center point vertically in the window.  If the value is a
-positive integer @var{n}, then redisplay brings point back on screen by
-scrolling @var{n} lines in either direction, if possible; otherwise, it
-centers point.  The default value is zero.
+moves off the screen (or into the scroll margin).  If the value is zero,
+then redisplay scrolls the text to center point vertically in the
+window.  If the value is a positive integer @var{n}, then redisplay
+scrolls the window up to @var{n} lines in either direction, if that will
+bring point back into view.  Otherwise, it centers point.  The default
+value is zero.
+@end defopt
+
+@defopt scroll-step
+This variable is an older variant of @code{scroll-conservatively}.  The
+difference is that it if its value is @var{n}, that permits scrolling
+only by precisely @var{n} lines, not a smaller number.  This feature
+does not work with @code{scroll-margin}.  The default value is zero.
+@end defopt
+
+@tindex scroll-preserve-screen-position
+@defopt scroll-preserve-screen-position
+If this option is non-@code{nil}, the scroll functions move point so
+that the vertical position of the cursor is unchanged, when that is
+possible.
 @end defopt
 
 @defopt next-screen-context-lines
@@ -1608,6 +1652,17 @@ It could be defined as follows:
 @end example
 @end deffn
 
+@deffn Command shrink-window-if-larger-than-buffer window
+This command shrinks @var{window} to be as small as possible while still
+showing the full contents of its buffer---but not less than
+@code{window-min-height} lines.
+
+However, the command does nothing if the window is already too small to
+display the whole text of the buffer, or if part of the contents are
+currently scrolled off screen, or if the window is not the full width of
+its frame, or if the window is the only window in its frame.
+@end deffn
+
 @cindex minimum window size
   The following two variables constrain the window-size-changing
 functions to a minimum height and width.
@@ -1624,7 +1679,7 @@ less than two.  The default value is 4.
 
 @defopt window-min-width
 The value of this variable determines how narrow a window may become
-before it automatically deleted.  Making a window smaller than
+before it is automatically deleted.  Making a window smaller than
 @code{window-min-width} automatically deletes it, and no window may be
 created narrower than this.  The absolute minimum width is one; any
 value below that is ignored.  The default value is 10.
@@ -1813,12 +1868,9 @@ display-start position.
 
 Displaying a different buffer in the window also runs these functions.
 
-These functions cannot expect @code{window-end} (@pxref{Window Start})
-to return a meaningful value, because that value is updated only by
-redisplaying the buffer.  So if one of these functions needs to know the
-last character that will fit in the window with its current
-display-start position, it has to find that character using
-@code{vertical-motion} (@pxref{Screen Lines}).
+These functions must be careful in using @code{window-end}
+(@pxref{Window Start}); if you need an up-to-date value, you must use
+the @var{update} argument to ensure you get it.
 @end defvar
 
 @defvar window-size-change-functions
@@ -1846,7 +1898,7 @@ Windows}) is what you need here.
 
 @defvar redisplay-end-trigger-functions
 @tindex redisplay-end-trigger-functions
-This abnormal hook is run whenever redisplay in window uses text that
+This abnormal hook is run whenever redisplay in window uses text that
 extends past a specified end trigger position.  You set the end trigger
 position with the function @code{set-window-redisplay-end-trigger}.  The
 functions are called with two arguments: the window, and the end trigger