(QCscalable, Qc, Qm, Qp, Qd): New variables.
[bpt/emacs.git] / lispref / anti.texi
dissimilarity index 92%
index df81194..6cebff7 100644 (file)
-@c -*-texinfo-*-
-@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998 Free Software Foundation, Inc. 
-@c See the file elisp.texi for copying conditions.
-@node Antinews, Index, Standard Hooks, Top
-@appendix Emacs 19 Antinews
-
-For those users who live backwards in time, here is information about
-downgrading to Emacs version 19.34.  We hope you will enjoy the greater
-simplicity that results from the absence of many Emacs 19 features.  In
-the following section, we carry this information back as far as Emacs
-19.29, for which the previous printed edition of this manual was made.
-
-@section Old Lisp Features in Emacs 19
-
-Here are the most important of the features that you will learn
-to do without in Emacs 19:
-
-@itemize @bullet
-@item
-In a great simplification, Emacs 19 supports ASCII characters only.
-There are no multibyte characters, character sets, language
-environments, coding systems, or input methods; all the functions that
-specifically relate to them are gone as well.
-
-Valid character codes for text must be in the range 0 through 255.
-Within this range, there are no invalid character codes.
-
-@item
-The Custom facility has been replaced with a much simpler and more
-general method of defining user option variables.  Instead of
-@code{defcustom}, which requires you to specify each user option's
-data type and classify them into groups, all you have to do is write
-a @code{defvar} and start the documentation string with @samp{*}.
-@end itemize
-
-Here are changes in the Lisp language itself:
-
-@itemize @bullet
-@item
-Symbols whose names start with @samp{:} are no longer special
-in any way.  They start out void, like most other symbols.
-
-@item
-The macros @code{when} and @code{unless} have been deleted.
-
-@item
-The functions @code{caar}, @code{cadr}, @code{cdar} and @code{cddr}
-no longer exist.
-
-@item
-The function @code{functionp} is now gone.  If you don't know
-by now whether something is a function, Emacs can't tell you.
-@end itemize
-
-Here are changes in handling strings and text.
-
-@itemize @bullet
-@item
-The function @code{substring} works only on strings, not on vectors.
-
-@item
-There are no more character categories.
-
-@item
-When you compare strings with @code{equal}, it now compares
-their string properties as well as their text.  All must match,
-or the strings are not equal.
-
-@item
-@code{format-time-string} no longer supports specified field width
-or specified padding.
-
-@item
-The functions @code{split-string} and @code{concat-chars} no longer exist.
-Neither does @code{store-substring} or @code{sref}.
-
-@item
-All printing characters have the same width.  Therefore, we have deleted
-@code{char-width}, @code{string-width} and
-@code{truncate-string-to-width}.
-
-@item
-We have eliminated the functions @code{next-char-property-change} and
-@code{previous-char-property-change} also.
-
-@item
-Syntax parsing now determines the syntax of each character from the
-syntax table alone---not from text properties.  This makes the syntax
-codes @samp{|} and @samp{!}, which were meant for use with text
-properties, useless; so we have deleted them.
-
-@item
-In the function @code{parse-partial-sexp}, passing @code{syntax-table}
-as the sixth argument @var{commentstop} no longer has any special meaning.
-And the return value has only eight elements.
-@end itemize
-
-Here are changes in other areas of Emacs Lisp:
-
-@itemize @bullet
-@item
-The macros @code{save-current-buffer}, @code{with-current-buffer},
-@code{with-temp-buffer}, @code{with-temp-file}, @code{save-selected-window}, 
-and @code{with-output-to-string} are gone.
-
-@item
-The easy-mmode facility for defining minor modes is gone too.
-
-@item
-Process filters and sentinels must explicitly save the match data, with
-@code{save-match-data}, or they will clobber the match data and
-something horrible will happen.
-
-@item
-As part of our effort to loosen up, @code{batch-byte-compile-file} no
-longer returns a nonzero status code if there is a compilation error.
-
-@item
-The ``mail user agent'' feature is gone.
-
-@item
-We have removed the functions @code{add-to-invisibility-spec} and
-@code{remove-from-invisibility-spec}, so you should manipulate
-the value of @code{buffer-invisibility-spec} by hand.
-
-@item
-The functions @code{face-documentation}, @code{face-bold-p},
-@code{face-italic-p}, @code{set-face-bold-p}, @code{set-face-italic-p}
-are gone.  Instead, use @code{make-face-bold} and friends.
-
-@item
-All the functions that operate on a file now discard an extra redundant
-directory name from the beginning of the file name---just like
-@code{substitute-in-file-name}.
-
-@item
-We have got rid of the function @code{access-file}.
-
-@item
-Most of the minibuffer input functions, no longer take a default value as
-an argument.  Also, they do not discard text properties from the result.
-This means that if you insert text with text properties into the minibuffer,
-the minibuffer value really will contain text properties.
-
-@item
-Only the simple menu item format is supported (@pxref{Simple Menu Items}).
-
-@item
-You can still bind @code{x-resource-class} around a call to
-@code{x-get-resource}, but it won't do anything special.
-
-@item
-Wave goodbye to the hooks @code{before-make-frame-hook},
-@code{after-make-frame-functions}, and
-@code{window-configuration-change-hook},
-
-@item
-The functions and variables that deal with MS Windows NT/95
-have been renamed to start with @samp{win32-} instead of @samp{w32-}.
-This is because we admire Microsoft more each day as we go back
-into the past.
-@end itemize
-
-@section Onward into the Past!
-
-Here we go even further back, as far as Emacs 19.29, for which the
-previous printed edition of the Emacs Lisp manual was made.
-
-@itemize @bullet
-@item
-There are no char-tables or bool-vectors.  Syntax tables, display
-tables, and case tables are all vectors now, and the value of
-@code{keyboard-translate-table} should be a vector or a string.
-
-@item
-There is only one kind of marker.  When you insert text at the place
-where a marker points, the marker always ends up before that text,
-unless you use @code{insert-before-markers}, which puts all the markers
-after the inserted text.
-
-@item
-There is no function @code{overlays-in}.
-
-@item
-The variable @code{print-length} applies only to lists, not to
-vectors or strings.
-
-@item
-The function @code{convert-standard-filename} no longer exists, so each
-Lisp package must independently figure out which file names to use for
-its initialization files on each kind of operating system.
-
-@item
-The macro @code{with-timeout} has been eliminated, along with the
-function @code{y-or-n-p-with-timeout}.  Idle timers don't exist at all;
-instead, maybe you can use @code{post-command-idle-hook} to do some of
-the same job.
-
-@item
-The functions @code{keymap-parent} and @code{set-keymap-parent} are
-gone.  We expect keymaps to recognize their own parents.
-
-@item
-When you delete text and then undo a deletion, markers that were
-originally inside the deleted text end up either at the beginning
-or the end of it---not back in their original places.
-
-@item
-The interactive specification @samp{N} is gone now.
-
-@item
-There is no more @code{safe-length}.  Don't try to be so safe!  Did you
-expect to live forever?
-
-@item
-We got rid of @code{insert-file-contents-literally}, because
-programmers are too literal-minded anyway.
-
-@item
-As part of our continuing effort to help Lisp programmers to relax, we
-threw out the function @code{error-message-string}.  Don't worry so much
-about errors!  We all make mistakes.
-
-@item
-The keymap @code{special-event-map} is gone, because Emacs has no more
-special events.  If you want to hold a party in Emacs, please let us
-know.
-
-@item
-You can't do date arithmetic with @code{encode-time} any more.
-
-@item
-The functions @code{command-execute} and @code{call-interactively} no
-longer accept the optional argument @var{keys}.
-
-@item
-@code{get-buffer-window-list} is gone as well.
-
-@item
-With the function @code{replace-match}, you can only replace the whole
-match, not a subexpression of it.
-
-@item
-We eliminated the hooks @code{buffer-access-fontify-functions},
-@code{window-scroll-functions}, and @code{redisplay-end-trigger-functions}.
-@end itemize
+@c -*-texinfo-*-
+@c This is part of the GNU Emacs Lisp Reference Manual.
+@c Copyright (C) 1999, 2002, 2003, 2004, 2005,
+@c   2006 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{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
+@code{face-attribute-relative-p} and @code{merge-face-attribute} 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
+has 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 has been removed.  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
+@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{pos-visible-in-window-p} have been removed.
+
+@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 functions @code{merge-coding-systems} and
+@code{decode-coding-inserted-region}, and the variable
+@code{auto-coding-functions}, have been deleted.  The
+@code{mime-text-unsuitable} coding system property 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