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