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