(System In): Change name of previous node.
[bpt/emacs.git] / lispref / anti.texi
CommitLineData
0a9482c5
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
a139f682 3@c Copyright (C) 1999, 2005 Free Software Foundation, Inc.
0a9482c5 4@c See the file elisp.texi for copying conditions.
46600ab1
GM
5
6@c This node must have no pointers.
7
e23a63a5 8@node Antinews, GNU Free Documentation License, System Interface, Top
4b878354 9@appendix Emacs 21 Antinews
0a9482c5
RS
10
11For those users who live backwards in time, here is information about
4b878354
RS
12downgrading to Emacs version 21.4. We hope you will enjoy the greater
13simplicity that results from the absence of many Emacs 22 features.
0a9482c5 14
4b878354 15@section Old Lisp Features in Emacs 21
0a9482c5
RS
16
17@itemize @bullet
18@item
4b878354
RS
19Many unnecessary features of redisplay have been eliminated. (The
20earlier major release, Emacs 20, will have a completely rewritten
21redisplay engine, which will be even simpler.)
0a9482c5 22
4b878354 23@itemize @minus
0a9482c5 24@item
4b878354
RS
25The function @code{force-window-update} has been removed. It
26shouldn't be needed, since changes in window contents are detected
27automatically. In case they aren't, call @code{redraw-display} to
28redraw everything.
0a9482c5 29
0a9482c5 30@item
4b878354
RS
31Point no longer moves out from underneath invisible text at the end of
32each command. This allows the user to detect invisible text by moving
33the cursor around---if the cursor gets stuck, there is something
34invisible in the way. If you really want cursor motion to ignore the
35text, try marking it as intangible.
0a9482c5 36
6b5c0a2e 37@item
4b878354
RS
38Support for image maps and image slices has been removed. Emacs was
39always meant for editing text, anyway.
6b5c0a2e 40
0a9482c5 41@item
4b878354
RS
42The mode line now accepts all text properties, as well as
43@code{:propertize} and @code{:eval} forms, regardless of the
44@code{risky-local-variable} property.
0a9482c5 45
4b878354
RS
46@item
47The @code{line-height} and @code{line-spacing} properties no longer
48have any meaning for newline characters. Such properties wouldn't
49make sense, since newlines are not really characters; they just tell
50you where to break a line.
0a9482c5 51
4b878354
RS
52@item
53Considerable simplifications have been made to the display
54specification @code{(space . @var{props})}, which is used for
55displaying a space of specified width and height. Pixel-based
56specifications and Lisp expressions are no longer accepted.
0a9482c5 57
8241495d 58@item
4b878354
RS
59Many features associated with the fringe areas have been removed, to
60encourage people to concentrate on the main editing area (the fringe
61will be completely removed in Emacs 20.) Arbitrary bitmaps can no
62longer be displayed in the fringe; an overlay arrow can still be
63displayed, but there can only be one overlay arrow at a time (any more
64would be confusing.) The fringe widths cannot be adjusted, and
65individual windows cannot have their own fringe settings. A mouse
66click on the fringe no longer generates a special event.
6b5c0a2e 67
1dffc5db 68@item
4b878354 69Individual windows cannot have their own scroll-bar settings.
1dffc5db 70
6b5c0a2e 71@item
4b878354
RS
72You can no longer use @samp{default} in a @code{defface} to specify
73defaults for subsequent faces.
0a9482c5 74
1dffc5db 75@item
4b878354
RS
76The function @code{display-supports-face-attributes-p} has been
77removed. In @code{defface} specifications, the @code{supports}
78predicate is no longer supported.
1dffc5db
RS
79
80@item
4b878354
RS
81@code{face-attribute-relative-p} and @code{merge-face-attribute} have
82been removed.
1dffc5db 83
0a9482c5 84@item
4b878354
RS
85The priority of faces in a list supplied by the @code{:inherit} face
86attribute has been reversed. We like to make changes like this once
87in a while, to keep Emacs Lisp programmers on their toes.
0a9482c5
RS
88
89@item
4b878354
RS
90The @code{min-colors} face attribute, used for tailoring faces to
91limited-color displays, does not exist. If in doubt, use colors like
92``white'' and ``black'', which ought to be defined everywhere.
0a9482c5
RS
93
94@item
4b878354
RS
95The @code{tty-color-mode} frame parameter does not exist. You should
96just trust the terminal capabilities database.
97@end itemize
0a9482c5
RS
98
99@item
4b878354 100Several simplifications have been made to mouse support:
0a9482c5 101
4b878354 102@itemize @minus
0a9482c5 103@item
4b878354
RS
104Clicking @kbd{mouse-1} won't follow links, as that is alien to the
105spirit of Emacs. Therefore, the @code{follow-link} property doesn't
106has any special meaning, and the function @code{mouse-on-link-p} has
107been removed.
0a9482c5 108
1dffc5db 109@item
4b878354
RS
110The variable @code{void-text-area-pointer} has been removed, so the
111mouse pointer shape remains unchanged when moving between valid text
112areas and void text areas. The @code{pointer} image and text
113properties are no longer supported.
1dffc5db
RS
114
115@item
4b878354
RS
116Mouse events will no longer specify the timestamp, the object clicked,
117equivalent buffer positions (for marginal or fringe areas), glyph
118coordinates, or relative pixel coordinates.
119@end itemize
1dffc5db 120
6b5c0a2e 121@item
4b878354
RS
122Simplifications have also been made to the way Emacs handles keymaps
123and key sequences:
6b5c0a2e 124
4b878354 125@itemize @minus
0a9482c5 126@item
4b878354
RS
127The @code{kbd} macro has been removed. It isn't that difficult to
128write key sequences using the string and vector representations, and
129we want to encourage users to learn.
0a9482c5
RS
130
131@item
4b878354
RS
132Emacs no longer supports key remapping. You can do pretty much the
133same thing with @code{substitute-key-definition}, or by advising the
134relevant command.
0a9482c5
RS
135
136@item
4b878354
RS
137The @code{keymap} text and overlay property is now overridden by minor
138mode keymaps, and will not work at the ends of text properties and
139overlays.
0a9482c5
RS
140
141@item
4b878354
RS
142The functions @code{map-keymap}, @code{keymap-prompt}, and
143@code{current-active-maps} have been removed.
144@end itemize
0a9482c5 145
8241495d 146@item
4b878354
RS
147Process support has been pared down to a functional minimum. The
148functions @code{call-process-shell-command} and @code{process-file}
149have been deleted. Processes no longer maintain property lists, and
150they won't ask any questions when the user tries to exit Emacs (which
151would simply be rude.) The function @code{signal-process} won't
152accept a process object, only the process id; determining the process
153id from a process object is left as an exercise to the programmer.
0a9482c5 154
574efc83 155@item
4b878354
RS
156Networking has also been simplified: @code{make-network-process} and
157its various associated function have all been replaced with a single
158easy-to-use function, @code{open-network-stream}, which can't use UDP,
159can't act as a server, and can't set up non-blocking connections.
160Also, deleting a network process with @code{delete-process} won't call
161the sentinel.
0a9482c5 162
1dffc5db 163@item
4b878354
RS
164Many programming shortcuts have been deleted, to provide you with the
165enjoyment of ``rolling your own''. The macros @code{while-no-input},
166@code{with-local-quit}, @code{with-selected-window},
167@code{dynamic-completion-table}, and @code{lazy-completion-table} no
168longer exist. Also, there are no built-in progress reporters.
1dffc5db 169
574efc83 170@item
4b878354
RS
171Variable aliases are no longer supported. Aliases are for functions,
172not for variables.
0a9482c5 173
574efc83 174@item
4b878354
RS
175The variables @code{most-positive-fixnum} and
176@code{most-negative-fixnum} do not exist. On 32 bit machines, the
177most positive integer is probably 134217727, and the most negative
178integer is probably -134217728.
0a9482c5 179
0a9482c5 180@item
4b878354
RS
181The functions @code{eql} and @code{macroexpand-all} are no longer
182available. However, you can find similar functions in the @code{cl}
183package.
0a9482c5 184
a40d4712 185@item
4b878354
RS
186The list returned by @code{split-string} won't include null substrings
187for separators at the beginning or end of a string. If you want to
188check for such separators, do it separately.
a40d4712 189
0a9482c5 190@item
4b878354
RS
191The function @code{assoc-string} has been removed. Use
192@code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
193are no longer obsolete.)
0a9482c5
RS
194
195@item
4b878354
RS
196The escape sequence @samp{\s} is always interpreted as a super
197modifier, never a space.
0a9482c5 198
ec221d13 199@item
4b878354
RS
200The variable @code{buffer-save-without-query} has been removed, to
201prevent Emacs from sneakily saving buffers. Also, the hook
202@code{before-save-hook} has been removed, so if you want something to
203be done before saving, advise or redefine @code{basic-save-buffer}.
0a9482c5 204
ec221d13 205@item
4b878354
RS
206The variable @code{buffer-auto-save-file-format} has been renamed to
207@code{auto-save-file-format}, and is no longer a permanent local.
0a9482c5 208
390538c3 209@item
4b878354
RS
210The function @code{visited-file-modtime} now returns a cons, instead
211of a list of two integers. The primitive @code{set-file-times} has
212been eliminated.
390538c3 213
0a9482c5 214@item
4b878354 215The function @code{file-remote-p} is no longer available.
0a9482c5
RS
216
217@item
4b878354
RS
218When determining the filename extension, a leading dot in a filename
219is no longer ignored. Thus, @file{.emacs} is considered to have
220extension @file{emacs}, rather than being extensionless.
fcad2463
RS
221
222@item
4b878354
RS
223Emacs looks for special file handlers in a more efficient manner: it
224will choose the first matching handler in
225@code{file-name-handler-alist}, rather than trying to figure out which
226provides the closest match.
0a9482c5 227
969fe9b5 228@item
4b878354
RS
229The @code{predicate} argument for @code{read-file-name} has been
230removed, and so have the variables @code{read-file-name-function} and
231@code{read-file-name-completion-ignore-case}. The function
232@code{read-directory-name} has also been removed.
969fe9b5 233
0a9482c5 234@item
4b878354
RS
235The functions @code{all-completions} and @code{try-completion} will no
236longer accept lists of strings or hash tables (it will still accept
237alists, obarrays, and functions.) In addition, the function
238@code{test-completion} is no longer available.
0a9482c5
RS
239
240@item
4b878354
RS
241Arbitrary Lisp functions can no longer be recorded into
242@code{buffer-undo-list}. As a consequence, @code{yank-undo-function}
243is obsolete, and has been removed.
0a9482c5
RS
244
245@item
4b878354
RS
246Emacs will never complain about commands that accumulate too much undo
247information, so you no longer have to worry about binding
248@code{buffer-undo-list} to @code{t} for such commands (though you may
249want to do that anyway, to avoid taking up unnecessary memory space.)
0a9482c5 250
4b878354
RS
251@item
252Atomic change groups are no longer supported.
0a9482c5 253
4b878354
RS
254@item
255The list returned by @code{(match-data t)} no longer records the
256buffer as a final element.
0a9482c5 257
4b878354
RS
258@item
259The function @code{looking-back} has been removed, so we no longer
260have the benefit of hindsight.
0a9482c5
RS
261
262@item
4b878354
RS
263The variable @code{search-spaces-regexp} does not exist. Spaces
264always stand for themselves in regular expression searches.
0a9482c5
RS
265
266@item
4b878354
RS
267The functions @code{skip-chars-forward} and @code{skip-chars-backward}
268no longer accepts character classes such as @samp{[:alpha:]}. All
269characters are created equal.
0a9482c5
RS
270
271@item
4b878354
RS
272The @code{yank-handler} text property no longer has any meaning.
273Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
274@code{insert-buffer-substring-as-yank} have all been removed.
0a9482c5
RS
275
276@item
4b878354
RS
277The variable @code{char-property-alias-alist} has been deleted.
278Aliases are for functions, not for properties.
0a9482c5
RS
279
280@item
4b878354
RS
281The function @code{get-char-property-and-overlay} has been deleted.
282If you want the properties at a point, find the text properties at the
283point; then, find the overlays at the point, and find the properties
284on those overlays.
0a9482c5
RS
285
286@item
4b878354
RS
287Font Lock mode only manages @code{face} properties; you can't use
288font-lock keywords to specify arbitrary text properties for it to
289manage. After all, it is called Font Lock mode, not Arbitrary
290Properties Lock mode.
0a9482c5 291
574efc83 292@item
4b878354 293The arguments to @code{remove-overlays} are no longer optional.
0a9482c5 294
574efc83 295@item
4b878354
RS
296In @code{replace-match}, the replacement text now inherits properties
297from the surrounding text.
0a9482c5 298
574efc83 299@item
4b878354
RS
300@code{mode-line-format} no longer supports the @code{:propertize},
301@code{%i}, and @code{%I} constructs. The function
302@code{format-mode-line} has been removed.
0a9482c5 303
574efc83 304@item
4b878354
RS
305The functions @code{window-inside-edges} and @code{window-body-height}
306have been removed. You should do the relevant calculations yourself,
307starting with @code{window-width} and @code{window-height}.
0a9482c5 308
0a9482c5 309@item
4b878354
RS
310The functions @code{window-pixel-edges} and
311@code{window-inside-pixel-edges} have been removed. We prefer to
312think in terms of lines and columns, not pixel coordinates. (Sometime
313in the distant past, we will do away with graphical terminals
314entirely, in favor of text terminals.) For similar reasons, the
315functions @code{posn-at-point}, @code{posn-at-x-y}, and
316@code{pos-visible-in-window-p} have been removed.
0a9482c5
RS
317
318@item
4b878354
RS
319The macro @code{save-selected-window} only saves the selected window
320of the selected frame, so don't try selecting windows in other frames.
0a9482c5
RS
321
322@item
4b878354 323The function @code{minibufferp} is no longer available.
0a9482c5
RS
324
325@item
4b878354
RS
326The function @code{modify-all-frames-parameters} has been removed (we
327always suspected the name was ungrammatical, anyway.)
328
329@item
330The @code{line-spacing} variable no longer accepts float values.
331
332@item
333The function @code{tool-bar-local-item-from-menu} has been deleted.
334If you need to make an entry in the tool bar, you can still use
335@code{tool-bar-add-item-from-menu}, but that modifies the binding in
336the source keymap instead of copying it into the local keymap.
337
338@item
339When determining the major mode, the file name takes precedence over
340the interpreter magic line. The variable @code{magic-mode-alist},
341which associates certain buffer beginnings with major modes, has been
342eliminated.
343
344@item
345The hook @code{after-change-major-mode-hook} is not defined, and
346neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
347
348@item
349The variable @code{minor-mode-list} has been removed.
350
351@item
352@code{define-derived-mode} will copy abbrevs from the parent mode's
353abbrev table, instead of creating a new, empty abbrev table.
354
355@item
356There are no ``system'' abbrevs. When the user saves into the abbrevs
357file, all abbrevs are saved.
358
359@item
360The Warnings facility has been removed. Just use @code{error}.
361
362@item
363Several hook variables have been renamed to flout the Emacs naming
364conventions. We feel that consistency is boring, and having
365non-standard hook names encourages users to check the documentation
366before using a hook. For instance, the normal hook
367@code{find-file-hook} has been renamed to @code{find-file-hooks}, and
368the abnormal hook @code{delete-frame-functions} has been renamed to
369@code{delete-frame-hook}.
370
371@item
372The function @code{symbol-file} does not exist. If you want to know
373which file defined a function or variable, try grepping for it.
374
375@item
376The variable @code{load-history} records function definitions just
377like variable definitions, instead of indicating which functions were
378previously autoloaded.
379
380@item
381There is a new variable, @code{recursive-load-depth-limit}, which
382specifies how many times files can recursively load themselves; it is
38350 by default, and nil means infinity. Previously, Emacs signalled an
384error after just 3 recursive loads, which was boring.
385
386@item
387Byte-compiler warnings and error messages will leave out the line and
388character positions, in order to exercise your debugging skills.
389Also, there is no @code{with-no-warnings} macro---instead of
390suppressing compiler warnings, fix your code to avoid them!
391
392@item
393The function @code{unsafep} has been removed.
394
395@item
396File local variables can now specify a string with text properties.
397Since arbitrary Lisp expressions can be embedded in text properties,
398this can provide you with a great deal of flexibility and power. On
399the other hand, @code{safe-local-eval-forms} and the
400@code{safe-local-eval-function} function property have no special
8241495d 401meaning.
0a9482c5
RS
402
403@item
4b878354
RS
404You can no longer use @code{char-displayable-p} to test if Emacs can
405display a certain character.
406
407@item
408The function @code{string-to-multibyte} is no longer available.
409
410@item
411The @code{translation-table-for-input} translation table has been
412removed. Also, translation hash tables are no longer available, so we
413don't need the functions @code{lookup-character} and
414@code{lookup-integer}.
415
416@item
417The @code{table} argument to @code{translate-region} can no longer be
418a char-table; it has to be a string.
419
420@item
421The functions @code{merge-coding-systems} and
422@code{decode-coding-inserted-region}, and the variable
423@code{auto-coding-functions}, have been deleted. The
424@code{mime-text-unsuitable} coding system property no longer has any
425special meaning.
0a9482c5
RS
426
427@item
4b878354
RS
428If pure storage overflows while dumping, Emacs won't tell you how much
429additional pure storage it needs. Try adding in increments of 20000,
430until you have enough.
0a9482c5
RS
431
432@item
4b878354
RS
433The variables @code{gc-elapsed}, @code{gcs-done}, and
434@code{post-gc-hook} have been garbage-collected.
0a9482c5 435@end itemize
ab5796a9
MB
436
437@ignore
438 arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
439@end ignore