]> code.delx.au - gnu-emacs/blob - lispref/anti.texi
*** empty log message ***
[gnu-emacs] / lispref / anti.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1998 Free Software Foundation, Inc.
4 @c See the file elisp.texi for copying conditions.
5 @node Antinews, Index, Standard Hooks, Top
6 @appendix Emacs 19 Antinews
7
8 For those users who live backwards in time, here is information about
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. In
11 the following section, we carry this information back as far as Emacs
12 19.29, for which the previous printed edition of this manual was made.
13
14 @section Old Lisp Features in Emacs 19
15
16 Here are the most important of the features that you will learn
17 to do without in Emacs 19:
18
19 @itemize @bullet
20 @item
21 In a great simplification, Emacs 19 supports ASCII characters only.
22 There are no multibyte characters, character sets, language
23 environments, coding systems, or input methods; all the functions that
24 specifically relate to them are gone as well.
25
26 Valid character codes for text must be in the range 0 through 255.
27 Within this range, there are no invalid character codes.
28
29 @item
30 The Custom facility has been replaced with a much simpler and more
31 general method of defining user option variables. Instead of
32 @code{defcustom}, which requires you to specify each user option's
33 data type and classify them into groups, all you have to do is write
34 a @code{defvar} and start the documentation string with @samp{*}.
35 @end itemize
36
37 Here are changes in the Lisp language itself:
38
39 @itemize @bullet
40 @item
41 Symbols whose names start with @samp{:} are no longer special
42 in any way. They start out void, like most other symbols.
43
44 @item
45 The macros @code{when} and @code{unless} have been deleted.
46
47 @item
48 The functions @code{caar}, @code{cadr}, @code{cdar} and @code{cddr}
49 no longer exist.
50
51 @item
52 The function @code{functionp} is now gone. If you don't know
53 by now whether something is a function, Emacs can't tell you.
54 @end itemize
55
56 Here are changes in handling strings and text.
57
58 @itemize @bullet
59 @item
60 The function @code{substring} works only on strings, not on vectors.
61
62 @item
63 There are no more character categories.
64
65 @item
66 When you compare strings with @code{equal}, it now compares
67 their string properties as well as their text. All must match,
68 or the strings are not equal.
69
70 @item
71 @code{format-time-string} no longer supports specified field width
72 or specified padding.
73
74 @item
75 The functions @code{split-string} and @code{concat-chars} no longer exist.
76 Neither does @code{store-substring} or @code{sref}.
77
78 @item
79 All printing characters have the same width. Therefore, we have deleted
80 @code{char-width}, @code{string-width} and
81 @code{truncate-string-to-width}.
82
83 @item
84 We have eliminated the functions @code{next-char-property-change} and
85 @code{previous-char-property-change} also.
86
87 @item
88 Syntax parsing now determines the syntax of each character from the
89 syntax table alone---not from text properties. This makes the syntax
90 codes @samp{|} and @samp{!}, which were meant for use with text
91 properties, useless; so we have deleted them.
92
93 @item
94 In the function @code{parse-partial-sexp}, passing @code{syntax-table}
95 as the sixth argument @var{commentstop} no longer has any special meaning.
96 And the return value has only eight elements.
97 @end itemize
98
99 Here are changes in other areas of Emacs Lisp:
100
101 @itemize @bullet
102 @item
103 The macros @code{save-current-buffer}, @code{with-current-buffer},
104 @code{with-temp-buffer}, @code{with-temp-file}, @code{save-selected-window},
105 and @code{with-output-to-string} are gone.
106
107 @item
108 The easy-mmode facility for defining minor modes is gone too.
109
110 @item
111 Process filters and sentinels must explicitly save the match data, with
112 @code{save-match-data}, or they will clobber the match data and
113 something horrible will happen.
114
115 @item
116 As part of our effort to loosen up, @code{batch-byte-compile-file} no
117 longer returns a nonzero status code if there is a compilation error.
118
119 @item
120 The ``mail user agent'' feature is gone.
121
122 @item
123 We have removed the functions @code{add-to-invisibility-spec} and
124 @code{remove-from-invisibility-spec}, so you should manipulate
125 the value of @code{buffer-invisibility-spec} by hand.
126
127 @item
128 The functions @code{face-documentation}, @code{face-bold-p},
129 @code{face-italic-p}, @code{set-face-bold-p}, @code{set-face-italic-p}
130 are gone. Instead, use @code{make-face-bold} and friends.
131
132 @item
133 All the functions that operate on a file now discard an extra redundant
134 directory name from the beginning of the file name---just like
135 @code{substitute-in-file-name}.
136
137 @item
138 We have got rid of the function @code{access-file}.
139
140 @item
141 Most of the minibuffer input functions, no longer take a default value as
142 an argument. Also, they do not discard text properties from the result.
143 This means that if you insert text with text properties into the minibuffer,
144 the minibuffer value really will contain text properties.
145
146 @item
147 You can still bind @code{x-resource-class} around a call to
148 @code{x-get-resource}, but it won't do anything special.
149
150 @item
151 Wave goodbye to the hooks @code{before-make-frame-hook},
152 @code{after-make-frame-functions}, and
153 @code{window-configuration-change-hook},
154
155 @item
156 The functions and variables that deal with MS Windows NT/95
157 have been renamed to start with @samp{win32-} instead of @samp{w32-}.
158 This is because we admire Microsoft more each day as we go back
159 into the past.
160 @end itemize
161
162 @section Onward into the Past!
163
164 Here we go even further back, as far as Emacs 19.29, for which the
165 previous printed edition of the Emacs Lisp manual was made.
166
167 @itemize @bullet
168 @item
169 There are no char-tables or bool-vectors. Syntax tables, display
170 tables, and case tables are all vectors now, and the value of
171 @code{keyboard-translate-table} should be a vector or a string.
172
173 @item
174 There is only one kind of marker. When you insert text at the place
175 where a marker points, the marker always ends up before that text,
176 unless you use @code{insert-before-markers}, which puts all the markers
177 after the inserted text.
178
179 @item
180 There is no function @code{overlays-in}.
181
182 @item
183 The variable @code{print-length} applies only to lists, not to
184 vectors or strings.
185
186 @item
187 The function @code{convert-standard-filename} no longer exists, so each
188 Lisp package must independently figure out which file names to use for
189 its initialization files on each kind of operating system.
190
191 @item
192 The macro @code{with-timeout} has been eliminated, along with the
193 function @code{y-or-n-p-with-timeout}. Idle timers don't exist at all;
194 instead, maybe you can use @code{post-command-idle-hook} to do some of
195 the same job.
196
197 @item
198 The functions @code{keymap-parent} and @code{set-keymap-parent} are
199 gone. We expect keymaps to recognize their own parents.
200
201 @item
202 When you delete text and then undo a deletion, markers that were
203 originally inside the deleted text end up either at the beginning
204 or the end of it---not back in their original places.
205
206 @item
207 The interactive specification @samp{N} is gone now.
208
209 @item
210 There is no more @code{safe-length}. Don't try to be so safe! Did you
211 expect to live forever?
212
213 @item
214 We got rid of @code{insert-file-contents-literally}, because
215 programmers are too literal-minded anyway.
216
217 @item
218 As part of our continuing effort to help Lisp programmers to relax, we
219 threw out the function @code{error-message-string}. Don't worry so much
220 about errors! We all make mistakes.
221
222 @item
223 The keymap @code{special-event-map} is gone, because Emacs has no more
224 special events. If you want to hold a party in Emacs, please let us
225 know.
226
227 @item
228 You can't do date arithmentic with @code{encode-time} any more.
229
230 @item
231 The functions @code{command-execute} and @code{call-interactively} no
232 longer accept the optional argument @var{keys}.
233
234 @item
235 @code{get-buffer-window-list} is gone as well.
236
237 @item
238 With the function @code{replace-match}, you can only replace the whole
239 match, not a subexpression of it.
240
241 @item
242 We eliminated the hooks @code{buffer-access-fontify-functions},
243 @code{window-scroll-functions}, and @code{redisplay-end-trigger-functions}.
244 @end itemize