Merge from emacs-23
[bpt/emacs.git] / doc / lispref / anti.texi
dissimilarity index 96%
index 1ec0c5e..7c5df41 100644 (file)
-@c -*-texinfo-*-
-@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2002, 2003, 2004, 2005,
-@c   2006, 2007 Free Software Foundation, Inc.
-@c See the file elisp.texi for copying conditions.
-
-@c This node must have no pointers.
-
-@node Antinews, GNU Free Documentation License, System Interface, Top
-@appendix Emacs 21 Antinews
-
-For those users who live backwards in time, here is information about
-downgrading to Emacs version 21.4.  We hope you will enjoy the greater
-simplicity that results from the absence of many Emacs @value{EMACSVER}
-features.
-
-@section Old Lisp Features in Emacs 21
-
-@itemize @bullet
-@item
-Many unnecessary features of redisplay have been eliminated.  (The
-earlier major release, Emacs 20, will have a completely rewritten
-redisplay engine, which will be even simpler.)
-
-@itemize @minus
-@item
-The function @code{redisplay} has been removed.  To update the display
-without delay, call @code{(sit-for 0)}.  Since it is generally
-considered wasteful to update the display if there are any pending
-input events, no replacement for @code{(redisplay t)} is provided.
-
-@item
-The function @code{force-window-update} has been removed.  It
-shouldn't be needed, since changes in window contents are detected
-automatically.  In case they aren't, call @code{redraw-display} to
-redraw everything.
-
-@item
-Point no longer moves out from underneath invisible text at the end of
-each command.  This allows the user to detect invisible text by moving
-the cursor around---if the cursor gets stuck, there is something
-invisible in the way.  If you really want cursor motion to ignore the
-text, try marking it as intangible.
-
-@item
-Support for image maps and image slices has been removed.  Emacs was
-always meant for editing text, anyway.
-
-@item
-The mode line now accepts all text properties, as well as
-@code{:propertize} and @code{:eval} forms, regardless of the
-@code{risky-local-variable} property.
-
-@item
-The @code{line-height} and @code{line-spacing} properties no longer
-have any meaning for newline characters.  Such properties wouldn't
-make sense, since newlines are not really characters; they just tell
-you where to break a line.
-
-@item
-Considerable simplifications have been made to the display
-specification @code{(space . @var{props})}, which is used for
-displaying a space of specified width and height.  Pixel-based
-specifications and Lisp expressions are no longer accepted.
-
-@item
-Many features associated with the fringe areas have been removed, to
-encourage people to concentrate on the main editing area (the fringe
-will be completely removed in Emacs 20.)  Arbitrary bitmaps can no
-longer be displayed in the fringe; an overlay arrow can still be
-displayed, but there can only be one overlay arrow at a time (any more
-would be confusing.)  The fringe widths cannot be adjusted, and
-individual windows cannot have their own fringe settings.  A mouse
-click on the fringe no longer generates a special event.
-
-@item
-Individual windows cannot have their own scroll-bar settings.
-
-@item
-You can no longer use @samp{default} in a @code{defface} to specify
-defaults for subsequent faces.
-
-@item
-The function @code{display-supports-face-attributes-p} has been
-removed.  In @code{defface} specifications, the @code{supports}
-predicate is no longer supported.
-
-@item
-The functions @code{merge-face-attribute} and
-@code{face-attribute-relative-p} have been removed.
-
-@item
-The priority of faces in a list supplied by the @code{:inherit} face
-attribute has been reversed.  We like to make changes like this once
-in a while, to keep Emacs Lisp programmers on their toes.
-
-@item
-The @code{min-colors} face attribute, used for tailoring faces to
-limited-color displays, does not exist.  If in doubt, use colors like
-``white'' and ``black,'' which ought to be defined everywhere.
-
-@item
-The @code{tty-color-mode} frame parameter does not exist.  You should
-just trust the terminal capabilities database.
-@end itemize
-
-@item
-Several simplifications have been made to mouse support:
-
-@itemize @minus
-@item
-Clicking @kbd{mouse-1} won't follow links, as that is alien to the
-spirit of Emacs.  Therefore, the @code{follow-link} property doesn't
-have any special meaning, and the function @code{mouse-on-link-p} has
-been removed.
-
-@item
-The variable @code{void-text-area-pointer} has been removed, so the
-mouse pointer shape remains unchanged when moving between valid text
-areas and void text areas.  The @code{pointer} image and text
-properties are no longer supported.
-
-@item
-Mouse events will no longer specify the timestamp, the object clicked,
-equivalent buffer positions (for marginal or fringe areas), glyph
-coordinates, or relative pixel coordinates.
-@end itemize
-
-@item
-Simplifications have also been made to the way Emacs handles keymaps
-and key sequences:
-
-@itemize @minus
-@item
-The @code{kbd} macro is now obsolete and is no longer documented.
-It isn't that difficult to write key sequences using the string and
-vector representations, and we want to encourage users to learn.
-
-@item
-Emacs no longer supports key remapping.  You can do pretty much the
-same thing with @code{substitute-key-definition}, or by advising the
-relevant command.
-
-@item
-The @code{keymap} text and overlay property is now overridden by minor
-mode keymaps, and will not work at the ends of text properties and
-overlays.
-
-@item
-The functions @code{map-keymap}, @code{keymap-prompt}, and
-@code{current-active-maps} have been removed.
-@end itemize
-
-@item
-Process support has been pared down to a functional minimum.  The
-functions @code{call-process-shell-command} and @code{process-file}
-have been deleted.  Processes no longer maintain property lists, and
-they won't ask any questions when the user tries to exit Emacs (which
-would simply be rude.)  The function @code{signal-process} won't
-accept a process object, only the process id; determining the process
-id from a process object is left as an exercise to the programmer.
-
-@item
-Networking has also been simplified: @code{make-network-process} and
-its various associated function have all been replaced with a single
-easy-to-use function, @code{open-network-stream}, which can't use UDP,
-can't act as a server, and can't set up non-blocking connections.
-Also, deleting a network process with @code{delete-process} won't call
-the sentinel.
-
-@item
-Many programming shortcuts have been deleted, to provide you with the
-enjoyment of ``rolling your own.''  The macros @code{while-no-input},
-@code{with-local-quit}, and @code{with-selected-window}, along with
-@code{dynamic-completion-table} and @code{lazy-completion-table} no
-longer exist.  Also, there are no built-in progress reporters;
-with Emacs, you can take progress for granted.
-
-@item
-Variable aliases are no longer supported.  Aliases are for functions,
-not for variables.
-
-@item
-The variables @code{most-positive-fixnum} and
-@code{most-negative-fixnum} do not exist.  On 32 bit machines, the
-most positive integer is probably 134217727, and the most negative
-integer is probably -134217728.
-
-@item
-The functions @code{eql} and @code{macroexpand-all} are no longer
-available.  However, you can find similar functions in the @code{cl}
-package.
-
-@item
-The list returned by @code{split-string} won't include null substrings
-for separators at the beginning or end of a string.  If you want to
-check for such separators, do it separately.
-
-@item
-The function @code{assoc-string} has been removed.  Use
-@code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
-are no longer obsolete.)
-
-@item
-The escape sequence @samp{\s} is always interpreted as a super
-modifier, never a space.
-
-@item
-The variable @code{buffer-save-without-query} has been removed, to
-prevent Emacs from sneakily saving buffers.  Also, the hook
-@code{before-save-hook} has been removed, so if you want something to
-be done before saving, advise or redefine @code{basic-save-buffer}.
-
-@item
-The variable @code{buffer-auto-save-file-format} has been renamed to
-@code{auto-save-file-format}, and is no longer a permanent local.
-
-@item
-The function @code{visited-file-modtime} now returns a cons, instead
-of a list of two integers.  The primitive @code{set-file-times} has
-been eliminated.
-
-@item
-The function @code{file-remote-p} is no longer available.
-
-@item
-When determining the filename extension, a leading dot in a filename
-is no longer ignored.  Thus, @file{.emacs} is considered to have
-extension @file{emacs}, rather than being extensionless.
-
-@item
-Emacs looks for special file handlers in a more efficient manner: it
-will choose the first matching handler in
-@code{file-name-handler-alist}, rather than trying to figure out which
-provides the closest match.
-
-@item
-The @code{predicate} argument for @code{read-file-name} has been
-removed, and so have the variables @code{read-file-name-function} and
-@code{read-file-name-completion-ignore-case}.  The function
-@code{read-directory-name} has also been removed.
-
-@item
-The functions @code{all-completions} and @code{try-completion} will no
-longer accept lists of strings or hash tables (it will still accept
-alists, obarrays, and functions.)  In addition, the function
-@code{test-completion} is no longer available.
-
-@item
-The @samp{G} interactive code character is no longer supported.
-Use @samp{F} instead.
-
-@item
-Arbitrary Lisp functions can no longer be recorded into
-@code{buffer-undo-list}.  As a consequence, @code{yank-undo-function}
-is obsolete, and has been removed.
-
-@item
-Emacs will never complain about commands that accumulate too much undo
-information, so you no longer have to worry about binding
-@code{buffer-undo-list} to @code{t} for such commands (though you may
-want to do that anyway, to avoid taking up unnecessary memory space.)
-
-@item
-Atomic change groups are no longer supported.
-
-@item
-The list returned by @code{(match-data t)} no longer records the
-buffer as a final element.
-
-@item
-The function @code{looking-back} has been removed, so we no longer
-have the benefit of hindsight.
-
-@item
-The variable @code{search-spaces-regexp} does not exist.  Spaces
-always stand for themselves in regular expression searches.
-
-@item
-The functions @code{skip-chars-forward} and @code{skip-chars-backward}
-no longer accepts character classes such as @samp{[:alpha:]}.  All
-characters are created equal.
-
-@item
-The @code{yank-handler} text property no longer has any meaning.
-Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
-@code{insert-buffer-substring-as-yank} have all been removed.
-
-@item
-The variable @code{char-property-alias-alist} has been deleted.
-Aliases are for functions, not for properties.
-
-@item
-The function @code{get-char-property-and-overlay} has been deleted.
-If you want the properties at a point, find the text properties at the
-point; then, find the overlays at the point, and find the properties
-on those overlays.
-
-@item
-Font Lock mode only manages @code{face} properties; you can't use
-font-lock keywords to specify arbitrary text properties for it to
-manage.  After all, it is called Font Lock mode, not Arbitrary
-Properties Lock mode.
-
-@item
-The arguments to @code{remove-overlays} are no longer optional.
-
-@item
-In @code{replace-match}, the replacement text now inherits properties
-from the surrounding text.
-
-@item
-The variable @code{mode-line-format} no longer supports the @code{:propertize},
-@code{%i}, and @code{%I} constructs.  The function
-@code{format-mode-line} has been removed.
-
-@item
-The functions @code{window-inside-edges} and @code{window-body-height}
-have been removed.  You should do the relevant calculations yourself,
-starting with @code{window-width} and @code{window-height}.
-
-@item
-The functions @code{window-pixel-edges} and
-@code{window-inside-pixel-edges} have been removed.  We prefer to
-think in terms of lines and columns, not pixel coordinates.  (Sometime
-in the distant past, we will do away with graphical terminals
-entirely, in favor of text terminals.)  For similar reasons, the
-functions @code{posn-at-point}, @code{posn-at-x-y}, and
-@code{window-line-height} have been removed, and
-@code{pos-visible-in-window-p} no longer worries about partially
-visible rows.
-
-@item
-The macro @code{save-selected-window} only saves the selected window
-of the selected frame, so don't try selecting windows in other frames.
-
-@item
-The function @code{minibufferp} is no longer available.
-
-@item
-The function @code{modify-all-frames-parameters} has been removed (we
-always suspected the name was ungrammatical, anyway.)
-
-@item
-The @code{line-spacing} variable no longer accepts float values.
-
-@item
-The function @code{tool-bar-local-item-from-menu} has been deleted.
-If you need to make an entry in the tool bar, you can still use
-@code{tool-bar-add-item-from-menu}, but that modifies the binding in
-the source keymap instead of copying it into the local keymap.
-
-@item
-When determining the major mode, the file name takes precedence over
-the interpreter magic line.  The variable @code{magic-mode-alist},
-which associates certain buffer beginnings with major modes, has been
-eliminated.
-
-@item
-The hook @code{after-change-major-mode-hook} is not defined, and
-neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
-
-@item
-The variable @code{minor-mode-list} has been removed.
-
-@item
-@code{define-derived-mode} will copy abbrevs from the parent mode's
-abbrev table, instead of creating a new, empty abbrev table.
-
-@item
-There are no ``system'' abbrevs.  When the user saves into the abbrevs
-file, all abbrevs are saved.
-
-@item
-The Warnings facility has been removed.  Just use @code{error}.
-
-@item
-Several hook variables have been renamed to flout the Emacs naming
-conventions.  We feel that consistency is boring, and having
-non-standard hook names encourages users to check the documentation
-before using a hook.  For instance, the normal hook
-@code{find-file-hook} has been renamed to @code{find-file-hooks}, and
-the abnormal hook @code{delete-frame-functions} has been renamed to
-@code{delete-frame-hook}.
-
-@item
-The function @code{symbol-file} does not exist.  If you want to know
-which file defined a function or variable, try grepping for it.
-
-@item
-The variable @code{load-history} records function definitions just
-like variable definitions, instead of indicating which functions were
-previously autoloaded.
-
-@item
-There is a new variable, @code{recursive-load-depth-limit}, which
-specifies how many times files can recursively load themselves; it is
-50 by default, and @code{nil} means infinity.  Previously, Emacs signaled an
-error after just 3 recursive loads, which was boring.
-
-@item
-Byte-compiler warnings and error messages will leave out the line and
-character positions, in order to exercise your debugging skills.
-Also, there is no @code{with-no-warnings} macro---instead of
-suppressing compiler warnings, fix your code to avoid them!
-
-@item
-The function @code{unsafep} has been removed.
-
-@item
-File local variables can now specify a string with text properties.
-Since arbitrary Lisp expressions can be embedded in text properties,
-this can provide you with a great deal of flexibility and power.  On
-the other hand, @code{safe-local-eval-forms} and the
-@code{safe-local-eval-function} function property have no special
-meaning.
-
-@item
-You can no longer use @code{char-displayable-p} to test if Emacs can
-display a certain character.
-
-@item
-The function @code{string-to-multibyte} is no longer available.
-
-@item
-The @code{translation-table-for-input} translation table has been
-removed.  Also, translation hash tables are no longer available, so we
-don't need the functions @code{lookup-character} and
-@code{lookup-integer}.
-
-@item
-The @code{table} argument to @code{translate-region} can no longer be
-a char-table; it has to be a string.
-
-@item
-The variable @code{auto-coding-functions} and the two functions
-@code{merge-coding-systems} and @code{decode-coding-inserted-region}
-have been deleted.  The coding system property
-@code{mime-text-unsuitable} no longer has any special meaning.
-
-@item
-If pure storage overflows while dumping, Emacs won't tell you how much
-additional pure storage it needs.  Try adding in increments of 20000,
-until you have enough.
-
-@item
-The variables @code{gc-elapsed}, @code{gcs-done}, and
-@code{post-gc-hook} have been garbage-collected.
-@end itemize
-
-@ignore
-   arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
-@end ignore
+@c -*-texinfo-*-
+@c This is part of the GNU Emacs Lisp Reference Manual.
+@c Copyright (C) 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+@c   2009, 2010, 2011  Free Software Foundation, Inc.
+@c See the file elisp.texi for copying conditions.
+
+@c This node must have no pointers.
+
+@node Antinews, GNU Free Documentation License, Packaging, Top
+@appendix Emacs 22 Antinews
+@c Update the elisp.texi, vol1.texi, vol2.texi Antinews menu entries
+@c with the above version number.
+
+For those users who live backwards in time, here is information about
+downgrading to Emacs version 22.3.  We hope you will enjoy the greater
+simplicity that results from the absence of many Emacs @value{EMACSVER}
+features.
+
+@section Old Lisp Features in Emacs 22
+
+@itemize @bullet
+@item
+The internal character representation used by Emacs is not longer
+based on Unicode.  In this representation, called @code{emacs-mule},
+each character belongs to one and only one script.  Emacs makes no
+attempt to distinguish between ``similar'' characters occurring in
+different scripts.
+
+@item
+The @code{^} interactive spec code, the function
+@code{handle-shift-selection}, and the variable
+@code{this-command-keys-shift-translated} have all been removed.
+Shift-translated keys are no longer treated specially, making Emacs'
+handling of keybindings much more consistent.
+
+@item
+Temporarily-active regions are not created by giving the variable
+@code{transient-mark-mode} values of the form @code{(only
+. @var{oldvar})}.  We instead use a more complicated scheme:
+setting @code{transient-mark-mode} to @code{only} enables Transient
+Mark mode for the following command only, during which the value of
+@code{transient-mark-mode} is set to @code{identity}; if it is still
+@code{identity} at the end of the command, Transient Mark mode is
+disabled.
+
+@item
+Many minibuffer functions, such as @code{read-file-name} and
+@code{minibuffer-complete}, have been rewritten in C for greater
+speed.  The completion code has been considerably simplified; the
+completion style can no longer be changed via
+@code{completion-styles-alist}, and @code{completing-read} no longer
+recognizes the special values @code{confirm-only} and
+@code{confirm-after-completion} for its @var{require-match} argument.
+
+@item
+Emacs no longer supports explicitly-numbered groups in regular
+expressions.
+
+@item
+The @code{permanent-local-hook} function property has no special
+meaning.
+
+@item
+The @code{functionp} function now returns @code{t} for special forms.
+
+@item
+The @code{interactive-form} symbol property has no special meaning.
+Once you supply a function with an interactive form, the only way to
+change it is to redefine the function.
+
+@item
+The @code{ignore-errors} macro has been moved into the @code{cl}
+package.
+
+@item
+Variables can now be both buffer-local and frame-local; buffer-local
+bindings take precedence over frame-local bindings.
+
+@item
+Faces can no longer be remapped.
+
+@item
+Lisp programs now specify fonts by their names, which are strings
+following the XLFD (X logical font descriptor) format.  Fonts are no
+longer represented using a special set of ``font'' data types.  The
+various functions that act on these data types, such as @code{fontp},
+@code{font-spec}, and @code{list-fonts}, have all been deleted.
+
+@item
+Emacs does not recognize the @code{FontBackend} X resource and the
+@code{font-backend} frame parameter.  On the X Window System, fonts
+are always drawn using the X core font driver.
+
+@item
+Display terminals are no longer represented using a ``terminal'' data
+type; this is not necessary, because we have removed the ability to
+display on graphical and text-only terminals simultaneously.  For the
+same reason, the @code{window-system} variable is no longer
+frame-local, and the @code{window-system} function has been removed.
+
+@item
+The functions @code{list-system-processes} and
+@code{process-attributes} have been removed.  To get information about
+system processes, call an external program, such as @command{ps}.
+
+@item
+The function @code{locate-user-emacs-file} and the variable
+@code{user-emacs-directory} have been removed.  Instead, use
+hard-coded values pointing to @file{~/.emacs.d}.
+
+@item
+@code{vertical-motion} can no longer be told to move to a specific
+column; it always puts point on the first column of a line.
+
+@item
+Windows no longer have parameters.
+
+@item
+The @code{display-buffer} function has been rewritten in C.  Its
+window-splitting heuristics are a little less sophisticated, and a
+little less documented.  Window-splitting is handled internally,
+instead of using @code{split-window-preferred-function} (which has
+been removed).  Windows are never split horizontally; the variable
+@code{split-width-threshold} has been removed.
+
+@item
+The @code{mode-name} variable now accepts only string values, and
+cannot take the form of a mode-line construct.
+
+@item
+The behavior of @code{map-char-table} has changed.  It calls the
+mapping function for every single character in the table, instead of
+using cons cells to represent contiguous character code ranges.
+
+@item
+Several keymaps have been eliminated: @code{input-decode-map},
+@code{local-function-key-map}, @code{search-map},
+@code{multi-query-replace-map}, and
+@code{minibuffer-local-shell-command-map}.
+
+@item
+Many functions have been removed, including: @code{buffer-swap-text},
+@code{emacs-init-time}, @code{emacs-uptime}, @code{use-region-p},
+@code{region-active-p}, @code{start-file-process},
+@code{process-lines}, @code{image-refresh},
+@code{match-substitute-replacement}, @code{word-search-forward-lax},
+and @code{word-search-backward-lax}.
+
+@item
+Many variables have been removed, including @code{read-circle},
+@code{after-init-time} and @code{before-init-time},
+@code{generate-autoload-cookie}, @code{file-local-variables-alist},
+@code{replace-search-function} and @code{replace-re-search-function},
+@code{inhibit-changing-match-data}, @code{wrap-prefix}, and
+@code{line-prefix},
+@end itemize
+
+@ignore
+   arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
+@end ignore