(dumpglyphs): Check the case that FACE_FONT (face) is
NULL. While displaing cursor with non-default face, if the
variable `font' is NULL, don't set GCFont.
@c -*-texinfo-*-@c This is part of the GNU Emacs Lisp Reference Manual.@c Copyright (C) 1998 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions.@node Antinews, Index, Standard Hooks, Top@appendix Emacs 19 AntinewsFor those users who live backwards in time, here is information aboutdowngrading to Emacs version 19.34. We hope you will enjoy the greatersimplicity that results from the absence of many Emacs 20 features. Inthe following section, we carry this information back as far as Emacs19.29, for which the previous printed edition of this manual was made.@section Old Lisp Features in Emacs 19Here are the most important of the features that you will learnto do without in Emacs 19:@itemize @bullet@itemIn a great simplification, Emacs 19 supports ASCII characters only.There are no multibyte characters, character sets, languageenvironments, coding systems, or input methods; all the functions thatspecifically relate to them are gone as well.Valid character codes for text must be in the range 0 through 255.Within this range, there are no invalid character codes.@itemThe Custom facility has been replaced with a much simpler and moregeneral method of defining user option variables. Instead of@code{defcustom}, which requires you to specify each user option's datatype and classify options into groups, all you have to do is write a@code{defvar}. You should still start the documentation string with@samp{*}, though.@end itemizeHere are changes in the Lisp language itself:@itemize @bullet@itemSymbols whose names start with @samp{:} are no longer specialin any way. They start out void, like most other symbols.@itemThe macros @code{when} and @code{unless} have been deleted.@itemThe functions @code{caar}, @code{cadr}, @code{cdar} and @code{cddr}no longer exist.@itemThe function @code{functionp} is now gone. If you don't knowby now whether something is a function, Emacs can't tell you.@end itemizeHere are changes in handling strings and text.@itemize @bullet@itemThe function @code{substring} works only on strings, not on vectors.@itemThere are no more character categories.@itemWhen you compare strings with @code{equal}, it now comparestheir string properties as well as their text. All must match,or the strings are not equal.@item@code{format-time-string} no longer supports specified field widthor specified padding.@itemThe functions @code{split-string} and @code{string} no longer exist.Neither does @code{store-substring} or @code{sref}.@itemAll printing characters have the same width. Therefore, we have deleted@code{char-width}, @code{string-width} and@code{truncate-string-to-width}.@itemWe have eliminated the functions @code{next-char-property-change} and@code{previous-char-property-change} also.@itemSyntax parsing now determines the syntax of each character from thesyntax table alone---not from text properties. This makes the syntaxcodes @samp{|} and @samp{!}, which were meant for use with textproperties, useless; so we have deleted them.@itemIn the function @code{parse-partial-sexp}, passing @code{syntax-table}as the sixth argument @var{commentstop} no longer has any special meaning.And the return value has only eight elements.@end itemizeHere are changes in other areas of Emacs Lisp:@itemize @bullet@itemThe macros @code{save-current-buffer}, @code{with-current-buffer},@code{with-temp-buffer}, @code{with-temp-file}, @code{save-selected-window}, and @code{with-output-to-string} are gone.@itemThe easy-mmode facility for defining minor modes is gone too.@itemProcess filters and sentinels must explicitly save the match data, with@code{save-match-data}, or they will clobber the match data andsomething horrible will happen.@itemAs part of our effort to loosen up, @code{batch-byte-compile-file} nolonger returns a nonzero status code if there is a compilation error.@itemThe ``mail user agent'' feature is gone.@itemWe have removed the functions @code{add-to-invisibility-spec} and@code{remove-from-invisibility-spec}, so you should manipulatethe value of @code{buffer-invisibility-spec} by hand.@itemThe functions @code{face-documentation}, @code{face-bold-p},@code{face-italic-p}, @code{set-face-bold-p}, @code{set-face-italic-p}are gone. Instead, use @code{make-face-bold} and friends.@itemAll the functions that operate on a file now discard an extra redundantdirectory name from the beginning of the file name---just like@code{substitute-in-file-name}.@itemWe have got rid of the function @code{access-file}.@itemMost of the minibuffer input functions no longer take a default value asan argument. Also, they do not discard text properties from the result.This means that if you insert text with text properties into the minibuffer,the minibuffer value really will contain text properties.@itemOnly the simple menu item format is supported (@pxref{Simple Menu Items}).@itemYou can still bind @code{x-resource-class} around a call to@code{x-get-resource}, but it won't do anything special.@itemWave goodbye to the hooks @code{before-make-frame-hook},@code{after-make-frame-functions}, and@code{window-configuration-change-hook},@itemThe functions and variables that deal with MS Windows NT/95have been renamed to start with @samp{win32-} instead of @samp{w32-}.This is because we admire Microsoft more each day as we go backinto the past.@end itemize@section Onward into the Past!Here we go even further back, as far as Emacs 19.29, for which theprevious printed edition of the Emacs Lisp manual was made.@itemize @bullet@itemThere are no char-tables or bool-vectors. Syntax tables, displaytables, and case tables are all vectors now, and the value of@code{keyboard-translate-table} should be a vector or a string.@itemThere is only one kind of marker. When you insert text at the placewhere a marker points, the marker always ends up before that text,unless you use @code{insert-before-markers}, which puts all the markersafter the inserted text.@itemThere is no function @code{overlays-in}.@itemThe variable @code{print-length} applies only to lists, not tovectors or strings.@itemThe function @code{convert-standard-filename} no longer exists, so eachLisp package must independently figure out which file names to use forits initialization files on each kind of operating system.@itemThe macro @code{with-timeout} has been eliminated, along with thefunction @code{y-or-n-p-with-timeout}. Idle timers don't exist at all;instead, maybe you can use @code{post-command-idle-hook} to do some ofthe same job.@itemThe functions @code{keymap-parent} and @code{set-keymap-parent} aregone. We expect keymaps to recognize their own parents.@itemWhen you delete text and then undo a deletion, markers that wereoriginally inside the deleted text end up either at the beginningor the end of it---not back in their original places.@itemThe interactive specification @samp{N} is gone now.@itemThere is no more @code{safe-length}. Don't try to be so safe! Did youexpect to live forever?@itemWe got rid of @code{insert-file-contents-literally}, becauseprogrammers are too literal-minded anyway.@itemAs part of our continuing effort to help Lisp programmers to relax, wethrew out the function @code{error-message-string}. Don't worry so muchabout errors! We all make mistakes.@itemThe keymap @code{special-event-map} is gone, because Emacs has no morespecial events. If you want to hold a party in Emacs, please let usknow.@itemYou can't do date arithmetic with @code{encode-time} any more.@itemThe functions @code{command-execute} and @code{call-interactively} nolonger accept the optional argument @var{keys}.@item@code{get-buffer-window-list} is gone as well.@itemWith the function @code{replace-match}, you can only replace the wholematch, not a subexpression of it.@itemWe eliminated the hooks @code{buffer-access-fontify-functions},@code{window-scroll-functions}, and @code{redisplay-end-trigger-functions}.@end itemize