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