Commit | Line | Data |
---|---|---|
0a9482c5 RS |
1 | @c -*-texinfo-*- |
2 | @c This is part of the GNU Emacs Lisp Reference Manual. | |
ceb4c4d3 | 3 | @c Copyright (C) 1999, 2002, 2003, 2004, 2005, |
4e6835db | 4 | @c 2006, 2007 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 | |
12 | For those users who live backwards in time, here is information about | |
4b878354 | 13 | downgrading to Emacs version 21.4. We hope you will enjoy the greater |
0b3a2969 LK |
14 | simplicity that results from the absence of many Emacs @value{EMACSVER} |
15 | features. | |
0a9482c5 | 16 | |
4b878354 | 17 | @section Old Lisp Features in Emacs 21 |
0a9482c5 RS |
18 | |
19 | @itemize @bullet | |
20 | @item | |
4b878354 RS |
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.) | |
0a9482c5 | 24 | |
4b878354 | 25 | @itemize @minus |
bd04e7de KS |
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 | ||
0a9482c5 | 32 | @item |
4b878354 RS |
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. | |
0a9482c5 | 37 | |
0a9482c5 | 38 | @item |
4b878354 RS |
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. | |
0a9482c5 | 44 | |
6b5c0a2e | 45 | @item |
4b878354 RS |
46 | Support for image maps and image slices has been removed. Emacs was |
47 | always meant for editing text, anyway. | |
6b5c0a2e | 48 | |
0a9482c5 | 49 | @item |
4b878354 RS |
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. | |
0a9482c5 | 53 | |
4b878354 RS |
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. | |
0a9482c5 | 59 | |
4b878354 RS |
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. | |
0a9482c5 | 65 | |
8241495d | 66 | @item |
4b878354 RS |
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. | |
6b5c0a2e | 75 | |
1dffc5db | 76 | @item |
4b878354 | 77 | Individual windows cannot have their own scroll-bar settings. |
1dffc5db | 78 | |
6b5c0a2e | 79 | @item |
4b878354 RS |
80 | You can no longer use @samp{default} in a @code{defface} to specify |
81 | defaults for subsequent faces. | |
0a9482c5 | 82 | |
1dffc5db | 83 | @item |
4b878354 RS |
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. | |
1dffc5db RS |
87 | |
88 | @item | |
912c7235 KB |
89 | The functions @code{merge-face-attribute} and |
90 | @code{face-attribute-relative-p} have been removed. | |
1dffc5db | 91 | |
0a9482c5 | 92 | @item |
4b878354 RS |
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. | |
0a9482c5 RS |
96 | |
97 | @item | |
4b878354 RS |
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 | |
827b7ee7 | 100 | ``white'' and ``black,'' which ought to be defined everywhere. |
0a9482c5 RS |
101 | |
102 | @item | |
4b878354 RS |
103 | The @code{tty-color-mode} frame parameter does not exist. You should |
104 | just trust the terminal capabilities database. | |
105 | @end itemize | |
0a9482c5 RS |
106 | |
107 | @item | |
4b878354 | 108 | Several simplifications have been made to mouse support: |
0a9482c5 | 109 | |
4b878354 | 110 | @itemize @minus |
0a9482c5 | 111 | @item |
4b878354 RS |
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. | |
0a9482c5 | 116 | |
1dffc5db | 117 | @item |
4b878354 RS |
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. | |
1dffc5db RS |
122 | |
123 | @item | |
4b878354 RS |
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 | |
1dffc5db | 128 | |
6b5c0a2e | 129 | @item |
4b878354 RS |
130 | Simplifications have also been made to the way Emacs handles keymaps |
131 | and key sequences: | |
6b5c0a2e | 132 | |
4b878354 | 133 | @itemize @minus |
0a9482c5 | 134 | @item |
bd04e7de KS |
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. | |
0a9482c5 RS |
138 | |
139 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
143 | |
144 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
148 | |
149 | @item | |
4b878354 RS |
150 | The functions @code{map-keymap}, @code{keymap-prompt}, and |
151 | @code{current-active-maps} have been removed. | |
152 | @end itemize | |
0a9482c5 | 153 | |
8241495d | 154 | @item |
4b878354 RS |
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. | |
0a9482c5 | 162 | |
574efc83 | 163 | @item |
4b878354 RS |
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. | |
0a9482c5 | 170 | |
1dffc5db | 171 | @item |
4b878354 | 172 | Many programming shortcuts have been deleted, to provide you with the |
827b7ee7 | 173 | enjoyment of ``rolling your own.'' The macros @code{while-no-input}, |
72b09a92 RS |
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. | |
1dffc5db | 178 | |
574efc83 | 179 | @item |
4b878354 RS |
180 | Variable aliases are no longer supported. Aliases are for functions, |
181 | not for variables. | |
0a9482c5 | 182 | |
574efc83 | 183 | @item |
4b878354 RS |
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. | |
0a9482c5 | 188 | |
0a9482c5 | 189 | @item |
4b878354 RS |
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. | |
0a9482c5 | 193 | |
a40d4712 | 194 | @item |
4b878354 RS |
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. | |
a40d4712 | 198 | |
0a9482c5 | 199 | @item |
4b878354 RS |
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.) | |
0a9482c5 RS |
203 | |
204 | @item | |
4b878354 RS |
205 | The escape sequence @samp{\s} is always interpreted as a super |
206 | modifier, never a space. | |
0a9482c5 | 207 | |
ec221d13 | 208 | @item |
4b878354 RS |
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}. | |
0a9482c5 | 213 | |
ec221d13 | 214 | @item |
4b878354 RS |
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. | |
0a9482c5 | 217 | |
390538c3 | 218 | @item |
4b878354 RS |
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. | |
390538c3 | 222 | |
0a9482c5 | 223 | @item |
4b878354 | 224 | The function @code{file-remote-p} is no longer available. |
0a9482c5 RS |
225 | |
226 | @item | |
4b878354 RS |
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. | |
fcad2463 RS |
230 | |
231 | @item | |
4b878354 RS |
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. | |
0a9482c5 | 236 | |
969fe9b5 | 237 | @item |
4b878354 RS |
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. | |
969fe9b5 | 242 | |
0a9482c5 | 243 | @item |
4b878354 RS |
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. | |
0a9482c5 | 248 | |
1d748512 RS |
249 | @item |
250 | The @samp{G} interactive code character is no longer supported. | |
251 | Use @samp{F} instead. | |
252 | ||
0a9482c5 | 253 | @item |
4b878354 RS |
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. | |
0a9482c5 RS |
257 | |
258 | @item | |
4b878354 RS |
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.) | |
0a9482c5 | 263 | |
4b878354 RS |
264 | @item |
265 | Atomic change groups are no longer supported. | |
0a9482c5 | 266 | |
4b878354 RS |
267 | @item |
268 | The list returned by @code{(match-data t)} no longer records the | |
269 | buffer as a final element. | |
0a9482c5 | 270 | |
4b878354 RS |
271 | @item |
272 | The function @code{looking-back} has been removed, so we no longer | |
273 | have the benefit of hindsight. | |
0a9482c5 RS |
274 | |
275 | @item | |
4b878354 RS |
276 | The variable @code{search-spaces-regexp} does not exist. Spaces |
277 | always stand for themselves in regular expression searches. | |
0a9482c5 RS |
278 | |
279 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
283 | |
284 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
288 | |
289 | @item | |
4b878354 RS |
290 | The variable @code{char-property-alias-alist} has been deleted. |
291 | Aliases are for functions, not for properties. | |
0a9482c5 RS |
292 | |
293 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
298 | |
299 | @item | |
4b878354 RS |
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. | |
0a9482c5 | 304 | |
574efc83 | 305 | @item |
4b878354 | 306 | The arguments to @code{remove-overlays} are no longer optional. |
0a9482c5 | 307 | |
574efc83 | 308 | @item |
4b878354 RS |
309 | In @code{replace-match}, the replacement text now inherits properties |
310 | from the surrounding text. | |
0a9482c5 | 311 | |
574efc83 | 312 | @item |
bd04e7de | 313 | The variable @code{mode-line-format} no longer supports the @code{:propertize}, |
4b878354 RS |
314 | @code{%i}, and @code{%I} constructs. The function |
315 | @code{format-mode-line} has been removed. | |
0a9482c5 | 316 | |
574efc83 | 317 | @item |
4b878354 RS |
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}. | |
0a9482c5 | 321 | |
0a9482c5 | 322 | @item |
4b878354 RS |
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 | |
b6c146b2 KS |
328 | functions @code{posn-at-point}, @code{posn-at-x-y}, and |
329 | @code{window-line-height} have been removed, and | |
bd04e7de KS |
330 | @code{pos-visible-in-window-p} no longer worries about partially |
331 | visible rows. | |
0a9482c5 RS |
332 | |
333 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
336 | |
337 | @item | |
4b878354 | 338 | The function @code{minibufferp} is no longer available. |
0a9482c5 RS |
339 | |
340 | @item | |
4b878354 RS |
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 | |
80df27a7 | 398 | 50 by default, and @code{nil} means infinity. Previously, Emacs signaled an |
4b878354 RS |
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 | |
8241495d | 416 | meaning. |
0a9482c5 RS |
417 | |
418 | @item | |
4b878354 RS |
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 | |
42b50684 | 436 | The two functions @code{merge-coding-systems} and |
4b878354 RS |
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. | |
0a9482c5 RS |
441 | |
442 | @item | |
4b878354 RS |
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. | |
0a9482c5 RS |
446 | |
447 | @item | |
4b878354 RS |
448 | The variables @code{gc-elapsed}, @code{gcs-done}, and |
449 | @code{post-gc-hook} have been garbage-collected. | |
0a9482c5 | 450 | @end itemize |
ab5796a9 MB |
451 | |
452 | @ignore | |
453 | arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6 | |
454 | @end ignore |