@c -*-texinfo-*-@c This is part of the GNU Emacs Lisp Reference Manual.@c Copyright (C) 1999 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions.@c This node must have no pointers.@node Antinews, GNU Free Documentation License, System Interface, Top@appendix Emacs 20 AntinewsFor those users who live backwards in time, here is information aboutdowngrading to Emacs version 20.4. We hope you will enjoy the greatersimplicity that results from the absence of many Emacs 21 features. Inthe following section, we carry this information back to Emacs20.3, for which the previous printed edition of this manual was made.@section Old Lisp Features in Emacs 20@itemize @bullet@itemThe @code{push} and @code{pop} macros are not defined.Neither are @code{dolist} and @code{dotimes}.@itemYou can't display images in buffers. (Emacs is meant for editing text.)With no images, there are no display margins, and no tool bars.@itemThe @code{display} text property has no special meaning; you can use itfreely in Lisp programs, with no effects except what you implement foryourself. With no images, who needs the @code{display} text property?@itemThe @code{field} text property has no special meaning; buffers are nolonger subdivided into fields. (The division of information intofields is always rather arbitrary.)@itemFaces have fewer attributes. The attributes @code{:family},@code{:height}, @code{:width}, @code{:weight}, and @code{:slant},have been replaced with a font name, a ``bold'' flag, and an``italic'' flag.The attributes @code{:overline}, @code{:strike-through} and @code{:box}have been eliminated too. Underlining now always has the same color asthe text---using any other color would be bad taste.With fewer font attributes, there are no functions@code{set-face-attribute} and @code{face-attribute}. Instead, youaccess these attributes using functions such as @code{face-font}, andset them with functions such as @code{set-face-font}. (These functionswere available in Emacs 21, but are not as useful there.)@itemThe standard faces @code{scroll-bar}, @code{menu}, @code{border},@code{cursor}, and @code{mouse} have been eliminated. They are ratherstrange, as faces, and therefore shouldn't really exist. You can use@code{set-border-color}, @code{set-cursor-color} and@code{set-mouse-color} to specify the colors for the frame border, thetext cursor, and the mouse cursor. To specify menu colors, use Xresources.@itemColors and other face attributes are no longer supported on characterterminals, so you no longer have to worry about terminals making facesat you.@itemEmacs will respect your peace and quiet, aside from occasional beeps,because there are no facilities for playing sounds.@itemEmacs 20 provides a complex and badly designed method for handlingcharacter composition for languages such as Thai that display severalletters as a single combined image. We are too ashamed of it to tellyou any more than that.@item@code{delete-and-extract-region} has been deleted; instead, use@code{buffer-substring} to extract the text, then use@code{delete-region} to delete it.@itemRegular expressions do not support the POSIX character classessuch as @samp{[:alpha:]}. All characters are created equal.@itemHash tables have been eliminated; use alists instead.@itemThe Lisp printer does not detect and report circular structure. That isok, because the Lisp reader cannot recreate circular structure anyway.However, there is a library @samp{cust-print.el} which can reportcircular structure.@itemEmacs provides its own implementation of scroll bars, insteadof using those of the X toolkit. They always use the frame foregroundand background colors, so you cannot specify different colors forthe scroll bars.@itemFor simplicity, all @sc{ascii} characters now have the same height and width.(Certain characters, such as Chinese characters, always have twicethe standard width.) All characters are created equal.@itemYou can now resize any Emacs window, and size changes in one window canpropagate to all others. Windows can no longer use@code{window-size-fixed} to get special privileges.@itemThe function @code{intern-soft} no longer accepts a symbol as argument.@itemThe function @code{bitmap-spec-p} has been renamed to@code{pixmap-spec-p} to encourage users to practice Emacs' help systemwhile trying to find it.@itemTooltips operate using ordinary Emacs frames.@itemAreas of the mode line are not mouse-sensitive; however, some mousecommands are available for the mode line as a whole.@itemWindows cannot have header lines. Conversely, there is no way to turnoff the mode line of a window unless it is a minibuffer.@itemPlain dashes are the only separators you can use in a menu.@itemVertical fractional scrolling does not exist.@itemThe functions @code{format} and @code{message} ignore and discard textproperties.@itemThe function @code{propertize} does not exist;you can get the job done using @code{set-text-properties}.@itemColors are supported only on window systems, not on text-only terminals.So the support functions for colors on text-only terminals arenot needed, and have been eliminated.@itemThe functions @code{color-values}, @code{color-defined-p} and@code{defined-colors} have been renamed to @code{x-color-values},@code{x-color-defined-p} and @code{x-defined-colors}.@itemWindows cannot be made fixed-width or fixed-height;Emacs will adjust the size of all windows when it needs to.@itemThe string used as the value of the @code{before-string} or@code{after-string} property must contain only characters that displayas a single column---control characters, including tabs and newlines,will give strange results.@itemThe minibuffer prompt does not actually appear in content of theminibuffer; it is displayed specially in the minibuffer window.@itemThe ``exclusive open'' feature of @code{write-region}has been eliminated; any non-@code{nil} value for the seventhargument now means to ask the user for confirmation.@itemThe function @code{buffer-size} always reports on thecurrent buffer.@itemThe function @code{assoc-delete-all} has itself been deleted. So there!@itemThe keyword @code{:set-after} no longer does anything in@code{defcustom}.@itemThe variable @code{small-temporary-file-directory} has no specialmeaning. There's only one variable for specifying which directory touse for temporary files, @code{temporary-file-directory}, but not allEmacs features use it anyway. Some use the @code{TMP} environmentvariable, and some use the @code{TMPDIR} environment variable.@itemIf the second argument of @code{save-some-buffers}, @var{pred}, is not@code{nil}, then the precise value no longer matters. Anynon-@code{nil} value means the same as @code{t}: offer to save eachnon-file buffer that has a non-@code{nil} value for@code{buffer-offer-save}.@itemThe variable @code{inhibit-modification-hooks}has no special meaning.@itemThe hook @code{fontification-functions} has been eliminated,but there are other hooks, such as @code{window-scroll-functions},that you can use to do a similar job.@itemThe variable @code{redisplay-dont-pause}has no special meaning.@itemThe hook @code{calendar-move-hook} has been deleted.@itemThe function @code{move-to-column} treats any non-@code{nil}second argument just like @code{t}.@end itemize@section Old Lisp Features in Emacs 20.3Here are the most important of the features that you will learnto do without in Emacs 20.3:Here are changes in the Lisp language itself:@itemize @bullet@itemThe functions @code{line-beginning-position} and @code{line-end-position}have been eliminated.@itemThe functions @code{directory-files-and-attributes},@code{file-attributes-lessp}, and @code{file-expand-wildcards}, havebeen eliminated.@itemThe functions @code{decode-coding-region} and @code{encode-coding-region}leave text properties untouched, in case that is useful. (It rarely makesany sense, though.)@itemThe functions @code{position-bytes} and @code{byte-to-position} havebeen eliminated.@itemTemporary buffers made with @code{with-output-to-temp-buffer} are nowmodifiable by default, and use Fundamental mode rather than Help mode.@itemThe functions @code{sref} interprets its @var{index} argument as anumber of bytes, not a number of characters. And the function@code{char-bytes} actually tries to report on the number of bytes that acharacter occupies.@itemThe function @code{process-running-child-p} has been eliminated.@itemThe function @code{interrupt-process} and similar functions no longer doanything special when the second argument is @code{lambda}.@itemThe function @code{define-prefix-command} accepts only two arguments.@itemThe meaning of the second argument to @code{read-char},@code{read-event}, and @code{read-char-exclusive} has been reversed:they use the current input method if the argument is if @code{nil}.@itemThe function @code{with-temp-message} has been eliminated. @itemThe function @code{clear-this-command-keys} has been eliminated. @itemThe functions @code{gap-position} and @code{gap-size} have been eliminated. @itemIn @code{modify-face}, an argument of @code{(nil)} has no specialmeaning.@itemThe base64 conversion functions have been eliminated.@itemWildcard support has been eliminated from @code{find-file}and allied functions.@item@code{file-attributes} returns the file size and the file inode numberonly as a simple integer.@end itemize