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