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