(Fformat): Explicitly test for end of format string and don't use `index'.
[bpt/emacs.git] / lispref / anti.texi
CommitLineData
0a9482c5
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
651f374c 3@c Copyright (C) 1999, 2002, 2003, 2004, 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},
72b09a92
RS
167@code{with-local-quit}, and @code{with-selected-window}, along with
168@code{dynamic-completion-table} and @code{lazy-completion-table} no
169longer exist. Also, there are no built-in progress reporters;
170with Emacs, you can take progress for granted.
1dffc5db 171
574efc83 172@item
4b878354
RS
173Variable aliases are no longer supported. Aliases are for functions,
174not for variables.
0a9482c5 175
574efc83 176@item
4b878354
RS
177The variables @code{most-positive-fixnum} and
178@code{most-negative-fixnum} do not exist. On 32 bit machines, the
179most positive integer is probably 134217727, and the most negative
180integer is probably -134217728.
0a9482c5 181
0a9482c5 182@item
4b878354
RS
183The functions @code{eql} and @code{macroexpand-all} are no longer
184available. However, you can find similar functions in the @code{cl}
185package.
0a9482c5 186
a40d4712 187@item
4b878354
RS
188The list returned by @code{split-string} won't include null substrings
189for separators at the beginning or end of a string. If you want to
190check for such separators, do it separately.
a40d4712 191
0a9482c5 192@item
4b878354
RS
193The function @code{assoc-string} has been removed. Use
194@code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
195are no longer obsolete.)
0a9482c5
RS
196
197@item
4b878354
RS
198The escape sequence @samp{\s} is always interpreted as a super
199modifier, never a space.
0a9482c5 200
ec221d13 201@item
4b878354
RS
202The variable @code{buffer-save-without-query} has been removed, to
203prevent Emacs from sneakily saving buffers. Also, the hook
204@code{before-save-hook} has been removed, so if you want something to
205be done before saving, advise or redefine @code{basic-save-buffer}.
0a9482c5 206
ec221d13 207@item
4b878354
RS
208The variable @code{buffer-auto-save-file-format} has been renamed to
209@code{auto-save-file-format}, and is no longer a permanent local.
0a9482c5 210
390538c3 211@item
4b878354
RS
212The function @code{visited-file-modtime} now returns a cons, instead
213of a list of two integers. The primitive @code{set-file-times} has
214been eliminated.
390538c3 215
0a9482c5 216@item
4b878354 217The function @code{file-remote-p} is no longer available.
0a9482c5
RS
218
219@item
4b878354
RS
220When determining the filename extension, a leading dot in a filename
221is no longer ignored. Thus, @file{.emacs} is considered to have
222extension @file{emacs}, rather than being extensionless.
fcad2463
RS
223
224@item
4b878354
RS
225Emacs looks for special file handlers in a more efficient manner: it
226will choose the first matching handler in
227@code{file-name-handler-alist}, rather than trying to figure out which
228provides the closest match.
0a9482c5 229
969fe9b5 230@item
4b878354
RS
231The @code{predicate} argument for @code{read-file-name} has been
232removed, and so have the variables @code{read-file-name-function} and
233@code{read-file-name-completion-ignore-case}. The function
234@code{read-directory-name} has also been removed.
969fe9b5 235
0a9482c5 236@item
4b878354
RS
237The functions @code{all-completions} and @code{try-completion} will no
238longer accept lists of strings or hash tables (it will still accept
239alists, obarrays, and functions.) In addition, the function
240@code{test-completion} is no longer available.
0a9482c5 241
1d748512
RS
242@item
243The @samp{G} interactive code character is no longer supported.
244Use @samp{F} instead.
245
0a9482c5 246@item
4b878354
RS
247Arbitrary Lisp functions can no longer be recorded into
248@code{buffer-undo-list}. As a consequence, @code{yank-undo-function}
249is obsolete, and has been removed.
0a9482c5
RS
250
251@item
4b878354
RS
252Emacs will never complain about commands that accumulate too much undo
253information, so you no longer have to worry about binding
254@code{buffer-undo-list} to @code{t} for such commands (though you may
255want to do that anyway, to avoid taking up unnecessary memory space.)
0a9482c5 256
4b878354
RS
257@item
258Atomic change groups are no longer supported.
0a9482c5 259
4b878354
RS
260@item
261The list returned by @code{(match-data t)} no longer records the
262buffer as a final element.
0a9482c5 263
4b878354
RS
264@item
265The function @code{looking-back} has been removed, so we no longer
266have the benefit of hindsight.
0a9482c5
RS
267
268@item
4b878354
RS
269The variable @code{search-spaces-regexp} does not exist. Spaces
270always stand for themselves in regular expression searches.
0a9482c5
RS
271
272@item
4b878354
RS
273The functions @code{skip-chars-forward} and @code{skip-chars-backward}
274no longer accepts character classes such as @samp{[:alpha:]}. All
275characters are created equal.
0a9482c5
RS
276
277@item
4b878354
RS
278The @code{yank-handler} text property no longer has any meaning.
279Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
280@code{insert-buffer-substring-as-yank} have all been removed.
0a9482c5
RS
281
282@item
4b878354
RS
283The variable @code{char-property-alias-alist} has been deleted.
284Aliases are for functions, not for properties.
0a9482c5
RS
285
286@item
4b878354
RS
287The function @code{get-char-property-and-overlay} has been deleted.
288If you want the properties at a point, find the text properties at the
289point; then, find the overlays at the point, and find the properties
290on those overlays.
0a9482c5
RS
291
292@item
4b878354
RS
293Font Lock mode only manages @code{face} properties; you can't use
294font-lock keywords to specify arbitrary text properties for it to
295manage. After all, it is called Font Lock mode, not Arbitrary
296Properties Lock mode.
0a9482c5 297
574efc83 298@item
4b878354 299The arguments to @code{remove-overlays} are no longer optional.
0a9482c5 300
574efc83 301@item
4b878354
RS
302In @code{replace-match}, the replacement text now inherits properties
303from the surrounding text.
0a9482c5 304
574efc83 305@item
4b878354
RS
306@code{mode-line-format} no longer supports the @code{:propertize},
307@code{%i}, and @code{%I} constructs. The function
308@code{format-mode-line} has been removed.
0a9482c5 309
574efc83 310@item
4b878354
RS
311The functions @code{window-inside-edges} and @code{window-body-height}
312have been removed. You should do the relevant calculations yourself,
313starting with @code{window-width} and @code{window-height}.
0a9482c5 314
0a9482c5 315@item
4b878354
RS
316The functions @code{window-pixel-edges} and
317@code{window-inside-pixel-edges} have been removed. We prefer to
318think in terms of lines and columns, not pixel coordinates. (Sometime
319in the distant past, we will do away with graphical terminals
320entirely, in favor of text terminals.) For similar reasons, the
321functions @code{posn-at-point}, @code{posn-at-x-y}, and
322@code{pos-visible-in-window-p} have been removed.
0a9482c5
RS
323
324@item
4b878354
RS
325The macro @code{save-selected-window} only saves the selected window
326of the selected frame, so don't try selecting windows in other frames.
0a9482c5
RS
327
328@item
4b878354 329The function @code{minibufferp} is no longer available.
0a9482c5
RS
330
331@item
4b878354
RS
332The function @code{modify-all-frames-parameters} has been removed (we
333always suspected the name was ungrammatical, anyway.)
334
335@item
336The @code{line-spacing} variable no longer accepts float values.
337
338@item
339The function @code{tool-bar-local-item-from-menu} has been deleted.
340If you need to make an entry in the tool bar, you can still use
341@code{tool-bar-add-item-from-menu}, but that modifies the binding in
342the source keymap instead of copying it into the local keymap.
343
344@item
345When determining the major mode, the file name takes precedence over
346the interpreter magic line. The variable @code{magic-mode-alist},
347which associates certain buffer beginnings with major modes, has been
348eliminated.
349
350@item
351The hook @code{after-change-major-mode-hook} is not defined, and
352neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
353
354@item
355The variable @code{minor-mode-list} has been removed.
356
357@item
358@code{define-derived-mode} will copy abbrevs from the parent mode's
359abbrev table, instead of creating a new, empty abbrev table.
360
361@item
362There are no ``system'' abbrevs. When the user saves into the abbrevs
363file, all abbrevs are saved.
364
365@item
366The Warnings facility has been removed. Just use @code{error}.
367
368@item
369Several hook variables have been renamed to flout the Emacs naming
370conventions. We feel that consistency is boring, and having
371non-standard hook names encourages users to check the documentation
372before using a hook. For instance, the normal hook
373@code{find-file-hook} has been renamed to @code{find-file-hooks}, and
374the abnormal hook @code{delete-frame-functions} has been renamed to
375@code{delete-frame-hook}.
376
377@item
378The function @code{symbol-file} does not exist. If you want to know
379which file defined a function or variable, try grepping for it.
380
381@item
382The variable @code{load-history} records function definitions just
383like variable definitions, instead of indicating which functions were
384previously autoloaded.
385
386@item
387There is a new variable, @code{recursive-load-depth-limit}, which
388specifies how many times files can recursively load themselves; it is
80df27a7 38950 by default, and @code{nil} means infinity. Previously, Emacs signaled an
4b878354
RS
390error after just 3 recursive loads, which was boring.
391
392@item
393Byte-compiler warnings and error messages will leave out the line and
394character positions, in order to exercise your debugging skills.
395Also, there is no @code{with-no-warnings} macro---instead of
396suppressing compiler warnings, fix your code to avoid them!
397
398@item
399The function @code{unsafep} has been removed.
400
401@item
402File local variables can now specify a string with text properties.
403Since arbitrary Lisp expressions can be embedded in text properties,
404this can provide you with a great deal of flexibility and power. On
405the other hand, @code{safe-local-eval-forms} and the
406@code{safe-local-eval-function} function property have no special
8241495d 407meaning.
0a9482c5
RS
408
409@item
4b878354
RS
410You can no longer use @code{char-displayable-p} to test if Emacs can
411display a certain character.
412
413@item
414The function @code{string-to-multibyte} is no longer available.
415
416@item
417The @code{translation-table-for-input} translation table has been
418removed. Also, translation hash tables are no longer available, so we
419don't need the functions @code{lookup-character} and
420@code{lookup-integer}.
421
422@item
423The @code{table} argument to @code{translate-region} can no longer be
424a char-table; it has to be a string.
425
426@item
427The functions @code{merge-coding-systems} and
428@code{decode-coding-inserted-region}, and the variable
429@code{auto-coding-functions}, have been deleted. The
430@code{mime-text-unsuitable} coding system property no longer has any
431special meaning.
0a9482c5
RS
432
433@item
4b878354
RS
434If pure storage overflows while dumping, Emacs won't tell you how much
435additional pure storage it needs. Try adding in increments of 20000,
436until you have enough.
0a9482c5
RS
437
438@item
4b878354
RS
439The variables @code{gc-elapsed}, @code{gcs-done}, and
440@code{post-gc-hook} have been garbage-collected.
0a9482c5 441@end itemize
ab5796a9
MB
442
443@ignore
444 arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
445@end ignore