comparison lispref/anti.texi @ 21007:66d807bdc5b4

*** empty log message ***
author Richard M. Stallman <rms@gnu.org>
date Sat, 28 Feb 1998 01:53:53 +0000
parents 2d4db32cccd5
children 90da2489c498
comparison
equal deleted inserted replaced
21006:00022857f529 21007:66d807bdc5b4
1 @c -*-texinfo-*- 1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual. 2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1993 Free Software Foundation, Inc. 3 @c Copyright (C) 1998 Free Software Foundation, Inc.
4 @c See the file elisp.texi for copying conditions. 4 @c See the file elisp.texi for copying conditions.
5 @node Antinews, Index, Standard Hooks, Top 5 @node Antinews, Index, Standard Hooks, Top
6 @appendix Emacs 18 Antinews 6 @appendix Emacs 19 Antinews
7 7
8 For those users who live backwards in time, here is information about 8 For those users who live backwards in time, here is information about
9 downgrading to Emacs version 18. We hope you will enjoy the greater 9 downgrading to Emacs version 19.34. We hope you will enjoy the greater
10 simplicity that results from the absence of many Emacs 19 features. 10 simplicity that results from the absence of many Emacs 19 features. In
11 11 the following section, we carry this information back as far as Emacs
12 @section Old Features in the Lisp Language 12 19.29, for which the previous printed edition of this manual was made.
13 13
14 The following functions are missing or different in Emacs version 18. 14 @section Old Lisp Features in Emacs 19
15 15
16 @itemize @bullet 16 Here are the most important of the features that you will learn
17 @item 17 to do without in Emacs 19:
18 The functions @code{delete}, @code{member}, @code{indirect-function}, 18
19 @code{map-y-or-n-p}, and @code{invocation-name} have been removed. 19 @itemize @bullet
20 20 @item
21 @item 21 In a great simplification, Emacs 19 supports ASCII characters only.
22 The function @code{read} now skips a terminator character that 22 There are no multibyte characters, character sets, language
23 terminates a symbol when reading from a buffer. Thus, if you use 23 environments, coding systems, or input methods; all the functions that
24 @code{read} on a buffer containing @samp{foo(bar)} following point, it 24 specifically relate to them are gone as well.
25 returns @code{foo} and leaves point after the open-parenthesis. This 25
26 means there's no way you can properly read the list @samp{(bar)}, but 26 Valid character codes for text must be in the range 0 through 255.
27 that's the way the cookie crumbles. 27 Within this range, there are no invalid character codes.
28 28
29 Because of this simplification, it's no longer necessary for an input 29 @item
30 stream function to accept an optional argument. In Emacs 18, an input 30 The Custom facility has been replaced with a much simpler and more
31 stream is always called with no arguments, and should always return 31 general method of defining user option variables. Instead of
32 the next character of input. 32 @code{defcustom}, which requires you to specify each user option's
33 33 data type and classify them into groups, all you have to do is write
34 @item 34 a @code{defvar} and start the documentation string with @samp{*}.
35 The function @code{documentation} takes just one argument; 35 @end itemize
36 @code{documentation-property} takes just two. 36
37 37 Here are changes in the Lisp language itself:
38 @item 38
39 @code{random} no longer has the optional argument @var{n}. 39 @itemize @bullet
40 40 @item
41 @item 41 Symbols whose names start with @samp{:} are no longer special
42 You can no longer arrange to run a hook if a particular Lisp library is 42 in any way. They start out void, like most other symbols.
43 loaded. The variable @code{after-load-alist} and the function 43
44 @code{eval-after-load} have been removed. 44 @item
45 45 The macros @code{when} and @code{unless} have been deleted.
46 @item 46
47 The function @code{autoload} no longer supports autoloading a keymap. 47 @item
48 48 The functions @code{caar}, @code{cadr}, @code{cdar} and @code{cddr}
49 @item 49 no longer exist.
50 ``Magic'' comments of the form @samp{;;;###autoload} are now just 50
51 comments. They don't do anything in particular except look pretty. 51 @item
52 If you want a function to be autoloaded by default, edit @file{loaddefs.h} 52 The function @code{functionp} is now gone. If you don't know
53 by hand. What do you think editors are for? 53 by now whether something is a function, Emacs can't tell you.
54 54 @end itemize
55 @item 55
56 We took out the @samp{%S} from the @code{format} function, and the 56 Here are changes in handling strings and text.
57 optional argument @var{noescap} from @code{prin1-to-string}. We removed 57
58 the @code{print-level} variable. 58 @itemize @bullet
59 @end itemize 59 @item
60 60 The function @code{substring} works only on strings, not on vectors.
61 @section Compilation Features 61
62 62 @item
63 @itemize @bullet 63 There are no more character categories.
64 @item 64
65 Inline functions are nonexistent in Emacs 18. We find they make the 65 @item
66 calling function unnecessarily large. (Small size is one of the 66 When you compare strings with @code{equal}, it now compares
67 features of Emacs 18.) 67 their string properties as well as their text. All must match,
68 68 or the strings are not equal.
69 @item 69
70 We eliminated the two special forms, @code{eval-when-compile} and 70 @item
71 @code{eval-and-compile}, as well as the @code{compile-defun} command. 71 @code{format-time-string} no longer supports specified field width
72 72 or specified padding.
73 @item 73
74 When you load a Lisp file or library, you will no longer receive a 74 @item
75 warning if the directory contains both a @samp{.elc} file and a new 75 The functions @code{split-string} and @code{concat-chars} no longer exist.
76 @samp{.el} file that is newer. So be on your toes. 76 Neither does @code{store-substring} or @code{sref}.
77 77
78 @item 78 @item
79 We removed the special data type for byte-code functions. Compiled 79 All printing characters have the same width. Therefore, we have deleted
80 functions now work by means of an interpreted function which calls 80 @code{char-width}, @code{string-width} and
81 the function @code{bytecode}. That function runs the byte code 81 @code{truncate-string-to-width}.
82 interpreter. 82
83 @end itemize 83 @item
84 84 We have eliminated the functions @code{next-char-property-change} and
85 @section Floating Point Numbers 85 @code{previous-char-property-change} also.
86 86
87 Emacs 18 doesn't have or need floating point arithmetic built in. 87 @item
88 It has a handy Lisp program that allows you to emulate floating point. 88 Syntax parsing now determines the syntax of each character from the
89 You'll have to write programs specially to use it, though. 89 syntax table alone---not from text properties. This makes the syntax
90 90 codes @samp{|} and @samp{!}, which were meant for use with text
91 As a result, certain macros, functions, and predicates no longer handle 91 properties, useless; so we have deleted them.
92 specifications for floating point numbers. 92
93 93 @item
94 @itemize @bullet 94 In the function @code{parse-partial-sexp}, passing @code{syntax-table}
95 @item 95 as the sixth argument @var{commentstop} no longer has any special meaning.
96 The function @code{string-to-number}, the predicate @code{floatp}, and 96 And the return value has only eight elements.
97 the variable @code{float-output-format} have all been eliminated. 97 @end itemize
98 98
99 @item 99 Here are changes in other areas of Emacs Lisp:
100 The functions @code{float}, @code{truncate}, @code{floor}, @code{ceil}, 100
101 @code{round}, and @code{logb} do not exist; neither do the functions 101 @itemize @bullet
102 @code{abs}, @code{cos}, @code{sin}, @code{tan}, @code{acos}, 102 @item
103 @code{asin}, @code{atan}, @code{exp}, @code{expt}, @code{log10}, 103 The macros @code{save-current-buffer}, @code{with-current-buffer},
104 @code{log}, or @code{sqrt}. 104 @code{with-temp-buffer}, @code{with-temp-file}, @code{save-selected-window},
105 105 and @code{with-output-to-string} are gone.
106 @item 106
107 The @code{format} function no longer handles the specifications 107 @item
108 @samp{%e}, @samp{%f} and @samp{%g} for printing floating point numbers; 108 The easy-mmode facility for defining minor modes is gone too.
109 likewise for @code{message}. 109
110 @end itemize 110 @item
111 111 Process filters and sentinels must explicitly save the match data, with
112 @section Changes in Basic Editing Functions 112 @code{save-match-data}, or they will clobber the match data and
113 113 something horrible will happen.
114 @itemize @bullet 114
115 @item 115 @item
116 @code{kill-new} and @code{kill-append}, the primitives for putting text 116 As part of our effort to loosen up, @code{batch-byte-compile-file} no
117 in the kill ring, have been eliminated. 117 longer returns a nonzero status code if there is a compilation error.
118 @c @code{kill-append} seems to exist as a non-documented (no doc string) 118
119 @c primitive in emacs 18. but news.texi said it was new for 19. 119 @item
120 120 The ``mail user agent'' feature is gone.
121 @item 121
122 The variables @code{interprogram-paste-function} and 122 @item
123 @code{interprogram-cut-function} have been removed in Emacs 18. 123 We have removed the functions @code{add-to-invisibility-spec} and
124 124 @code{remove-from-invisibility-spec}, so you should manipulate
125 In addition, there's no need for @code{mark-active} and 125 the value of @code{buffer-invisibility-spec} by hand.
126 @code{deactivate-mark} because there is no Transient Mark mode. We also 126
127 removed the hooks @code{activate-mark-hook} and 127 @item
128 @code{deactivate-mark-hook}. 128 The functions @code{face-documentation}, @code{face-bold-p},
129 129 @code{face-italic-p}, @code{set-face-bold-p}, @code{set-face-italic-p}
130 @item 130 are gone. Instead, use @code{make-face-bold} and friends.
131 The @code{kill-region} function can no longer be used in read-only 131
132 buffers. The @code{compare-buffer-substrings} and @code{current-kill} 132 @item
133 functions have been removed. 133 All the functions that operate on a file now discard an extra redundant
134 134 directory name from the beginning of the file name---just like
135 @item 135 @code{substitute-in-file-name}.
136 The variable @code{overwrite-mode-binary} has been removed. 136
137 137 @item
138 @item 138 We have got rid of the function @code{access-file}.
139 The function @code{move-to-column} allows just one argument, 139
140 @var{column}. 140 @item
141 141 Most of the minibuffer input functions, no longer take a default value as
142 @item 142 an argument. Also, they do not discard text properties from the result.
143 The search functions now just return @code{t} when successful. This 143 This means that if you insert text with text properties into the minibuffer,
144 affects the functions @code{search-forward}, @code{search-backward}, 144 the minibuffer value really will contain text properties.
145 @code{word-search-forward}, @code{word-search-backward}, 145
146 @code{re-search-forward}, and @code{re-search-backward}. 146 @item
147 147 You can still bind @code{x-resource-class} around a call to
148 @item 148 @code{x-get-resource}, but it won't do anything special.
149 When you do regular expression searching or matching, there is a fixed 149
150 limit of ten @samp{\(@dots{}\)} pairs that you can get information about 150 @item
151 with @code{match-beginning} and @code{match-end}. Moreover, 151 Wave goodbye to the hooks @code{before-make-frame-hook},
152 @code{save-match-data} does not exist; you must use an explicit 152 @code{after-make-frame-functions}, and
153 @code{unwind-protect} to save the match data. 153 @code{window-configuration-change-hook},
154 154
155 @item 155 @item
156 @code{translate-region} is gone. 156 The functions and variables that deal with MS Windows NT/95
157 157 have been renamed to start with @samp{win32-} instead of @samp{w32-}.
158 @item 158 This is because we admire Microsoft more each day as we go back
159 The variables @code{before-change-function}, 159 into the past.
160 @code{after-change-function}, and @code{first-change-hook} have been 160 @end itemize
161 eliminated. 161
162 162 @section Onward into the Past!
163 @item 163
164 The second argument to @code{insert-abbrev-table-description} is no 164 Here we go even further back, as far as Emacs 19.29, for which the
165 longer optional. 165 previous printed edition of the Emacs Lisp manual was made.
166 @end itemize 166
167 167 @itemize @bullet
168 @section Text Properties 168 @item
169 169 There are no char-tables or bool-vectors. Syntax tables, display
170 We eliminated text properties. 170 tables, and case tables are all vectors now, and the value of
171 171 @code{keyboard-translate-table} should be a vector or a string.
172 @section Features for Files 172
173 173 @item
174 Many file-related functions have been eliminated or simplified. Here is 174 There is only one kind of marker. When you insert text at the place
175 a basic listing of these functions. 175 where a marker points, the marker always ends up before that text,
176 176 unless you use @code{insert-before-markers}, which puts all the markers
177 @itemize @bullet 177 after the inserted text.
178 @item 178
179 The functions @code{file-accessible-directory-p}, @code{file-truename}, 179 @item
180 @code{make-directory}, @code{delete-directory}, 180 There is no function @code{overlays-in}.
181 @code{set-visited-file-modtime}, @code{directory-abbrev-alist}, 181
182 @code{abbreviate-file-name}, @code{write-region}, 182 @item
183 @code{write-contents-hooks}, @code{after-save-hook}, 183 The variable @code{print-length} applies only to lists, not to
184 @code{set-default-file-modes}, @code{default-file-modes}, and 184 vectors or strings.
185 @code{unix-sync} have been eliminated. 185
186 186 @item
187 @item 187 The function @code{convert-standard-filename} no longer exists, so each
188 We got rid of the ``initial file name'' argument to 188 Lisp package must independently figure out which file names to use for
189 @code{read-file-name}. 189 its initialization files on each kind of operating system.
190 190
191 @item 191 @item
192 Additionally, we removed the 12th element from the list returned by 192 The macro @code{with-timeout} has been eliminated, along with the
193 @code{file-attributes}. 193 function @code{y-or-n-p-with-timeout}. Idle timers don't exist at all;
194 194 instead, maybe you can use @code{post-command-idle-hook} to do some of
195 @item 195 the same job.
196 @code{directory-files} always sorts the list of files. It's not user 196
197 friendly to process the files in any haphazard order. 197 @item
198 198 The functions @code{keymap-parent} and @code{set-keymap-parent} are
199 @item 199 gone. We expect keymaps to recognize their own parents.
200 We eliminated the variables @code{write-contents-hooks} and 200
201 @code{local-write-file-hooks}. 201 @item
202 @end itemize 202 When you delete text and then undo a deletion, markers that were
203 203 originally inside the deleted text end up either at the beginning
204 @section Making Certain File Names ``Magic'' 204 or the end of it---not back in their original places.
205 205
206 There are no more magic filenames. Sorry, but all the mana has been 206 @item
207 used up. 207 The interactive specification @samp{N} is gone now.
208 208
209 @section Frames 209 @item
210 210 There is no more @code{safe-length}. Don't try to be so safe! Did you
211 There is only one frame in Emacs 18, so all of the frame functions have 211 expect to live forever?
212 been eliminated. 212
213 213 @item
214 @section X Window System Features 214 We got rid of @code{insert-file-contents-literally}, because
215 215 programmers are too literal-minded anyway.
216 We have simplified the way Emacs and X interact by removing a great deal 216
217 of creeping featurism. 217 @item
218 218 As part of our continuing effort to help Lisp programmers to relax, we
219 @itemize @bullet 219 threw out the function @code{error-message-string}. Don't worry so much
220 @item 220 about errors! We all make mistakes.
221 The functions @code{mouse-position} and @code{set-mouse-position}, and 221
222 the special form @code{track-mouse}, have been eliminated. 222 @item
223 223 The keymap @code{special-event-map} is gone, because Emacs has no more
224 @item 224 special events. If you want to hold a party in Emacs, please let us
225 Likewise, the functions @code{x-set-selection}, @code{x-set-cut-buffer}, 225 know.
226 @code{x-close-current-connection}, and @code{x-open-connection} have all 226
227 been removed from Emacs Lisp 18. 227 @item
228 228 You can't do date arithmentic with @code{encode-time} any more.
229 @item 229
230 We removed a series of functions that gave information about the X 230 @item
231 server and the screen you were using; after all, the whole point of X is 231 The functions @code{command-execute} and @code{call-interactively} no
232 that all servers are equivalent. The names of the removed functions 232 longer accept the optional argument @var{keys}.
233 are: @code{x-display-screens}, @code{x-server-version}, 233
234 @code{x-server-vendor}, @code{x-display-pixel-height}, 234 @item
235 @code{x-display-mm-height}, @code{x-display-pixel-width}, 235 @code{get-buffer-window-list} is gone as well.
236 @code{x-display-mm-width}, @code{x-display-backing-store}, 236
237 @code{x-display-save-under}, @code{x-display-planes}, 237 @item
238 @code{x-display-visual-class}, @code{x-display-color-p}, and 238 With the function @code{replace-match}, you can only replace the whole
239 @code{x-display-color-cells}. 239 match, not a subexpression of it.
240 240
241 @item 241 @item
242 Additionally, we removed the variable @code{x-no-window-manager} and the 242 We eliminated the hooks @code{buffer-access-fontify-functions},
243 functions @code{x-synchronize} and @code{x-get-resource}. 243 @code{window-scroll-functions}, and @code{redisplay-end-trigger-functions}.
244 244 @end itemize
245 @item
246 We didn't abolish @code{x-display-color-p}, but we renamed it to
247 @code{x-color-display-p}. We did abolish @code{x-color-defined-p}.
248
249 @item
250 @code{x-popup-menu} no longer accepts a keymap for its first argument.
251
252 @item
253 We removed both the function @code{x-rebind-key} and the related
254 function @code{x-rebind-keys}.
255
256 @item
257 We abolished @code{x-parse-geometry}.
258 @end itemize
259
260 @section Window Actions that Were No Longer Useful
261
262 Various behaviors of windows in Emacs 19 were obsolete by the time Emacs
263 18 was due to come out. We have removed them. These changes are listed
264 below.
265
266 @itemize @bullet
267 @item
268 We removed the functions @code{window-at}, @code{window-minibuffer-p},
269 @code{set-window-dedicated-p}, @code{coordinates-in-window-p},
270 @code{walk-windows}, @code{window-dedicated-p}, and @code{window-end}.
271
272 @item
273 We removed the variables @code{pop-up-frames},
274 @code{pop-up-frame-function}, @code{display-buffer-function}, and
275 @code{other-window-scroll-buffer}.
276
277 @item
278 The function @code{minibuffer-window} no longer accepts a frame as
279 argument, since frames as objects do not exist in Emacs version 18. It
280 returns the window used for minibuffers.
281
282 @item
283 The functions @code{next-window} and @code{previous-window} no longer
284 accept the @var{all-frames} argument since there is just one frame.
285
286 @item
287 The functions @code{get-lru-window}, @code{get-largest-window},
288 @code{get-buffer-window}, and @code{get-buffer-window} also no longer
289 take the optional argument @var{all-frames} because there is just one
290 frame to search.
291 @end itemize
292
293 @section Display Features
294
295 @itemize @bullet
296 @item
297 There are no overlays, and no faces.
298
299 @item
300 We eliminated the mode line spec @samp{%l} that in later versions used
301 to display the current line number. We removed the variables
302 @code{line-number-mode} and @code{line-number-display-limit}.
303
304 @item
305 @code{baud-rate} is now a function rather than a variable.
306
307 @item
308 You can no longer call @code{message} with @code{nil} as the only
309 argument; therefore, you can not reliably make the contents of the
310 minibuffer visible.
311
312 @item
313 The variable @code{temp-buffer-show-function} has been renamed
314 @code{temp-buffer-show-hook}.
315
316 @item
317 We removed the function @code{force-mode-line-update}. Use
318 the following idiom instead:
319
320 @example
321 (set-buffer-modified-p (buffer-modified-p))
322 @end example
323
324 @item
325 Display tables no longer exist. We know what the @sc{ASCII} characters
326 should look like, and we made them look that way.
327 @end itemize
328
329 @section Working with Input Events
330
331 The big news about input events is that we got rid of function key
332 and mouse events. Now the only input events are characters.
333 What's more, these characters now have to be in the range of 0 to 127,
334 optionally with a meta bit. This makes for big simplifications.
335
336 @itemize @bullet
337 @item
338 Functions like @code{define-key}, @code{global-set-key},
339 @code{read-key-sequence}, and @code{local-set-key} used to accept
340 strings or vectors in Emacs 19; now they only accept strings.
341
342 @item
343 The documentation functions (@code{single-key-description},
344 @code{key-description}, etc.) also no longer accept vectors, but they do
345 accept strings.
346
347 @item
348 We removed the @code{read-event}, @code{event-start},
349 @code{posn-window}, @code{posn-point}, @code{posn-col-row},
350 @code{posn-timestamp}, @code{scroll-bar-scale}, and @code{event-end}
351 functions, since they were useful only for non-character events.
352
353 @item
354 We removed the @code{unread-command-events} and @code{last-event-frame}
355 variables.
356
357 @item
358 The functions @code{this-command-keys} and @code{recent-keys} now always
359 return a string. Likewise, a keyboard macro's definition can only be a
360 string, not a vector.
361
362 @item
363 We eliminated @samp{e} as an interactive specification since it
364 was useful only with non-character events.
365
366 @item
367 In Emacs 18, we represent Meta characters as character objects with the
368 same encoding used in strings: 128 plus the corresponding non-Meta
369 @sc{ASCII} character.
370 @end itemize
371
372 @section Menus
373
374 @itemize @bullet
375 @item
376 You can no longer define menus as keymaps; good system design requires
377 crafting a special-purpose interface for each facility, so it can
378 precisely fit the requirements of that facility. We decided that
379 unifying keymaps and menus was simply too much of a strain.
380
381 @item
382 In Emacs 18, you can activate menus only with the mouse. Using them
383 with a keyboard was too confusing for too many users.
384
385 @item
386 Emacs 18 has no menu bars. All functions and variables related to the
387 menu bar have been eliminated.
388 @end itemize
389
390 @section Changes in Minibuffer Features
391
392 @itemize @bullet
393 @item
394 The minibuffer history feature has been eliminated. Thus, we removed
395 the optional argument @var{hist} from the minibuffer input functions
396 @code{read-from-minibuffer} and @code{completing-read}.
397
398 @item
399 The @var{initial} argument to @code{read-from-minibuffer} and other
400 minibuffer input functions can no longer be a cons cell
401 @code{(@var{string} . @var{position})}.
402
403 @item
404 In the function @code{read-no-blanks-input}, the @var{initial} argument
405 is no longer optional.
406 @end itemize
407
408 @section New Features for Defining Commands
409
410 @itemize @bullet
411 @item
412 The special meaning of @samp{@@} in an interactive specification has
413 been eliminated.
414
415 @item
416 Emacs 18 does not support use of format-style @samp{%}-sequences in the
417 prompt strings in interactive specifications.
418
419 @item
420 The property @code{enable-recursive-minibuffers} no longer has any
421 special meaning.
422 @end itemize
423
424 @section Removed Features for Reading Input
425
426 @itemize @bullet
427 @item
428 We removed the third argument (@var{meta}) from the function
429 @code{set-input-mode}. Consequently, we added the variable
430 @code{meta-flag}; set it to @code{t} to enable use of a Meta key, and
431 to @code{nil} to disable it. (Those are the only two alternatives.)
432
433 @item
434 We also removed the variable @code{extra-keyboard-modifiers}.
435
436 @item
437 We removed the function @code{keyboard-translate} and the variables
438 @code{num-input-keys} and @code{function-key-map}.
439 @end itemize
440
441 @section Removed Syntax Table Features
442
443 @itemize @bullet
444 @item
445 We eliminated the functions @code{skip-syntax-forward},
446 @code{skip-syntax-backward}, @code{forward-comment}.
447
448 @item
449 We removed the syntax flag for ``prefix syntax'' and the flag for the
450 alternate comment style. Emacs 18 supports only one style of comment
451 in any given syntax table.
452
453 @item
454 We abolished the variable @code{words-include-escapes}.
455 @end itemize
456
457 @section The Case Table
458
459 @itemize @bullet
460 @item
461 Case tables do not exist in Emacs 18. Due to this change, we have
462 removed the associated functions @code{set-standard-case-table},
463 @code{standard-case-table}, @code{current-case-table},
464 @code{set-case-table}, and @code{set-case-syntax-pair}.
465 @end itemize
466
467 @section Features for Dealing with Buffers
468
469 @itemize @bullet
470 @item
471 We eliminated several functions for dealing with buffers:
472 @code{buffer-modified-tick} and @code{generate-new-buffer-name}.
473
474 @item
475 We renamed @code{buffer-disable-undo} to @code{buffer-flush-undo}---a
476 more picturesque name, you will agree.
477
478 @item
479 The function @code{other-buffer} takes just one argument in Emacs 18.
480
481 @item
482 The function @code{rename-buffer} now requires you to specify precisely
483 the new name you want.
484
485 @item
486 We removed the local variable @code{list-buffers-directory}.
487
488 @item
489 We got rid of the hook @code{kill-buffer-hook}.
490 @end itemize
491
492 @section Local Variables Features
493
494 @itemize @bullet
495 @item
496 The function @code{kill-all-local-variables} always eliminates all
497 buffer-local variables of the current buffer. No more exceptions.
498
499 @item
500 Making a variable buffer-local when it is void now sets it to
501 @code{nil}.
502
503 @item
504 We eliminated the functions @code{default-boundp}, because it is no
505 longer possible for the default binding of a variable to be void.
506
507 @item
508 The special forms @code{defconst} and @code{defvar} now set the
509 variable's local value rather than its default value when the variable
510 is local in the current buffer.
511 @end itemize
512
513 @section Features for Subprocesses
514
515 @itemize @bullet
516 @item
517 @code{call-process} and @code{call-process-region} no longer indicate
518 the termination status of the subprocess. We call on users to have faith
519 that the subprocess executed properly.
520
521 @item
522 The standard asynchronous subprocess features do not work on VMS;
523 instead, special VMS asynchronous subprocess functions have been added.
524 Since they are only for VMS, we can't be bothered documenting them;
525 sorry. Use the source, Luke!
526
527 @item
528 The function @code{signal-process} has been removed.
529
530 @item
531 We eliminated the transaction queue feature, and the associated
532 functions @code{tq-create}, @code{tq-enqueue}, and @code{tq-close}.
533 @end itemize
534
535 @section Dealing with Times And Time Delays
536
537 @itemize @bullet
538 @item
539 We removed the functions @code{current-time}, @code{current-time-zone},
540 @code{run-at-time}, and @code{cancel-timer}.
541
542 @item
543 The function @code{current-time-string} no longer accepts any optional
544 arguments.
545
546 @item
547 The functions @code{sit-for} and @code{sleep-for} no longer allow an
548 optional argument to let you specify the time period in milliseconds;
549 just in seconds. Additionally, we took out the optional third argument
550 @var{nodisp} from @code{sit-for}.
551
552 @item
553 We removed the optional second and third arguments from the
554 @code{accept-process-output} function. It accepts just one argument,
555 the process.
556 @end itemize
557
558 @need 3000
559
560 @section Features not Available for Lisp Debuggers
561
562 @itemize @bullet
563 @item
564 In Emacs 18, you can no longer specify to invoke the Lisp debugger only
565 upon encountering certain types of errors. Any non-@code{nil} value for
566 the variable @code{debug-on-error} says to invoke the debugger for any
567 error whatever.
568
569 @item
570 We removed the variable @code{command-debug-status} and the function
571 @code{backtrace-frame}.
572 @end itemize
573
574 @section Memory Allocation Changes
575
576 @itemize @bullet
577 @item
578 We removed the function @code{memory-limit}.
579
580 @item
581 The list returned by @code{garbage-collect} no longer contains an
582 element to describe floating point numbers, since there aren't any
583 floating point numbers in Emacs 18.
584 @end itemize
585
586 @section Hook Changes
587
588 @itemize @bullet
589 @item
590 We removed the hooks @code{pre-abbrev-expand-hook},
591 @code{pre-command-hook}, @code{post-command-hook}, and
592 @code{auto-save-hook}.
593
594 @item
595 We removed the variable
596 @code{revert-buffer-insert-file-contents-function}.
597
598 @item
599 We also removed the new function @code{add-hook}; you will have to set
600 your hooks by hand. If you want to get really into the swing of things,
601 set your hook variables the archaic way: store just one function rather
602 than a list of functions. But that is optional.
603
604 @item
605 The variable @code{lisp-indent-hook} has been renamed to
606 @code{lisp-indent-function}.
607
608 @item
609 The variable @code{auto-fill-function} has been renamed to
610 @code{auto-fill-hook}.
611
612 @item
613 The @code{blink-paren-function} has been renamed to
614 @code{blink-paren-hook}.
615
616 @item
617 The variable @code{temp-buffer-show-function} has been renamed to
618 @code{temp-buffer-show-hook}.
619 @end itemize