mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-17 17:58:46 +00:00
* anti.texi (Antinews): Rewrite for Emacs 22.
This commit is contained in:
parent
3f698a06a5
commit
17ecd7af77
@ -1,5 +1,7 @@
|
||||
2009-05-13 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* anti.texi (Antinews): Rewrite for Emacs 22.
|
||||
|
||||
* abbrevs.texi (Abbrevs): Add xref to Creating Symbols when
|
||||
obarrays are first mentioned. Define "system abbrev" more
|
||||
prominently, and add it to the index.
|
||||
|
@ -7,445 +7,130 @@
|
||||
@c This node must have no pointers.
|
||||
|
||||
@node Antinews, GNU Free Documentation License, System Interface, Top
|
||||
@appendix Emacs 21 Antinews
|
||||
@appendix Emacs 22 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
|
||||
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 21
|
||||
@section Old Lisp Features in Emacs 22
|
||||
|
||||
@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.
|
||||
The internal character representation in Emacs is no longer
|
||||
Unicode-based; it is known as @code{emacs-mule}. This representation
|
||||
can handle several different variants of the same character, each one
|
||||
belonging to its own script. It marks each character with its script,
|
||||
to better discern them from one another.
|
||||
|
||||
@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.
|
||||
The @code{functionp} function now returns @code{t} for special forms.
|
||||
|
||||
@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.
|
||||
The @code{^} interactive spec code has been removed, together with the
|
||||
function @code{handle-shift-selection} and the variable
|
||||
@code{this-command-keys-shift-translated}. Shift-translated keys are
|
||||
no longer treated specially, making Emacs' handling of keybindings
|
||||
that much more consistent.
|
||||
|
||||
@item
|
||||
Support for image maps and image slices has been removed. Emacs was
|
||||
always meant for editing text, anyway.
|
||||
The @code{interactive-form} symbol property is no longer recognized.
|
||||
Once you supply a function with an interactive form, the only way to
|
||||
change it is to redefine the function.
|
||||
|
||||
@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.
|
||||
Emacs no longer creates temporarily-active regions by giving the
|
||||
variable @code{transient-mark-mode} values of the form @code{(only
|
||||
. @var{oldvar})}. Instead, it uses a more slightly 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
|
||||
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.
|
||||
Many minibuffer functions, such as @code{read-file-name} and
|
||||
@code{minibuffer-complete}, have been rewritten in C. The completion
|
||||
code has been considerably simplified; for instance, the completion
|
||||
style cannot 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
|
||||
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.
|
||||
Explicitly numbered groups in regular expressions are no longer
|
||||
supported.
|
||||
|
||||
@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.
|
||||
Faces can no longer be remapped.
|
||||
|
||||
@item
|
||||
Individual windows cannot have their own scroll-bar settings.
|
||||
Fonts are no longer represented using a special set of ``font'' data
|
||||
types. Lisp programs may only specify fonts by name, as strings
|
||||
following the XLFD (X logical font descriptor) format.
|
||||
|
||||
@item
|
||||
You can no longer use @samp{default} in a @code{defface} to specify
|
||||
defaults for subsequent faces.
|
||||
Display terminals are no longer represented using a ``terminal'' data
|
||||
type. This data type is not necessary, because Emacs can no longer
|
||||
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 function @code{display-supports-face-attributes-p} has been
|
||||
removed. In @code{defface} specifications, the @code{supports}
|
||||
predicate is no longer supported.
|
||||
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 functions @code{merge-face-attribute} and
|
||||
@code{face-attribute-relative-p} have been removed.
|
||||
Variables can now be both buffer-local and frame-local; buffer-local
|
||||
bindings take precedence over frame-local bindings.
|
||||
|
||||
@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.
|
||||
Windows no longer have parameters.
|
||||
|
||||
@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.
|
||||
The function @code{locate-user-emacs-file} and the variable
|
||||
@code{user-emacs-directory} have been removed. Programs can instead
|
||||
use hard-coded values pointing to @file{~/.emacs.d}.
|
||||
|
||||
@item
|
||||
The @code{tty-color-mode} frame parameter does not exist. You should
|
||||
just trust the terminal capabilities database.
|
||||
@end itemize
|
||||
@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
|
||||
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.
|
||||
Emacs no longer recognizes the @code{permanent-local-hook} property of
|
||||
local hook functions.
|
||||
|
||||
@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}
|
||||
The @code{ignore-errors} macro has been moved into 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.
|
||||
The @code{mode-name} variable now accepts only string values, and
|
||||
cannot take the form of a mode-line construct.
|
||||
|
||||
@item
|
||||
The function @code{assoc-string} has been removed. Use
|
||||
@code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
|
||||
are no longer obsolete.)
|
||||
Several keymap 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
|
||||
The escape sequence @samp{\s} is always interpreted as a super
|
||||
modifier, never a space.
|
||||
Many functions have been removed, including @code{emacs-init-time},
|
||||
@code{emacs-uptime}, @code{buffer-swap-text}, @code{use-region-p} and
|
||||
@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
|
||||
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.
|
||||
Many variables have been removed, including @code{read-circle},
|
||||
@code{before-init-time} and @code{after-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
|
||||
|
Loading…
Reference in New Issue
Block a user