Mercurial > emacs
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 |