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