84048
|
1 @c -*-texinfo-*-
|
|
2 @c This is part of the GNU Emacs Lisp Reference Manual.
|
|
3 @c Copyright (C) 1999, 2002, 2003, 2004, 2005,
|
100974
|
4 @c 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
84048
|
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 have 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 variable @code{auto-coding-functions} and the two functions
|
|
437 @code{merge-coding-systems} and @code{decode-coding-inserted-region}
|
|
438 have been deleted. The coding system property
|
|
439 @code{mime-text-unsuitable} no longer has any special meaning.
|
|
440
|
|
441 @item
|
|
442 If pure storage overflows while dumping, Emacs won't tell you how much
|
|
443 additional pure storage it needs. Try adding in increments of 20000,
|
|
444 until you have enough.
|
|
445
|
|
446 @item
|
|
447 The variables @code{gc-elapsed}, @code{gcs-done}, and
|
|
448 @code{post-gc-hook} have been garbage-collected.
|
|
449 @end itemize
|
|
450
|
|
451 @ignore
|
|
452 arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
|
|
453 @end ignore
|