(Feval): Put check for interrupt_input_block in #if 0.
[bpt/emacs.git] / lispref / anti.texi
dissimilarity index 95%
index ca94cf3..c4521b6 100644 (file)
-@c -*-texinfo-*-
-@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1993 Free Software Foundation, Inc. 
-@c See the file elisp.texi for copying conditions.
-@node Antinews, Index, Standard Hooks, Top
-@appendix Emacs 18 Antinews
-
-For those users who live backwards in time, here is information about
-downgrading to Emacs version 18.  We hope you will enjoy the greater
-simplicity that results from the absence of many Emacs 19 features.
-
-@section Old Features in the Lisp Language
-
-The following functions are missing or different in Emacs version 18.
-
-@itemize @bullet
-@item
-The functions @code{delete}, @code{member}, @code{indirect-function},
-@code{map-y-or-n-p}, and @code{invocation-name} have been removed.
-
-@item
-The function @code{read} now skips a terminator character that
-terminates a symbol when reading from a buffer.  Thus, if you use
-@code{read} on a buffer containing @samp{foo(bar)} following point, it
-returns @code{foo} and leaves point after the open-parenthesis.  This
-means there's no way you can properly read the list @samp{(bar)}, but
-that's the way the cookie crumbles.
-
-Because of this simplification, it's no longer necessary for an input
-stream function to accept an optional argument.  In Emacs 18, an input
-stream is always called with no arguments, and should always return
-the next character of input.
-
-@item
-The function @code{documentation} takes just one argument;
-@code{documentation-property} takes just two.
-
-@item
-@code{random} no longer has the optional argument @var{n}.
-
-@item 
-You can no longer arrange to run a hook if a particular Lisp library is
-loaded.  The variable @code{after-load-alist} and the function
-@code{eval-after-load} have been removed.
-
-@item
-The function @code{autoload} no longer supports autoloading a keymap.
-
-@item
-``Magic'' comments of the form @samp{;;;###autoload} are now just
-comments.  They don't do anything in particular except look pretty.
-If you want a function to be autoloaded by default, edit @file{loaddefs.h}
-by hand.  What do you think editors are for? 
-
-@item
-We took out the @samp{%S} from the @code{format} function, and the
-optional argument @var{noescap} from @code{prin1-to-string}.  We removed
-the @code{print-level} variable.
-@end itemize
-
-@section Compilation Features
-
-@itemize @bullet
-@item
-Inline functions are nonexistent in Emacs 18.  We find they make the
-calling function unnecessarily large.  (Small size is one of the 
-features of Emacs 18.)
-
-@item
-We eliminated the two special forms, @code{eval-when-compile} and
-@code{eval-and-compile}, as well as the @code{compile-defun} command.
-
-@item
-When you load a Lisp file or library, you will no longer receive a
-warning if the directory contains both a @samp{.elc} file and a new
-@samp{.el} file that is newer.  So be on your toes.
-
-@item
-We removed the special data type for byte-code functions.  Compiled
-functions now work by means of an interpreted function which calls
-the function @code{bytecode}.  That function runs the byte code
-interpreter.
-@end itemize
-
-@section Floating Point Numbers
-
-Emacs 18 doesn't have or need floating point arithmetic built in.
-It has a handy Lisp program that allows you to emulate floating point.
-You'll have to write programs specially to use it, though.
-
-As a result, certain macros, functions, and predicates no longer handle
-specifications for floating point numbers.
-
-@itemize @bullet
-@item
-The function @code{string-to-number}, the predicate @code{floatp}, and
-the variable @code{float-output-format} have all been eliminated.
-
-@item
-The functions @code{float}, @code{truncate}, @code{floor}, @code{ceil},
-@code{round}, and @code{logb} do not exist; neither do the functions
-@code{abs}, @code{cos}, @code{sin}, @code{tan}, @code{acos},
-@code{asin}, @code{atan}, @code{exp}, @code{expt}, @code{log10},
-@code{log}, or @code{sqrt}.
-
-@item
-The @code{format} function no longer handles the specifications
-@samp{%e}, @samp{%f} and @samp{%g} for printing floating point numbers;
-likewise for @code{message}.
-@end itemize
-
-@section Changes in Basic Editing Functions
-
-@itemize @bullet
-@item
-@code{kill-new} and @code{kill-append}, the primitives for putting text
-in the kill ring, have been eliminated.
-@c @code{kill-append} seems to exist as a non-documented (no doc string)
-@c primitive in emacs 18.  but news.texi said it was new for 19.
-
-@item
-The variables @code{interprogram-paste-function} and
-@code{interprogram-cut-function} have been removed in Emacs 18.
-
-In addition, there's no need for @code{mark-active} and
-@code{deactivate-mark} because there is no Transient Mark mode.  We also
-removed the hooks @code{activate-mark-hook} and
-@code{deactivate-mark-hook}.
-
-@item
-The @code{kill-region} function can no longer be used in read-only
-buffers.  The @code{compare-buffer-substrings} and @code{current-kill}
-functions have been removed.
-
-@item
-The variable @code{overwrite-mode-binary} has been removed.
-
-@item
-The function @code{move-to-column} allows just one argument,
-@var{column}. 
-
-@item 
-The search functions now just return @code{t} when successful.  This
-affects the functions @code{search-forward}, @code{search-backward},
-@code{word-search-forward}, @code{word-search-backward},
-@code{re-search-forward}, and @code{re-search-backward}.
-
-@item
-When you do regular expression searching or matching, there is a fixed
-limit of ten @samp{\(@dots{}\)} pairs that you can get information about
-with @code{match-beginning} and @code{match-end}.  Moreover,
-@code{save-match-data} does not exist; you must use an explicit
-@code{unwind-protect} to save the match data.
-
-@item
-@code{translate-region} is gone.
-
-@item
-The variables @code{before-change-function},
-@code{after-change-function}, and @code{first-change-hook} have been
-eliminated.
-
-@item
-The second argument to @code{insert-abbrev-table-description} is no
-longer optional.
-@end itemize
-
-@section Text Properties
-
-We eliminated text properties.
-
-@section Features for Files
-Many file-related functions have been eliminated or simplified.  Here is
-a basic listing of these functions.
-
-@itemize @bullet
-@item
-The functions @code{file-accessible-directory-p}, @code{file-truename},
-@code{make-directory}, @code{delete-directory},
-@code{set-visited-file-modtime}, @code{directory-abbrev-alist},
-@code{abbreviate-file-name}, @code{write-region},
-@code{write-contents-hooks}, @code{after-save-hook},
-@code{set-default-file-modes}, @code{default-file-modes}, and
-@code{unix-sync} have been eliminated.
-
-@item
-We got rid of the ``initial file name'' argument to
-@code{read-file-name}.
-
-@item
-Additionally, we removed the 12th element from the list returned by
-@code{file-attributes}.
-
-@item
-@code{directory-files} always sorts the list of files.  It's not user
-friendly to process the files in any haphazard order.
-
-@item
-We eliminated the variables @code{write-contents-hooks} and
-@code{local-write-file-hooks}.
-@end itemize
-
-@section Making Certain File Names ``Magic''
-
-There are no more magic filenames.  Sorry, but all the mana has been
-used up.
-
-@section Frames
-
-There is only one frame in Emacs 18, so all of the frame functions have
-been eliminated.
-
-@section X Window System Features
-
-We have simplified the way Emacs and X interact by removing a great deal
-of creeping featurism.
-
-@itemize @bullet
-@item
-The functions @code{mouse-position} and @code{set-mouse-position}, and
-the special form @code{track-mouse}, have been eliminated.
-
-@item
-Likewise, the functions @code{x-set-selection}, @code{x-set-cut-buffer},
-@code{x-close-current-connection}, and @code{x-open-connection} have all
-been removed from Emacs Lisp 18.
-
-@item
-We removed a series of functions that gave information about the X
-server and the screen you were using; after all, the whole point of X is
-that all servers are equivalent.  The names of the removed functions
-are: @code{x-display-screens}, @code{x-server-version},
-@code{x-server-vendor}, @code{x-display-pixel-height},
-@code{x-display-mm-height}, @code{x-display-pixel-width},
-@code{x-display-mm-width}, @code{x-display-backing-store},
-@code{x-display-save-under}, @code{x-display-planes},
-@code{x-display-visual-class}, @code{x-display-color-p}, and
-@code{x-display-color-cells}.
-
-@item
-Additionally, we removed the variable @code{x-no-window-manager} and the
-functions @code{x-synchronize} and @code{x-get-resource}.
-
-@item
-We didn't abolish @code{x-display-color-p}, but we renamed it to
-@code{x-color-display-p}.  We did abolish @code{x-color-defined-p}.
-
-@item
-@code{x-popup-menu} no longer accepts a keymap for its first argument.
-
-@item
-We removed both the function @code{x-rebind-key} and the related
-function @code{x-rebind-keys}.
-
-@item 
-We abolished @code{x-parse-geometry}.
-@end itemize
-
-@section Window Actions that Were No Longer Useful
-
-Various behaviors of windows in Emacs 19 were obsolete by the time Emacs
-18 was due to come out.  We have removed them.  These changes are listed
-below. 
-
-@itemize @bullet
-@item
-We removed the functions @code{window-at}, @code{window-minibuffer-p},
-@code{set-window-dedicated-p}, @code{coordinates-in-window-p},
-@code{walk-windows}, @code{window-dedicated-p}, and @code{window-end}.
-
-@item
-We removed the variables @code{pop-up-frames},
-@code{pop-up-frame-function}, @code{display-buffer-function}, and
-@code{other-window-scroll-buffer}.
-
-@item
-The function @code{minibuffer-window} no longer accepts a frame as
-argument, since frames as objects do not exist in Emacs version 18.  It
-returns the window used for minibuffers.
-
-@item
-The functions @code{next-window} and @code{previous-window} no longer
-accept the @var{all-frames} argument since there is just one frame.
-
-@item
-The functions @code{get-lru-window}, @code{get-largest-window},
-@code{get-buffer-window}, and @code{get-buffer-window} also no longer
-take the optional argument @var{all-frames} because there is just one
-frame to search.
-@end itemize
-
-@section Display Features
-
-@itemize @bullet
-@item
-There are no overlays, and no faces.
-
-@item
-We eliminated the mode line spec @samp{%l} that in later versions used
-to display the current line number.  We removed the variables
-@code{line-number-mode} and @code{line-number-display-limit}.
-
-@item
-@code{baud-rate} is now a function rather than a variable.
-
-@item
-You can no longer call @code{message} with @code{nil} as the only
-argument; therefore, you can not reliably make the contents of the
-minibuffer visible.
-
-@item
-The variable @code{temp-buffer-show-function} has been renamed
-@code{temp-buffer-show-hook}.
-
-@item
-We removed the function @code{force-mode-line-update}.  Use
-the following idiom instead:
-
-@example
-(set-buffer-modified-p (buffer-modified-p))
-@end example
-
-@item
-Display tables no longer exist.  We know what the @sc{ASCII} characters
-should look like, and we made them look that way.
-@end itemize
-
-@section Working with Input Events
-
-The big news about input events is that we got rid of function key
-and mouse events.  Now the only input events are characters.
-What's more, these characters now have to be in the range of 0 to 127,
-optionally with a meta bit.  This makes for big simplifications.
-
-@itemize @bullet
-@item
-Functions like @code{define-key}, @code{global-set-key},
-@code{read-key-sequence}, and @code{local-set-key} used to accept
-strings or vectors in Emacs 19; now they only accept strings.
-
-@item
-The documentation functions (@code{single-key-description},
-@code{key-description}, etc.) also no longer accept vectors, but they do
-accept strings.
-
-@item
-We removed the @code{read-event}, @code{event-start},
-@code{posn-window}, @code{posn-point}, @code{posn-col-row},
-@code{posn-timestamp}, @code{scroll-bar-scale}, and @code{event-end}
-functions, since they were useful only for non-character events.
-
-@item
-We removed the @code{unread-command-events} and @code{last-event-frame}
-variables.
-
-@item
-The functions @code{this-command-keys} and @code{recent-keys} now always
-return a string.  Likewise, a keyboard macro's definition can only be a
-string, not a vector.
-
-@item
-We eliminated @samp{e} as an interactive specification since it
-was useful only with non-character events.
-
-@item
-In Emacs 18, we represent Meta characters as character objects with the
-same encoding used in strings: 128 plus the corresponding non-Meta
-@sc{ASCII} character.
-@end itemize
-
-@section Menus
-
-@itemize @bullet
-@item
-You can no longer define menus as keymaps; good system design requires
-crafting a special-purpose interface for each facility, so it can
-precisely fit the requirements of that facility.  We decided that
-unifying keymaps and menus was simply too much of a strain.
-
-@item
-In Emacs 18, you can activate menus only with the mouse.  Using them
-with a keyboard was too confusing for too many users.
-
-@item
-Emacs 18 has no menu bars.  All functions and variables related to the
-menu bar have been eliminated.
-@end itemize
-
-@section Changes in Minibuffer Features
-
-@itemize @bullet
-@item
-The minibuffer history feature has been eliminated.  Thus, we removed
-the optional argument @var{hist} from the minibuffer input functions
-@code{read-from-minibuffer} and @code{completing-read}.
-
-@item
-The @var{initial} argument to @code{read-from-minibuffer} and other
-minibuffer input functions can no longer be a cons cell
-@code{(@var{string} . @var{position})}.
-
-@item
-In the function @code{read-no-blanks-input}, the @var{initial} argument
-is no longer optional.
-@end itemize
-
-@section New Features for Defining Commands
-
-@itemize @bullet
-@item
-The special meaning of @samp{@@} in an interactive specification has
-been eliminated.
-
-@item
-Emacs 18 does not support use of format-style @samp{%}-sequences in the
-prompt strings in interactive specifications.
-
-@item
-The property @code{enable-recursive-minibuffers} no longer has any
-special meaning.
-@end itemize
-
-@section Removed Features for Reading Input
-
-@itemize @bullet
-@item
-We removed the third argument (@var{meta}) from the function
-@code{set-input-mode}.  Consequently, we added the variable
-@code{meta-flag}; set it to @code{t} to enable use of a Meta key, and
-to @code{nil} to disable it.  (Those are the only two alternatives.)
-
-@item
-We also removed the variable @code{extra-keyboard-modifiers}.
-
-@item
-We removed the function @code{keyboard-translate} and the variables
-@code{num-input-keys} and @code{function-key-map}.
-@end itemize
-
-@section Removed Syntax Table Features
-
-@itemize @bullet
-@item
-We eliminated the functions @code{skip-syntax-forward},
-@code{skip-syntax-backward}, @code{forward-comment}.
-
-@item
-We removed the syntax flag for ``prefix syntax'' and the flag for the
-alternate comment style.  Emacs 18 supports only one style of comment
-in any given syntax table.
-
-@item
-We abolished the variable @code{words-include-escapes}.
-@end itemize
-
-@section The Case Table
-
-@itemize @bullet
-@item
-Case tables do not exist in Emacs 18.  Due to this change, we have
-removed the associated functions @code{set-standard-case-table},
-@code{standard-case-table}, @code{current-case-table},
-@code{set-case-table}, and @code{set-case-syntax-pair}.
-@end itemize
-
-@section Features for Dealing with Buffers
-
-@itemize @bullet
-@item
-We eliminated several functions for dealing with buffers:
-@code{buffer-modified-tick} and @code{generate-new-buffer-name}.
-
-@item
-We renamed @code{buffer-disable-undo} to @code{buffer-flush-undo}---a
-more picturesque name, you will agree.
-
-@item
-The function @code{other-buffer} takes just one argument in Emacs 18.
-
-@item
-The function @code{rename-buffer} now requires you to specify precisely
-the new name you want.
-
-@item
-We removed the local variable @code{list-buffers-directory}.
-
-@item
-We got rid of the hook @code{kill-buffer-hook}.
-@end itemize
-
-@section Local Variables Features
-
-@itemize @bullet
-@item
-The function @code{kill-all-local-variables} always eliminates all
-buffer-local variables of the current buffer.  No more exceptions.
-
-@item
-Making a variable buffer-local when it is void now sets it to
-@code{nil}.
-
-@item
-We eliminated the functions @code{default-boundp}, because it is no
-longer possible for the default binding of a variable to be void.
-
-@item
-The special forms @code{defconst} and @code{defvar} now set the
-variable's local value rather than its default value when the variable
-is local in the current buffer.
-@end itemize
-
-@section Features for Subprocesses
-
-@itemize @bullet
-@item
-@code{call-process} and @code{call-process-region} no longer indicate
-the termination status of the subprocess.  We call on users to have faith
-that the subprocess executed properly.
-
-@item
-The standard asynchronous subprocess features do not work on VMS;
-instead, special VMS asynchronous subprocess functions have been added.
-Since they are only for VMS, we can't be bothered documenting them;
-sorry.  Use the source, Luke!
-
-@item
-The function @code{signal-process} has been removed.
-
-@item
-We eliminated the transaction queue feature, and the associated
-functions @code{tq-create}, @code{tq-enqueue}, and @code{tq-close}.
-@end itemize
-
-@section Dealing with Times And Time Delays
-
-@itemize @bullet
-@item
-We removed the functions @code{current-time}, @code{current-time-zone},
-@code{run-at-time}, and @code{cancel-timer}. 
-
-@item
-The function @code{current-time-string} no longer accepts any optional
-arguments.
-
-@item
-The functions @code{sit-for} and @code{sleep-for} no longer allow an
-optional argument to let you specify the time period in milliseconds;
-just in seconds.  Additionally, we took out the optional third argument
-@var{nodisp} from @code{sit-for}.
-
-@item
-We removed the optional second and third arguments from the
-@code{accept-process-output} function.  It accepts just one argument,
-the process.
-@end itemize
-
-@need 3000
-
-@section Features not Available for Lisp Debuggers
-
-@itemize @bullet
-@item
-In Emacs 18, you can no longer specify to invoke the Lisp debugger only
-upon encountering certain types of errors.  Any non-@code{nil} value for
-the variable @code{debug-on-error} says to invoke the debugger for any
-error whatever.
-
-@item
-We removed the variable @code{command-debug-status} and the function
-@code{backtrace-frame}. 
-@end itemize
-
-@section Memory Allocation Changes
-
-@itemize @bullet
-@item
-We removed the function @code{memory-limit}.
-
-@item
-The list returned by @code{garbage-collect} no longer contains an
-element to describe floating point numbers, since there aren't any
-floating point numbers in Emacs 18.
-@end itemize
-
-@section Hook Changes
-
-@itemize @bullet
-@item
-We removed the hooks @code{pre-abbrev-expand-hook},
-@code{pre-command-hook}, @code{post-command-hook}, and
-@code{auto-save-hook}.
-
-@item
-We removed the variable
-@code{revert-buffer-insert-file-contents-function}.
-
-@item
-We also removed the new function @code{add-hook}; you will have to set
-your hooks by hand.  If you want to get really into the swing of things,
-set your hook variables the archaic way: store just one function rather
-than a list of functions.  But that is optional.
-
-@item
-The variable @code{lisp-indent-hook} has been renamed to
-@code{lisp-indent-function}.
-
-@item
-The variable @code{auto-fill-function} has been renamed to
-@code{auto-fill-hook}.
-
-@item
-The @code{blink-paren-function} has been renamed to
-@code{blink-paren-hook}.
-
-@item
-The variable @code{temp-buffer-show-function} has been renamed to
-@code{temp-buffer-show-hook}.
-@end itemize
+@c -*-texinfo-*-
+@c This is part of the GNU Emacs Lisp Reference Manual.
+@c Copyright (C) 1999 Free Software Foundation, Inc. 
+@c See the file elisp.texi for copying conditions.
+
+@c This node must have no pointers.
+
+@c @node Antinews, GNU Free Documentation License, System Interface, Top
+@appendix Emacs 20 Antinews
+
+For those users who live backwards in time, here is information about
+downgrading to Emacs version 20.4.  We hope you will enjoy the greater
+simplicity that results from the absence of many Emacs 21 features.  In
+the following section, we carry this information back to Emacs
+20.3, for which the previous printed edition of this manual was made.
+
+@section Old Lisp Features in Emacs 20
+
+@itemize @bullet
+@item
+The @code{push} and @code{pop} macros are not defined.
+Neither are @code{dolist} and @code{dotimes}.
+
+@item
+You can't display images in buffers.  (Emacs is meant for editing text.)
+With no images, there are no display margins, and no tool bars.
+
+@item
+The @code{display} text property has no special meaning; you can use it
+freely in Lisp programs, with no effects except what you implement for
+yourself.  With no images, who needs the @code{display} text property?
+
+@item
+The @code{field} text property has no special meaning; buffers are no
+longer subdivided into fields.  (The division of information into
+fields is always rather arbitrary.)
+
+@item
+Faces have fewer attributes.  The attributes @code{:family},
+@code{:height}, @code{:width}, @code{:weight}, and @code{:slant},
+have been replaced with a font name, a ``bold'' flag, and an
+``italic'' flag.
+
+The attributes @code{:overline}, @code{:strike-through} and @code{:box}
+have been eliminated too.  Underlining now always has the same color as
+the text---using any other color would be bad taste.
+
+With fewer font attributes, there are no functions
+@code{set-face-attribute} and @code{face-attribute}.  Instead, you
+access these attributes using functions such as @code{face-font}, and
+set them with functions such as @code{set-face-font}.  (These functions
+were available in Emacs 21, but are not as useful there.)
+
+@item
+The standard faces @code{scroll-bar}, @code{menu}, @code{border},
+@code{cursor}, and @code{mouse} have been eliminated.  They are rather
+strange, as faces, and therefore shouldn't really exist.  You can use
+@code{set-border-color}, @code{set-cursor-color} and
+@code{set-mouse-color} to specify the colors for the frame border, the
+text cursor, and the mouse cursor.  To specify menu colors, use X
+resources.
+
+@item
+Colors and other face attributes are no longer supported on character
+terminals, so you no longer have to worry about terminals making faces
+at you.
+
+@item
+Emacs will respect your peace and quiet, aside from occasional beeps,
+because there are no facilities for playing sounds.
+
+@item
+Emacs 20 provides a complex and badly designed method for handling
+character composition for languages such as Thai that display several
+letters as a single combined image.  We are too ashamed of it to tell
+you any more than that.
+
+@item
+@code{delete-and-extract-region} has been deleted; instead, use
+@code{buffer-substring} to extract the text, then use
+@code{delete-region} to delete it.
+
+@item
+Regular expressions do not support the POSIX character classes
+such as @samp{[:alpha:]}.  All characters are created equal.
+
+@item
+Hash tables have been eliminated; use alists instead.
+
+@item
+The Lisp printer does not detect and report circular structure.  That is
+ok, because the Lisp reader cannot recreate circular structure anyway.
+However, there is a library @samp{cust-print.el} which can report
+circular structure.
+
+@item
+Emacs provides its own implementation of scroll bars, instead
+of using those of the X toolkit.  They always use the frame foreground
+and background colors, so you cannot specify different colors for
+the scroll bars.
+
+@item
+For simplicity, all @sc{ascii} characters now have the same height and width.
+(Certain characters, such as Chinese characters, always have twice
+the standard width.)  All characters are created equal.
+
+@item
+You can now resize any Emacs window, and size changes in one window can
+propagate to all others.  Windows can no longer use
+@code{window-size-fixed} to get special privileges.
+
+@item
+The function @code{intern-soft} no longer accepts a symbol as argument.
+
+@item
+The function @code{bitmap-spec-p} has been renamed to
+@code{pixmap-spec-p} to encourage users to practice Emacs' help system
+while trying to find it.
+
+@item
+Tooltips operate using ordinary Emacs frames.
+
+@item
+Areas of the mode line are not mouse-sensitive; however, some mouse
+commands are available for the mode line as a whole.
+
+@item
+Windows cannot have header lines.  Conversely, there is no way to turn
+off the mode line of a window unless it is a minibuffer.
+
+@item
+Plain dashes are the only separators you can use in a menu.
+
+@item
+Vertical fractional scrolling does not exist.
+
+@item
+The functions @code{format} and @code{message} ignore and discard text
+properties.
+
+@item
+The function @code{propertize} does not exist;
+you can get the job done using @code{set-text-properties}.
+
+@item
+Colors are supported only on window systems, not on text-only terminals.
+So the support functions for colors on text-only terminals are
+not needed, and have been eliminated.
+
+@item
+The functions @code{color-values}, @code{color-defined-p} and
+@code{defined-colors} have been renamed to @code{x-color-values},
+@code{x-color-defined-p} and @code{x-defined-colors}.
+
+@item
+Windows cannot be made fixed-width or fixed-height;
+Emacs will adjust the size of all windows when it needs to.
+
+@item
+The string used as the value of the @code{before-string} or
+@code{after-string} property must contain only characters that display
+as a single column---control characters, including tabs and newlines,
+will give strange results.
+
+@item
+The minibuffer prompt does not actually appear in content of the
+minibuffer; it is displayed specially in the minibuffer window.
+
+@item
+The ``exclusive open'' feature of @code{write-region}
+has been eliminated; any non-@code{nil} value for the seventh
+argument now means to ask the user for confirmation.
+
+@item
+The function @code{buffer-size} always reports on the
+current buffer.
+
+@item
+The function @code{assoc-delete-all} has itself been deleted. 
+So there!
+
+@item
+The keyword @code{:set-after} no longer does anything in
+@code{defcustom}.
+
+@item
+The variable @code{small-temporary-file-directory} has no special
+meaning.  There's only one variable for specifying which directory to
+use for temporary files, @code{temporary-file-directory}, but not all
+Emacs features use it anyway.  Some use the @code{TMP} environment
+variable, and some use the @code{TMPDIR} environment variable.
+
+@item
+If the second argument of @code{save-some-buffers}, @var{pred}, is not
+@code{nil}, then the precise value no longer matters.  Any
+non-@code{nil} value means the same as @code{t}: offer to save each
+non-file buffer that has a non-@code{nil} value for
+@code{buffer-offer-save}.
+
+@item
+The variable @code{inhibit-modification-hooks}
+has no special meaning.
+
+@item
+The hook @code{fontification-functions} has been eliminated,
+but there are other hooks, such as @code{window-scroll-functions},
+that you can use to do a similar job.
+
+@item
+The variable  @code{redisplay-dont-pause}
+has no special meaning.
+
+@item
+The hook @code{calendar-move-hook} has been deleted.
+
+@item
+The function @code{move-to-column} treats any non-@code{nil}
+second argument just like @code{t}.
+@end itemize
+
+@section Old Lisp Features in Emacs 20.3
+
+Here are the most important of the features that you will learn
+to do without in Emacs 20.3:
+
+Here are changes in the Lisp language itself:
+
+@itemize @bullet
+@item
+The functions @code{line-beginning-position} and @code{line-end-position}
+have been eliminated.
+
+@item
+The functions @code{directory-files-and-attributes},
+@code{file-attributes-lessp}, and @code{file-expand-wildcards}, have
+been eliminated.
+
+@item
+The functions @code{decode-coding-region} and @code{encode-coding-region}
+leave text properties untouched, in case that is useful.  (It rarely makes
+any sense, though.)
+
+@item
+The functions @code{position-bytes} and @code{byte-to-position} have
+been eliminated.
+
+@item
+Temporary buffers made with @code{with-output-to-temp-buffer} are now
+modifiable by default, and use Fundamental mode rather than Help mode.
+
+@item
+The functions @code{sref} interprets its @var{index} argument as a
+number of bytes, not a number of characters.  And the function
+@code{char-bytes} actually tries to report on the number of bytes that a
+character occupies.
+
+@item
+The function @code{process-running-child-p} has been eliminated.
+
+@item
+The function @code{interrupt-process} and similar functions no longer do
+anything special when the second argument is @code{lambda}.
+
+@item
+The function @code{define-prefix-command} accepts only two arguments.
+
+@item
+The meaning of the second argument to @code{read-char},
+@code{read-event}, and @code{read-char-exclusive} has been reversed:
+they use the current input method if the argument is if @code{nil}.
+
+@item
+The function @code{with-temp-message} has been eliminated. 
+
+@item
+The function @code{clear-this-command-keys} has been eliminated. 
+
+@item
+The functions @code{gap-position} and @code{gap-size} have been eliminated. 
+
+@item
+In @code{modify-face}, an argument of @code{(nil)} has no special
+meaning.
+
+@item
+The base64 conversion functions have been eliminated.
+
+@item
+Wildcard support has been eliminated from @code{find-file}
+and allied functions.
+
+@item
+@code{file-attributes} returns the file size and the file inode number
+only as a simple integer.
+@end itemize