Merged from miles@gnu.org--gnu-2005 (patch 67, 270-278)
[emacs.git] / lispref / anti.texi
blob458409f26035ee64c201e9fa28ee6f21f6977175
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1999, 2005 Free Software Foundation, Inc.
4 @c See the file elisp.texi for copying conditions.
6 @c This node must have no pointers.
8 @node Antinews, GNU Free Documentation License, System Interface, Top
9 @appendix Emacs 21 Antinews
11 For those users who live backwards in time, here is information about
12 downgrading to Emacs version 21.4.  We hope you will enjoy the greater
13 simplicity that results from the absence of many Emacs 22 features.
15 @section Old Lisp Features in Emacs 21
17 @itemize @bullet
18 @item
19 Many unnecessary features of redisplay have been eliminated.  (The
20 earlier major release, Emacs 20, will have a completely rewritten
21 redisplay engine, which will be even simpler.)
23 @itemize @minus
24 @item
25 The function @code{force-window-update} has been removed.  It
26 shouldn't be needed, since changes in window contents are detected
27 automatically.  In case they aren't, call @code{redraw-display} to
28 redraw everything.
30 @item
31 Point no longer moves out from underneath invisible text at the end of
32 each command.  This allows the user to detect invisible text by moving
33 the cursor around---if the cursor gets stuck, there is something
34 invisible in the way.  If you really want cursor motion to ignore the
35 text, try marking it as intangible.
37 @item
38 Support for image maps and image slices has been removed.  Emacs was
39 always meant for editing text, anyway.
41 @item
42 The mode line now accepts all text properties, as well as
43 @code{:propertize} and @code{:eval} forms, regardless of the
44 @code{risky-local-variable} property.
46 @item
47 The @code{line-height} and @code{line-spacing} properties no longer
48 have any meaning for newline characters.  Such properties wouldn't
49 make sense, since newlines are not really characters; they just tell
50 you where to break a line.
52 @item
53 Considerable simplifications have been made to the display
54 specification @code{(space . @var{props})}, which is used for
55 displaying a space of specified width and height.  Pixel-based
56 specifications and Lisp expressions are no longer accepted.
58 @item
59 Many features associated with the fringe areas have been removed, to
60 encourage people to concentrate on the main editing area (the fringe
61 will be completely removed in Emacs 20.)  Arbitrary bitmaps can no
62 longer be displayed in the fringe; an overlay arrow can still be
63 displayed, but there can only be one overlay arrow at a time (any more
64 would be confusing.)  The fringe widths cannot be adjusted, and
65 individual windows cannot have their own fringe settings.  A mouse
66 click on the fringe no longer generates a special event.
68 @item
69 Individual windows cannot have their own scroll-bar settings.
71 @item
72 You can no longer use @samp{default} in a @code{defface} to specify
73 defaults for subsequent faces.
75 @item
76 The function @code{display-supports-face-attributes-p} has been
77 removed.  In @code{defface} specifications, the @code{supports}
78 predicate is no longer supported.
80 @item
81 @code{face-attribute-relative-p} and @code{merge-face-attribute} have
82 been removed.
84 @item
85 The priority of faces in a list supplied by the @code{:inherit} face
86 attribute has been reversed.  We like to make changes like this once
87 in a while, to keep Emacs Lisp programmers on their toes.
89 @item
90 The @code{min-colors} face attribute, used for tailoring faces to
91 limited-color displays, does not exist.  If in doubt, use colors like
92 ``white'' and ``black'', which ought to be defined everywhere.
94 @item
95 The @code{tty-color-mode} frame parameter does not exist.  You should
96 just trust the terminal capabilities database.
97 @end itemize
99 @item
100 Several simplifications have been made to mouse support:
102 @itemize @minus
103 @item
104 Clicking @kbd{mouse-1} won't follow links, as that is alien to the
105 spirit of Emacs.  Therefore, the @code{follow-link} property doesn't
106 has any special meaning, and the function @code{mouse-on-link-p} has
107 been removed.
109 @item
110 The variable @code{void-text-area-pointer} has been removed, so the
111 mouse pointer shape remains unchanged when moving between valid text
112 areas and void text areas.  The @code{pointer} image and text
113 properties are no longer supported.
115 @item
116 Mouse events will no longer specify the timestamp, the object clicked,
117 equivalent buffer positions (for marginal or fringe areas), glyph
118 coordinates, or relative pixel coordinates.
119 @end itemize
121 @item
122 Simplifications have also been made to the way Emacs handles keymaps
123 and key sequences:
125 @itemize @minus
126 @item
127 The @code{kbd} macro has been removed.  It isn't that difficult to
128 write key sequences using the string and vector representations, and
129 we want to encourage users to learn.
131 @item
132 Emacs no longer supports key remapping.  You can do pretty much the
133 same thing with @code{substitute-key-definition}, or by advising the
134 relevant command.
136 @item
137 The @code{keymap} text and overlay property is now overridden by minor
138 mode keymaps, and will not work at the ends of text properties and
139 overlays.
141 @item
142 The functions @code{map-keymap}, @code{keymap-prompt}, and
143 @code{current-active-maps} have been removed.
144 @end itemize
146 @item
147 Process support has been pared down to a functional minimum.  The
148 functions @code{call-process-shell-command} and @code{process-file}
149 have been deleted.  Processes no longer maintain property lists, and
150 they won't ask any questions when the user tries to exit Emacs (which
151 would simply be rude.)  The function @code{signal-process} won't
152 accept a process object, only the process id; determining the process
153 id from a process object is left as an exercise to the programmer.
155 @item
156 Networking has also been simplified: @code{make-network-process} and
157 its various associated function have all been replaced with a single
158 easy-to-use function, @code{open-network-stream}, which can't use UDP,
159 can't act as a server, and can't set up non-blocking connections.
160 Also, deleting a network process with @code{delete-process} won't call
161 the sentinel.
163 @item
164 Many programming shortcuts have been deleted, to provide you with the
165 enjoyment of ``rolling your own''.  The macros @code{while-no-input},
166 @code{with-local-quit}, @code{with-selected-window},
167 @code{dynamic-completion-table}, and @code{lazy-completion-table} no
168 longer exist.  Also, there are no built-in progress reporters.
170 @item
171 Variable aliases are no longer supported.  Aliases are for functions,
172 not for variables.
174 @item
175 The variables @code{most-positive-fixnum} and
176 @code{most-negative-fixnum} do not exist.  On 32 bit machines, the
177 most positive integer is probably 134217727, and the most negative
178 integer is probably -134217728.
180 @item
181 The functions @code{eql} and @code{macroexpand-all} are no longer
182 available.  However, you can find similar functions in the @code{cl}
183 package.
185 @item
186 The list returned by @code{split-string} won't include null substrings
187 for separators at the beginning or end of a string.  If you want to
188 check for such separators, do it separately.
190 @item
191 The function @code{assoc-string} has been removed.  Use
192 @code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
193 are no longer obsolete.)
195 @item
196 The escape sequence @samp{\s} is always interpreted as a super
197 modifier, never a space.
199 @item
200 The variable @code{buffer-save-without-query} has been removed, to
201 prevent Emacs from sneakily saving buffers.  Also, the hook
202 @code{before-save-hook} has been removed, so if you want something to
203 be done before saving, advise or redefine @code{basic-save-buffer}.
205 @item
206 The variable @code{buffer-auto-save-file-format} has been renamed to
207 @code{auto-save-file-format}, and is no longer a permanent local.
209 @item
210 The function @code{visited-file-modtime} now returns a cons, instead
211 of a list of two integers.  The primitive @code{set-file-times} has
212 been eliminated.
214 @item
215 The function @code{file-remote-p} is no longer available.
217 @item
218 When determining the filename extension, a leading dot in a filename
219 is no longer ignored.  Thus, @file{.emacs} is considered to have
220 extension @file{emacs}, rather than being extensionless.
222 @item
223 Emacs looks for special file handlers in a more efficient manner: it
224 will choose the first matching handler in
225 @code{file-name-handler-alist}, rather than trying to figure out which
226 provides the closest match.
228 @item
229 The @code{predicate} argument for @code{read-file-name} has been
230 removed, and so have the variables @code{read-file-name-function} and
231 @code{read-file-name-completion-ignore-case}.  The function
232 @code{read-directory-name} has also been removed.
234 @item
235 The functions @code{all-completions} and @code{try-completion} will no
236 longer accept lists of strings or hash tables (it will still accept
237 alists, obarrays, and functions.)  In addition, the function
238 @code{test-completion} is no longer available.
240 @item
241 The @samp{G} interactive code character is no longer supported.
242 Use @samp{F} instead.
244 @item
245 Arbitrary Lisp functions can no longer be recorded into
246 @code{buffer-undo-list}.  As a consequence, @code{yank-undo-function}
247 is obsolete, and has been removed.
249 @item
250 Emacs will never complain about commands that accumulate too much undo
251 information, so you no longer have to worry about binding
252 @code{buffer-undo-list} to @code{t} for such commands (though you may
253 want to do that anyway, to avoid taking up unnecessary memory space.)
255 @item
256 Atomic change groups are no longer supported.
258 @item
259 The list returned by @code{(match-data t)} no longer records the
260 buffer as a final element.
262 @item
263 The function @code{looking-back} has been removed, so we no longer
264 have the benefit of hindsight.
266 @item
267 The variable @code{search-spaces-regexp} does not exist.  Spaces
268 always stand for themselves in regular expression searches.
270 @item
271 The functions @code{skip-chars-forward} and @code{skip-chars-backward}
272 no longer accepts character classes such as @samp{[:alpha:]}.  All
273 characters are created equal.
275 @item
276 The @code{yank-handler} text property no longer has any meaning.
277 Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
278 @code{insert-buffer-substring-as-yank} have all been removed.
280 @item
281 The variable @code{char-property-alias-alist} has been deleted.
282 Aliases are for functions, not for properties.
284 @item
285 The function @code{get-char-property-and-overlay} has been deleted.
286 If you want the properties at a point, find the text properties at the
287 point; then, find the overlays at the point, and find the properties
288 on those overlays.
290 @item
291 Font Lock mode only manages @code{face} properties; you can't use
292 font-lock keywords to specify arbitrary text properties for it to
293 manage.  After all, it is called Font Lock mode, not Arbitrary
294 Properties Lock mode.
296 @item
297 The arguments to @code{remove-overlays} are no longer optional.
299 @item
300 In @code{replace-match}, the replacement text now inherits properties
301 from the surrounding text.
303 @item
304 @code{mode-line-format} no longer supports the @code{:propertize},
305 @code{%i}, and @code{%I} constructs.  The function
306 @code{format-mode-line} has been removed.
308 @item
309 The functions @code{window-inside-edges} and @code{window-body-height}
310 have been removed.  You should do the relevant calculations yourself,
311 starting with @code{window-width} and @code{window-height}.
313 @item
314 The functions @code{window-pixel-edges} and
315 @code{window-inside-pixel-edges} have been removed.  We prefer to
316 think in terms of lines and columns, not pixel coordinates.  (Sometime
317 in the distant past, we will do away with graphical terminals
318 entirely, in favor of text terminals.)  For similar reasons, the
319 functions @code{posn-at-point}, @code{posn-at-x-y}, and
320 @code{pos-visible-in-window-p} have been removed.
322 @item
323 The macro @code{save-selected-window} only saves the selected window
324 of the selected frame, so don't try selecting windows in other frames.
326 @item
327 The function @code{minibufferp} is no longer available.
329 @item
330 The function @code{modify-all-frames-parameters} has been removed (we
331 always suspected the name was ungrammatical, anyway.)
333 @item
334 The @code{line-spacing} variable no longer accepts float values.
336 @item
337 The function @code{tool-bar-local-item-from-menu} has been deleted.
338 If you need to make an entry in the tool bar, you can still use
339 @code{tool-bar-add-item-from-menu}, but that modifies the binding in
340 the source keymap instead of copying it into the local keymap.
342 @item
343 When determining the major mode, the file name takes precedence over
344 the interpreter magic line.  The variable @code{magic-mode-alist},
345 which associates certain buffer beginnings with major modes, has been
346 eliminated.
348 @item
349 The hook @code{after-change-major-mode-hook} is not defined, and
350 neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
352 @item
353 The variable @code{minor-mode-list} has been removed.
355 @item
356 @code{define-derived-mode} will copy abbrevs from the parent mode's
357 abbrev table, instead of creating a new, empty abbrev table.
359 @item
360 There are no ``system'' abbrevs.  When the user saves into the abbrevs
361 file, all abbrevs are saved.
363 @item
364 The Warnings facility has been removed.  Just use @code{error}.
366 @item
367 Several hook variables have been renamed to flout the Emacs naming
368 conventions.  We feel that consistency is boring, and having
369 non-standard hook names encourages users to check the documentation
370 before using a hook.  For instance, the normal hook
371 @code{find-file-hook} has been renamed to @code{find-file-hooks}, and
372 the abnormal hook @code{delete-frame-functions} has been renamed to
373 @code{delete-frame-hook}.
375 @item
376 The function @code{symbol-file} does not exist.  If you want to know
377 which file defined a function or variable, try grepping for it.
379 @item
380 The variable @code{load-history} records function definitions just
381 like variable definitions, instead of indicating which functions were
382 previously autoloaded.
384 @item
385 There is a new variable, @code{recursive-load-depth-limit}, which
386 specifies how many times files can recursively load themselves; it is
387 50 by default, and nil means infinity.  Previously, Emacs signalled an
388 error after just 3 recursive loads, which was boring.
390 @item
391 Byte-compiler warnings and error messages will leave out the line and
392 character positions, in order to exercise your debugging skills.
393 Also, there is no @code{with-no-warnings} macro---instead of
394 suppressing compiler warnings, fix your code to avoid them!
396 @item
397 The function @code{unsafep} has been removed.
399 @item
400 File local variables can now specify a string with text properties.
401 Since arbitrary Lisp expressions can be embedded in text properties,
402 this can provide you with a great deal of flexibility and power.  On
403 the other hand, @code{safe-local-eval-forms} and the
404 @code{safe-local-eval-function} function property have no special
405 meaning.
407 @item
408 You can no longer use @code{char-displayable-p} to test if Emacs can
409 display a certain character.
411 @item
412 The function @code{string-to-multibyte} is no longer available.
414 @item
415 The @code{translation-table-for-input} translation table has been
416 removed.  Also, translation hash tables are no longer available, so we
417 don't need the functions @code{lookup-character} and
418 @code{lookup-integer}.
420 @item
421 The @code{table} argument to @code{translate-region} can no longer be
422 a char-table; it has to be a string.
424 @item
425 The functions @code{merge-coding-systems} and
426 @code{decode-coding-inserted-region}, and the variable
427 @code{auto-coding-functions}, have been deleted.  The
428 @code{mime-text-unsuitable} coding system property no longer has any
429 special meaning.
431 @item
432 If pure storage overflows while dumping, Emacs won't tell you how much
433 additional pure storage it needs.  Try adding in increments of 20000,
434 until you have enough.
436 @item
437 The variables @code{gc-elapsed}, @code{gcs-done}, and
438 @code{post-gc-hook} have been garbage-collected.
439 @end itemize
441 @ignore
442    arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
443 @end ignore