/[emacs]/emacs/lispref/anti.texi
ViewVC logotype

Diff of /emacs/lispref/anti.texi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.27 by lh, Fri Nov 21 18:24:52 2003 UTC revision 1.28 by rms, Thu Mar 17 23:16:11 2005 UTC
# Line 1  Line 1 
1  @c -*-texinfo-*-  @c -*-texinfo-*-
2  @c This is part of the GNU Emacs Lisp Reference Manual.  @c This is part of the GNU Emacs Lisp Reference Manual.
3  @c Copyright (C) 1999 Free Software Foundation, Inc.  @c Copyright (C) 2005 Free Software Foundation, Inc.
4  @c See the file elisp.texi for copying conditions.  @c See the file elisp.texi for copying conditions.
5    
6  @c This node must have no pointers.  @c This node must have no pointers.
7    
8  @node Antinews, GNU Free Documentation License, System Interface, Top  @node Antinews, GNU Free Documentation License, System Interface, Top
9  @appendix Emacs 20 Antinews  @appendix Emacs 21 Antinews
10    
11  For those users who live backwards in time, here is information about  For those users who live backwards in time, here is information about
12  downgrading to Emacs version 20.4.  We hope you will enjoy the greater  downgrading to Emacs version 21.4.  We hope you will enjoy the greater
13  simplicity that results from the absence of many Emacs 21 features.  In  simplicity that results from the absence of many Emacs 22 features.
 the following section, we carry this information back to Emacs  
 20.3, for which the previous printed edition of this manual was made.  
14    
15  @section Old Lisp Features in Emacs 20  @section Old Lisp Features in Emacs 21
16    
17  @itemize @bullet  @itemize @bullet
18  @item  @item
19  The @code{push} and @code{pop} macros are not defined.  Many unnecessary features of redisplay have been eliminated.  (The
20  Neither are @code{dolist} and @code{dotimes}.  earlier major release, Emacs 20, will have a completely rewritten
21    redisplay engine, which will be even simpler.)
22    
23    @itemize @minus
24  @item  @item
25  You can't display images in buffers.  (Emacs is meant for editing text.)  The function @code{force-window-update} has been removed.  It
26  With no images, there are no display margins, and no tool bars.  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.
29    
30  @item  @item
31  The @code{display} text property has no special meaning; you can use it  Point no longer moves out from underneath invisible text at the end of
32  freely in Lisp programs, with no effects except what you implement for  each command.  This allows the user to detect invisible text by moving
33  yourself.  With no images, who needs the @code{display} text property?  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.
36    
37  @item  @item
38  The @code{field} text property has no special meaning; buffers are no  Support for image maps and image slices has been removed.  Emacs was
39  longer subdivided into fields.  (The division of information into  always meant for editing text, anyway.
 fields is always rather arbitrary.)  
40    
41  @item  @item
42  Faces have fewer attributes.  The attributes @code{:family},  The mode line now accepts all text properties, as well as
43  @code{:height}, @code{:width}, @code{:weight}, and @code{:slant},  @code{:propertize} and @code{:eval} forms, regardless of the
44  have been replaced with a font name, a ``bold'' flag, and an  @code{risky-local-variable} property.
 ``italic'' flag.  
45    
46  The attributes @code{:overline}, @code{:strike-through} and @code{:box}  @item
47  have been eliminated too.  Underlining now always has the same color as  The @code{line-height} and @code{line-spacing} properties no longer
48  the text---using any other color would be bad taste.  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.
51    
52  With fewer font attributes, there are no functions  @item
53  @code{set-face-attribute} and @code{face-attribute}.  Instead, you  Considerable simplifications have been made to the display
54  access these attributes using functions such as @code{face-font}, and  specification @code{(space . @var{props})}, which is used for
55  set them with functions such as @code{set-face-font}.  (These functions  displaying a space of specified width and height.  Pixel-based
56  were available in Emacs 21, but are not as useful there.)  specifications and Lisp expressions are no longer accepted.
57    
58  @item  @item
59  The standard faces @code{scroll-bar}, @code{menu}, @code{border},  Many features associated with the fringe areas have been removed, to
60  @code{cursor}, and @code{mouse} have been eliminated.  They are rather  encourage people to concentrate on the main editing area (the fringe
61  strange, as faces, and therefore shouldn't really exist.  You can use  will be completely removed in Emacs 20.)  Arbitrary bitmaps can no
62  @code{set-border-color}, @code{set-cursor-color} and  longer be displayed in the fringe; an overlay arrow can still be
63  @code{set-mouse-color} to specify the colors for the frame border, the  displayed, but there can only be one overlay arrow at a time (any more
64  text cursor, and the mouse cursor.  To specify menu colors, use X  would be confusing.)  The fringe widths cannot be adjusted, and
65  resources.  individual windows cannot have their own fringe settings.  A mouse
66    click on the fringe no longer generates a special event.
67    
68  @item  @item
69  Colors and other face attributes are no longer supported on character  Individual windows cannot have their own scroll-bar settings.
 terminals, so you no longer have to worry about terminals making faces  
 at you.  
70    
71  @item  @item
72  Emacs will respect your peace and quiet, aside from occasional beeps,  You can no longer use @samp{default} in a @code{defface} to specify
73  because there are no facilities for playing sounds.  defaults for subsequent faces.
74    
75  @item  @item
76  Emacs 20 provides a complex and badly designed method for handling  The function @code{display-supports-face-attributes-p} has been
77  character composition for languages such as Thai that display several  removed.  In @code{defface} specifications, the @code{supports}
78  letters as a single combined image.  We are too ashamed of it to tell  predicate is no longer supported.
 you any more than that.  
79    
80  @item  @item
81  @code{delete-and-extract-region} has been deleted; instead, use  @code{face-attribute-relative-p} and @code{merge-face-attribute} have
82  @code{buffer-substring} to extract the text, then use  been removed.
 @code{delete-region} to delete it.  
83    
84  @item  @item
85  Regular expressions do not support the POSIX character classes  The priority of faces in a list supplied by the @code{:inherit} face
86  such as @samp{[:alpha:]}.  All characters are created equal.  attribute has been reversed.  We like to make changes like this once
87    in a while, to keep Emacs Lisp programmers on their toes.
88    
89  @item  @item
90  Hash tables have been eliminated; use alists instead.  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.
93    
94  @item  @item
95  The Lisp printer does not detect and report circular structure.  That is  The @code{tty-color-mode} frame parameter does not exist.  You should
96  ok, because the Lisp reader cannot recreate circular structure anyway.  just trust the terminal capabilities database.
97  However, there is a library @samp{cust-print.el} which can report  @end itemize
 circular structure.  
98    
99  @item  @item
100  Emacs provides its own implementation of scroll bars, instead  Several simplifications have been made to mouse support:
 of using those of the X toolkit.  They always use the frame foreground  
 and background colors, so you cannot specify different colors for  
 the scroll bars.  
101    
102    @itemize @minus
103  @item  @item
104  For simplicity, all @acronym{ASCII} characters now have the same height and width.  Clicking @kbd{mouse-1} won't follow links, as that is alien to the
105  (Certain characters, such as Chinese characters, always have twice  spirit of Emacs.  Therefore, the @code{follow-link} property doesn't
106  the standard width.)  All characters are created equal.  has any special meaning, and the function @code{mouse-on-link-p} has
107    been removed.
108    
109  @item  @item
110  You can now resize any Emacs window, and size changes in one window can  The variable @code{void-text-area-pointer} has been removed, so the
111  propagate to all others.  Windows can no longer use  mouse pointer shape remains unchanged when moving between valid text
112  @code{window-size-fixed} to get special privileges.  areas and void text areas.  The @code{pointer} image and text
113    properties are no longer supported.
114    
115  @item  @item
116  The function @code{intern-soft} no longer accepts a symbol as argument.  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
120    
121  @item  @item
122  The function @code{bitmap-spec-p} has been renamed to  Simplifications have also been made to the way Emacs handles keymaps
123  @code{pixmap-spec-p} to encourage users to practice Emacs' help system  and key sequences:
 while trying to find it.  
124    
125    @itemize @minus
126  @item  @item
127  Tooltips operate using ordinary Emacs frames.  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.
130    
131  @item  @item
132  Areas of the mode line are not mouse-sensitive; however, some mouse  Emacs no longer supports key remapping.  You can do pretty much the
133  commands are available for the mode line as a whole.  same thing with @code{substitute-key-definition}, or by advising the
134    relevant command.
135    
136  @item  @item
137  Windows cannot have header lines.  Conversely, there is no way to turn  The @code{keymap} text and overlay property is now overridden by minor
138  off the mode line of a window unless it is a minibuffer.  mode keymaps, and will not work at the ends of text properties and
139    overlays.
140    
141  @item  @item
142  Plain dashes are the only separators you can use in a menu.  The functions @code{map-keymap}, @code{keymap-prompt}, and
143    @code{current-active-maps} have been removed.
144    @end itemize
145    
146  @item  @item
147  Vertical fractional scrolling does not exist.  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.
154    
155  @item  @item
156  The functions @code{format} and @code{message} ignore and discard text  Networking has also been simplified: @code{make-network-process} and
157  properties.  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.
162    
163  @item  @item
164  The function @code{propertize} does not exist;  Many programming shortcuts have been deleted, to provide you with the
165  you can get the job done using @code{set-text-properties}.  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.
169    
170  @item  @item
171  Colors are supported only on window systems, not on text-only terminals.  Variable aliases are no longer supported.  Aliases are for functions,
172  So the support functions for colors on text-only terminals are  not for variables.
 not needed, and have been eliminated.  
173    
174  @item  @item
175  The functions @code{color-values}, @code{color-defined-p} and  The variables @code{most-positive-fixnum} and
176  @code{defined-colors} have been renamed to @code{x-color-values},  @code{most-negative-fixnum} do not exist.  On 32 bit machines, the
177  @code{x-color-defined-p} and @code{x-defined-colors}.  most positive integer is probably 134217727, and the most negative
178    integer is probably -134217728.
179    
180  @item  @item
181  Windows cannot be made fixed-width or fixed-height;  The functions @code{eql} and @code{macroexpand-all} are no longer
182  Emacs will adjust the size of all windows when it needs to.  available.  However, you can find similar functions in the @code{cl}
183    package.
184    
185  @item  @item
186  The string used as the value of the @code{before-string} or  The list returned by @code{split-string} won't include null substrings
187  @code{after-string} property must contain only characters that display  for separators at the beginning or end of a string.  If you want to
188  as a single column---control characters, including tabs and newlines,  check for such separators, do it separately.
 will give strange results.  
189    
190  @item  @item
191  The minibuffer prompt does not actually appear in content of the  The function @code{assoc-string} has been removed.  Use
192  minibuffer; it is displayed specially in the minibuffer window.  @code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
193    are no longer obsolete.)
194    
195  @item  @item
196  The ``exclusive open'' feature of @code{write-region}  The escape sequence @samp{\s} is always interpreted as a super
197  has been eliminated; any non-@code{nil} value for the seventh  modifier, never a space.
 argument now means to ask the user for confirmation.  
198    
199  @item  @item
200  The function @code{buffer-size} always reports on the  The variable @code{buffer-save-without-query} has been removed, to
201  current buffer.  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}.
204    
205  @item  @item
206  The function @code{assq-delete-all} has itself been deleted.  The variable @code{buffer-auto-save-file-format} has been renamed to
207  So there!  @code{auto-save-file-format}, and is no longer a permanent local.
208    
209  @item  @item
210  The keyword @code{:set-after} no longer does anything in  The function @code{visited-file-modtime} now returns a cons, instead
211  @code{defcustom}.  of a list of two integers.  The primitive @code{set-file-times} has
212    been eliminated.
213    
214  @item  @item
215  The variable @code{small-temporary-file-directory} has no special  The function @code{file-remote-p} is no longer available.
 meaning.  There's only one variable for specifying which directory to  
 use for temporary files, @code{temporary-file-directory}, but not all  
 Emacs features use it anyway.  Some use the @code{TMP} environment  
 variable, and some use the @code{TMPDIR} environment variable.  
216    
217  @item  @item
218  If the second argument of @code{save-some-buffers}, @var{pred}, is not  When determining the filename extension, a leading dot in a filename
219  @code{nil}, then the precise value no longer matters.  Any  is no longer ignored.  Thus, @file{.emacs} is considered to have
220  non-@code{nil} value means the same as @code{t}: offer to save each  extension @file{emacs}, rather than being extensionless.
 non-file buffer that has a non-@code{nil} value for  
 @code{buffer-offer-save}.  
221    
222  @item  @item
223  The variable @code{inhibit-modification-hooks}  Emacs looks for special file handlers in a more efficient manner: it
224  has no special meaning.  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.
227    
228  @item  @item
229  The hook @code{fontification-functions} has been eliminated,  The @code{predicate} argument for @code{read-file-name} has been
230  but there are other hooks, such as @code{window-scroll-functions},  removed, and so have the variables @code{read-file-name-function} and
231  that you can use to do a similar job.  @code{read-file-name-completion-ignore-case}.  The function
232    @code{read-directory-name} has also been removed.
233    
234  @item  @item
235  The variable  @code{redisplay-dont-pause}  The functions @code{all-completions} and @code{try-completion} will no
236  has no special meaning.  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.
239    
240  @item  @item
241  The hook @code{calendar-move-hook} has been deleted.  Arbitrary Lisp functions can no longer be recorded into
242    @code{buffer-undo-list}.  As a consequence, @code{yank-undo-function}
243    is obsolete, and has been removed.
244    
245  @item  @item
246  The function @code{move-to-column} treats any non-@code{nil}  Emacs will never complain about commands that accumulate too much undo
247  second argument just like @code{t}.  information, so you no longer have to worry about binding
248  @end itemize  @code{buffer-undo-list} to @code{t} for such commands (though you may
249    want to do that anyway, to avoid taking up unnecessary memory space.)
250    
251  @section Old Lisp Features in Emacs 20.3  @item
252    Atomic change groups are no longer supported.
253    
254  Here are the most important of the features that you will learn  @item
255  to do without in Emacs 20.3:  The list returned by @code{(match-data t)} no longer records the
256    buffer as a final element.
257    
258  Here are changes in the Lisp language itself:  @item
259    The function @code{looking-back} has been removed, so we no longer
260    have the benefit of hindsight.
261    
 @itemize @bullet  
262  @item  @item
263  The functions @code{line-beginning-position} and @code{line-end-position}  The variable @code{search-spaces-regexp} does not exist.  Spaces
264  have been eliminated.  always stand for themselves in regular expression searches.
265    
266  @item  @item
267  The functions @code{directory-files-and-attributes},  The functions @code{skip-chars-forward} and @code{skip-chars-backward}
268  @code{file-attributes-lessp}, and @code{file-expand-wildcards}, have  no longer accepts character classes such as @samp{[:alpha:]}.  All
269  been eliminated.  characters are created equal.
270    
271  @item  @item
272  The functions @code{decode-coding-region} and @code{encode-coding-region}  The @code{yank-handler} text property no longer has any meaning.
273  leave text properties untouched, in case that is useful.  (It rarely makes  Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
274  any sense, though.)  @code{insert-buffer-substring-as-yank} have all been removed.
275    
276  @item  @item
277  The functions @code{position-bytes} and @code{byte-to-position} have  The variable @code{char-property-alias-alist} has been deleted.
278  been eliminated.  Aliases are for functions, not for properties.
279    
280  @item  @item
281  Temporary buffers made with @code{with-output-to-temp-buffer} are now  The function @code{get-char-property-and-overlay} has been deleted.
282  modifiable by default, and use Fundamental mode rather than Help mode.  If you want the properties at a point, find the text properties at the
283    point; then, find the overlays at the point, and find the properties
284    on those overlays.
285    
286  @item  @item
287  The functions @code{sref} interprets its @var{index} argument as a  Font Lock mode only manages @code{face} properties; you can't use
288  number of bytes, not a number of characters.  And the function  font-lock keywords to specify arbitrary text properties for it to
289  @code{char-bytes} actually tries to report on the number of bytes that a  manage.  After all, it is called Font Lock mode, not Arbitrary
290  character occupies.  Properties Lock mode.
291    
292  @item  @item
293  The function @code{process-running-child-p} has been eliminated.  The arguments to @code{remove-overlays} are no longer optional.
294    
295  @item  @item
296  The function @code{interrupt-process} and similar functions no longer do  In @code{replace-match}, the replacement text now inherits properties
297  anything special when the second argument is @code{lambda}.  from the surrounding text.
298    
299  @item  @item
300  The function @code{define-prefix-command} accepts only two arguments.  @code{mode-line-format} no longer supports the @code{:propertize},
301    @code{%i}, and @code{%I} constructs.  The function
302    @code{format-mode-line} has been removed.
303    
304  @item  @item
305  The meaning of the second argument to @code{read-char},  The functions @code{window-inside-edges} and @code{window-body-height}
306  @code{read-event}, and @code{read-char-exclusive} has been reversed:  have been removed.  You should do the relevant calculations yourself,
307  they use the current input method if the argument is if @code{nil}.  starting with @code{window-width} and @code{window-height}.
308    
309  @item  @item
310  The function @code{with-temp-message} has been eliminated.  The functions @code{window-pixel-edges} and
311    @code{window-inside-pixel-edges} have been removed.  We prefer to
312    think in terms of lines and columns, not pixel coordinates.  (Sometime
313    in the distant past, we will do away with graphical terminals
314    entirely, in favor of text terminals.)  For similar reasons, the
315    functions @code{posn-at-point}, @code{posn-at-x-y}, and
316    @code{pos-visible-in-window-p} have been removed.
317    
318  @item  @item
319  The function @code{clear-this-command-keys} has been eliminated.  The macro @code{save-selected-window} only saves the selected window
320    of the selected frame, so don't try selecting windows in other frames.
321    
322  @item  @item
323  The functions @code{gap-position} and @code{gap-size} have been eliminated.  The function @code{minibufferp} is no longer available.
324    
325  @item  @item
326  In @code{modify-face}, an argument of @code{(nil)} has no special  The function @code{modify-all-frames-parameters} has been removed (we
327    always suspected the name was ungrammatical, anyway.)
328    
329    @item
330    The @code{line-spacing} variable no longer accepts float values.
331    
332    @item
333    The function @code{tool-bar-local-item-from-menu} has been deleted.
334    If you need to make an entry in the tool bar, you can still use
335    @code{tool-bar-add-item-from-menu}, but that modifies the binding in
336    the source keymap instead of copying it into the local keymap.
337    
338    @item
339    When determining the major mode, the file name takes precedence over
340    the interpreter magic line.  The variable @code{magic-mode-alist},
341    which associates certain buffer beginnings with major modes, has been
342    eliminated.
343    
344    @item
345    The hook @code{after-change-major-mode-hook} is not defined, and
346    neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
347    
348    @item
349    The variable @code{minor-mode-list} has been removed.
350    
351    @item
352    @code{define-derived-mode} will copy abbrevs from the parent mode's
353    abbrev table, instead of creating a new, empty abbrev table.
354    
355    @item
356    There are no ``system'' abbrevs.  When the user saves into the abbrevs
357    file, all abbrevs are saved.
358    
359    @item
360    The Warnings facility has been removed.  Just use @code{error}.
361    
362    @item
363    Several hook variables have been renamed to flout the Emacs naming
364    conventions.  We feel that consistency is boring, and having
365    non-standard hook names encourages users to check the documentation
366    before using a hook.  For instance, the normal hook
367    @code{find-file-hook} has been renamed to @code{find-file-hooks}, and
368    the abnormal hook @code{delete-frame-functions} has been renamed to
369    @code{delete-frame-hook}.
370    
371    @item
372    The function @code{symbol-file} does not exist.  If you want to know
373    which file defined a function or variable, try grepping for it.
374    
375    @item
376    The variable @code{load-history} records function definitions just
377    like variable definitions, instead of indicating which functions were
378    previously autoloaded.
379    
380    @item
381    There is a new variable, @code{recursive-load-depth-limit}, which
382    specifies how many times files can recursively load themselves; it is
383    50 by default, and nil means infinity.  Previously, Emacs signalled an
384    error after just 3 recursive loads, which was boring.
385    
386    @item
387    Byte-compiler warnings and error messages will leave out the line and
388    character positions, in order to exercise your debugging skills.
389    Also, there is no @code{with-no-warnings} macro---instead of
390    suppressing compiler warnings, fix your code to avoid them!
391    
392    @item
393    The function @code{unsafep} has been removed.
394    
395    @item
396    File local variables can now specify a string with text properties.
397    Since arbitrary Lisp expressions can be embedded in text properties,
398    this can provide you with a great deal of flexibility and power.  On
399    the other hand, @code{safe-local-eval-forms} and the
400    @code{safe-local-eval-function} function property have no special
401  meaning.  meaning.
402    
403  @item  @item
404  The base64 conversion functions have been eliminated.  You can no longer use @code{char-displayable-p} to test if Emacs can
405    display a certain character.
406    
407    @item
408    The function @code{string-to-multibyte} is no longer available.
409    
410    @item
411    The @code{translation-table-for-input} translation table has been
412    removed.  Also, translation hash tables are no longer available, so we
413    don't need the functions @code{lookup-character} and
414    @code{lookup-integer}.
415    
416    @item
417    The @code{table} argument to @code{translate-region} can no longer be
418    a char-table; it has to be a string.
419    
420    @item
421    The functions @code{merge-coding-systems} and
422    @code{decode-coding-inserted-region}, and the variable
423    @code{auto-coding-functions}, have been deleted.  The
424    @code{mime-text-unsuitable} coding system property no longer has any
425    special meaning.
426    
427  @item  @item
428  Wildcard support has been eliminated from @code{find-file}  If pure storage overflows while dumping, Emacs won't tell you how much
429  and allied functions.  additional pure storage it needs.  Try adding in increments of 20000,
430    until you have enough.
431    
432  @item  @item
433  @code{file-attributes} returns the file size and the file inode number  The variables @code{gc-elapsed}, @code{gcs-done}, and
434  only as a simple integer.  @code{post-gc-hook} have been garbage-collected.
 Also @acronym{UID} and @acronym{GID} are always returned as integers.  
435  @end itemize  @end itemize
436    
437  @ignore  @ignore

Legend:
Removed from v.1.27  
changed lines
  Added in v.1.28

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26