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