Next: GNU Free Documentation License, Previous: System Interface, Up: Top
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 22.0.50 features.
redisplay has been removed. To update the display
without delay, call (sit-for 0). Since it is generally
considered wasteful to update the display if there are any pending
input events, no replacement for (redisplay t) is provided.
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 redraw-display to
redraw everything.
:propertize and :eval forms, regardless of the
risky-local-variable property.
line-height and 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.
(space . props), which is used for
displaying a space of specified width and height. Pixel-based
specifications and Lisp expressions are no longer accepted.
defface to specify
defaults for subsequent faces.
display-supports-face-attributes-p has been
removed. In defface specifications, the supports
predicate is no longer supported.
merge-face-attribute and
face-attribute-relative-p have been removed.
: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.
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.
tty-color-mode frame parameter does not exist. You should
just trust the terminal capabilities database.
follow-link property doesn't
has any special meaning, and the function mouse-on-link-p has
been removed.
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 pointer image and text
properties are no longer supported.
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.
substitute-key-definition, or by advising the
relevant command.
keymap text and overlay property is now overridden by minor
mode keymaps, and will not work at the ends of text properties and
overlays.
map-keymap, keymap-prompt, and
current-active-maps have been removed.
call-process-shell-command and 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 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.
make-network-process and
its various associated function have all been replaced with a single
easy-to-use function, 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 delete-process won't call
the sentinel.
while-no-input,
with-local-quit, and with-selected-window, along with
dynamic-completion-table and lazy-completion-table no
longer exist. Also, there are no built-in progress reporters;
with Emacs, you can take progress for granted.
most-positive-fixnum and
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.
eql and macroexpand-all are no longer
available. However, you can find similar functions in the cl
package.
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.
assoc-string has been removed. Use
assoc-ignore-case or assoc-ignore-representation (which
are no longer obsolete.)
buffer-save-without-query has been removed, to
prevent Emacs from sneakily saving buffers. Also, the hook
before-save-hook has been removed, so if you want something to
be done before saving, advise or redefine basic-save-buffer.
buffer-auto-save-file-format has been renamed to
auto-save-file-format, and is no longer a permanent local.
visited-file-modtime now returns a cons, instead
of a list of two integers. The primitive set-file-times has
been eliminated.
file-remote-p is no longer available.
file-name-handler-alist, rather than trying to figure out which
provides the closest match.
predicate argument for read-file-name has been
removed, and so have the variables read-file-name-function and
read-file-name-completion-ignore-case. The function
read-directory-name has also been removed.
all-completions and try-completion will no
longer accept lists of strings or hash tables (it will still accept
alists, obarrays, and functions.) In addition, the function
test-completion is no longer available.
buffer-undo-list. As a consequence, yank-undo-function
is obsolete, and has been removed.
buffer-undo-list to t for such commands (though you may
want to do that anyway, to avoid taking up unnecessary memory space.)
(match-data t) no longer records the
buffer as a final element.
looking-back has been removed, so we no longer
have the benefit of hindsight.
search-spaces-regexp does not exist. Spaces
always stand for themselves in regular expression searches.
skip-chars-forward and skip-chars-backward
no longer accepts character classes such as `[:alpha:]'. All
characters are created equal.
yank-handler text property no longer has any meaning.
Also, yank-excluded-properties, insert-for-yank, and
insert-buffer-substring-as-yank have all been removed.
char-property-alias-alist has been deleted.
Aliases are for functions, not for properties.
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.
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.
remove-overlays are no longer optional.
replace-match, the replacement text now inherits properties
from the surrounding text.
mode-line-format no longer supports the :propertize,
%i, and %I constructs. The function
format-mode-line has been removed.
window-inside-edges and window-body-height
have been removed. You should do the relevant calculations yourself,
starting with window-width and window-height.
window-pixel-edges and
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 posn-at-point and posn-at-x-y have been removed, and
pos-visible-in-window-p no longer worries about partially
visible rows.
save-selected-window only saves the selected window
of the selected frame, so don't try selecting windows in other frames.
minibufferp is no longer available.
modify-all-frames-parameters has been removed (we
always suspected the name was ungrammatical, anyway.)
line-spacing variable no longer accepts float values.
tool-bar-local-item-from-menu has been deleted.
If you need to make an entry in the tool bar, you can still use
tool-bar-add-item-from-menu, but that modifies the binding in
the source keymap instead of copying it into the local keymap.
magic-mode-alist,
which associates certain buffer beginnings with major modes, has been
eliminated.
after-change-major-mode-hook is not defined, and
neither are run-mode-hooks and delay-mode-hooks.
minor-mode-list has been removed.
define-derived-mode will copy abbrevs from the parent mode's
abbrev table, instead of creating a new, empty abbrev table.
error.
find-file-hook has been renamed to find-file-hooks, and
the abnormal hook delete-frame-functions has been renamed to
delete-frame-hook.
symbol-file does not exist. If you want to know
which file defined a function or variable, try grepping for it.
load-history records function definitions just
like variable definitions, instead of indicating which functions were
previously autoloaded.
recursive-load-depth-limit, which
specifies how many times files can recursively load themselves; it is
50 by default, and nil means infinity. Previously, Emacs signaled an
error after just 3 recursive loads, which was boring.
with-no-warnings macro—instead of
suppressing compiler warnings, fix your code to avoid them!
unsafep has been removed.
safe-local-eval-forms and the
safe-local-eval-function function property have no special
meaning.
char-displayable-p to test if Emacs can
display a certain character.
string-to-multibyte is no longer available.
translation-table-for-input translation table has been
removed. Also, translation hash tables are no longer available, so we
don't need the functions lookup-character and
lookup-integer.
table argument to translate-region can no longer be
a char-table; it has to be a string.
merge-coding-systems and
decode-coding-inserted-region, and the variable
auto-coding-functions, have been deleted. The
mime-text-unsuitable coding system property no longer has any
special meaning.
gc-elapsed, gcs-done, and
post-gc-hook have been garbage-collected.
