emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lispref/anti.texi


From: Richard M . Stallman
Subject: [Emacs-diffs] Changes to emacs/lispref/anti.texi
Date: Thu, 17 Mar 2005 18:16:11 -0500

Index: emacs/lispref/anti.texi
diff -c emacs/lispref/anti.texi:1.27 emacs/lispref/anti.texi:1.28
*** emacs/lispref/anti.texi:1.27        Fri Nov 21 18:24:52 2003
--- emacs/lispref/anti.texi     Thu Mar 17 23:16:11 2005
***************
*** 1,298 ****
  @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 Antinews
  
  For those users who live backwards in time, here is information about
! downgrading to Emacs version 20.4.  We hope you will enjoy the greater
! simplicity that results from the absence of many Emacs 21 features.  In
! the following section, we carry this information back to Emacs
! 20.3, for which the previous printed edition of this manual was made.
  
! @section Old Lisp Features in Emacs 20
  
  @itemize @bullet
  @item
! The @code{push} and @code{pop} macros are not defined.
! Neither are @code{dolist} and @code{dotimes}.
  
  @item
! You can't display images in buffers.  (Emacs is meant for editing text.)
! With no images, there are no display margins, and no tool bars.
  
  @item
! The @code{display} text property has no special meaning; you can use it
! freely in Lisp programs, with no effects except what you implement for
! yourself.  With no images, who needs the @code{display} text property?
  
  @item
! The @code{field} text property has no special meaning; buffers are no
! longer subdivided into fields.  (The division of information into
! fields is always rather arbitrary.)
  
  @item
! Faces 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 as
! the 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, you
! access these attributes using functions such as @code{face-font}, and
! set them with functions such as @code{set-face-font}.  (These functions
! were available in Emacs 21, but are not as useful there.)
  
  @item
! The standard faces @code{scroll-bar}, @code{menu}, @code{border},
! @code{cursor}, and @code{mouse} have been eliminated.  They are rather
! strange, 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, the
! text cursor, and the mouse cursor.  To specify menu colors, use X
! resources.
  
  @item
! Colors and other face attributes are no longer supported on character
! terminals, so you no longer have to worry about terminals making faces
! at you.
  
  @item
! Emacs will respect your peace and quiet, aside from occasional beeps,
! because there are no facilities for playing sounds.
  
  @item
! Emacs 20 provides a complex and badly designed method for handling
! character composition for languages such as Thai that display several
! letters as a single combined image.  We are too ashamed of it to tell
! you 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.
  
  @item
! Regular expressions do not support the POSIX character classes
! such as @samp{[:alpha:]}.  All characters are created equal.
  
  @item
! Hash tables have been eliminated; use alists instead.
  
  @item
! The Lisp printer does not detect and report circular structure.  That is
! ok, because the Lisp reader cannot recreate circular structure anyway.
! However, there is a library @samp{cust-print.el} which can report
! circular structure.
  
  @item
! Emacs provides its own implementation of scroll bars, instead
! 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.
  
  @item
! For simplicity, all @acronym{ASCII} characters now have the same height and 
width.
! (Certain characters, such as Chinese characters, always have twice
! the standard width.)  All characters are created equal.
  
  @item
! You can now resize any Emacs window, and size changes in one window can
! propagate to all others.  Windows can no longer use
! @code{window-size-fixed} to get special privileges.
  
  @item
! The function @code{intern-soft} no longer accepts a symbol as argument.
  
  @item
! The function @code{bitmap-spec-p} has been renamed to
! @code{pixmap-spec-p} to encourage users to practice Emacs' help system
! while trying to find it.
  
  @item
! Tooltips operate using ordinary Emacs frames.
  
  @item
! Areas of the mode line are not mouse-sensitive; however, some mouse
! commands are available for the mode line as a whole.
  
  @item
! Windows cannot have header lines.  Conversely, there is no way to turn
! off the mode line of a window unless it is a minibuffer.
  
  @item
! Plain dashes are the only separators you can use in a menu.
  
  @item
! Vertical fractional scrolling does not exist.
  
  @item
! The functions @code{format} and @code{message} ignore and discard text
! properties.
  
  @item
! The function @code{propertize} does not exist;
! you can get the job done using @code{set-text-properties}.
  
  @item
! Colors are supported only on window systems, not on text-only terminals.
! So the support functions for colors on text-only terminals are
! not needed, and have been eliminated.
  
  @item
! The 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}.
  
  @item
! Windows cannot be made fixed-width or fixed-height;
! Emacs will adjust the size of all windows when it needs to.
  
  @item
! The string used as the value of the @code{before-string} or
! @code{after-string} property must contain only characters that display
! as a single column---control characters, including tabs and newlines,
! will give strange results.
  
  @item
! The minibuffer prompt does not actually appear in content of the
! minibuffer; it is displayed specially in the minibuffer window.
  
  @item
! The ``exclusive open'' feature of @code{write-region}
! has been eliminated; any address@hidden value for the seventh
! argument now means to ask the user for confirmation.
  
  @item
! The function @code{buffer-size} always reports on the
! current buffer.
  
  @item
! The function @code{assq-delete-all} has itself been deleted.
! So there!
  
  @item
! The keyword @code{:set-after} no longer does anything in
! @code{defcustom}.
  
  @item
! The variable @code{small-temporary-file-directory} has no special
! 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.
  
  @item
! If the second argument of @code{save-some-buffers}, @var{pred}, is not
! @code{nil}, then the precise value no longer matters.  Any
! address@hidden value means the same as @code{t}: offer to save each
! non-file buffer that has a address@hidden value for
! @code{buffer-offer-save}.
  
  @item
! The variable @code{inhibit-modification-hooks}
! has no special meaning.
  
  @item
! The 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.
  
  @item
! The variable  @code{redisplay-dont-pause}
! has no special meaning.
  
  @item
! The hook @code{calendar-move-hook} has been deleted.
  
  @item
! The function @code{move-to-column} treats any address@hidden
! second argument just like @code{t}.
! @end itemize
  
! @section Old Lisp Features in Emacs 20.3
  
! Here are the most important of the features that you will learn
! to do without in Emacs 20.3:
  
! Here are changes in the Lisp language itself:
  
- @itemize @bullet
  @item
! The functions @code{line-beginning-position} and @code{line-end-position}
! have been eliminated.
  
  @item
! The functions @code{directory-files-and-attributes},
! @code{file-attributes-lessp}, and @code{file-expand-wildcards}, have
! been eliminated.
  
  @item
! The functions @code{decode-coding-region} and @code{encode-coding-region}
! leave text properties untouched, in case that is useful.  (It rarely makes
! any sense, though.)
  
  @item
! The functions @code{position-bytes} and @code{byte-to-position} have
! been eliminated.
  
  @item
! Temporary buffers made with @code{with-output-to-temp-buffer} are now
! modifiable by default, and use Fundamental mode rather than Help mode.
  
  @item
! The functions @code{sref} interprets its @var{index} argument as a
! number of bytes, not a number of characters.  And the function
! @code{char-bytes} actually tries to report on the number of bytes that a
! character occupies.
  
  @item
! The function @code{process-running-child-p} has been eliminated.
  
  @item
! The function @code{interrupt-process} and similar functions no longer do
! anything special when the second argument is @code{lambda}.
  
  @item
! The function @code{define-prefix-command} accepts only two arguments.
  
  @item
! The 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}.
  
  @item
! The function @code{with-temp-message} has been eliminated.
  
  @item
! The function @code{clear-this-command-keys} has been eliminated.
  
  @item
! The functions @code{gap-position} and @code{gap-size} have been eliminated.
  
  @item
! In @code{modify-face}, an argument of @code{(nil)} has no special
  meaning.
  
  @item
! The base64 conversion functions have been eliminated.
  
  @item
! Wildcard support has been eliminated from @code{find-file}
! and allied functions.
  
  @item
! @code{file-attributes} returns the file size and the file inode number
! only as a simple integer.
! Also @acronym{UID} and @acronym{GID} are always returned as integers.
  @end itemize
  
  @ignore
--- 1,437 ----
  @c -*-texinfo-*-
  @c This is part of the GNU Emacs Lisp Reference Manual.
! @c Copyright (C) 2005 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 21 Antinews
  
  For those users who live backwards in time, here is information about
! downgrading to Emacs version 21.4.  We hope you will enjoy the greater
! simplicity that results from the absence of many Emacs 22 features.
  
! @section Old Lisp Features in Emacs 21
  
  @itemize @bullet
  @item
! Many unnecessary features of redisplay have been eliminated.  (The
! earlier major release, Emacs 20, will have a completely rewritten
! redisplay engine, which will be even simpler.)
  
+ @itemize @minus
  @item
! The function @code{force-window-update} has been removed.  It
! shouldn't be needed, since changes in window contents are detected
! automatically.  In case they aren't, call @code{redraw-display} to
! redraw everything.
  
  @item
! Point no longer moves out from underneath invisible text at the end of
! each command.  This allows the user to detect invisible text by moving
! the cursor around---if the cursor gets stuck, there is something
! invisible in the way.  If you really want cursor motion to ignore the
! text, try marking it as intangible.
  
  @item
! Support for image maps and image slices has been removed.  Emacs was
! always meant for editing text, anyway.
  
  @item
! The mode line now accepts all text properties, as well as
! @code{:propertize} and @code{:eval} forms, regardless of the
! @code{risky-local-variable} property.
  
! @item
! The @code{line-height} and @code{line-spacing} properties no longer
! have any meaning for newline characters.  Such properties wouldn't
! make sense, since newlines are not really characters; they just tell
! you where to break a line.
  
! @item
! Considerable simplifications have been made to the display
! specification @code{(space . @var{props})}, which is used for
! displaying a space of specified width and height.  Pixel-based
! specifications and Lisp expressions are no longer accepted.
  
  @item
! Many features associated with the fringe areas have been removed, to
! encourage people to concentrate on the main editing area (the fringe
! will be completely removed in Emacs 20.)  Arbitrary bitmaps can no
! longer be displayed in the fringe; an overlay arrow can still be
! displayed, but there can only be one overlay arrow at a time (any more
! would be confusing.)  The fringe widths cannot be adjusted, and
! individual windows cannot have their own fringe settings.  A mouse
! click on the fringe no longer generates a special event.
  
  @item
! Individual windows cannot have their own scroll-bar settings.
  
  @item
! You can no longer use @samp{default} in a @code{defface} to specify
! defaults for subsequent faces.
  
  @item
! The function @code{display-supports-face-attributes-p} has been
! removed.  In @code{defface} specifications, the @code{supports}
! predicate is no longer supported.
  
  @item
! @code{face-attribute-relative-p} and @code{merge-face-attribute} have
! been removed.
  
  @item
! The priority of faces in a list supplied by the @code{:inherit} face
! attribute has been reversed.  We like to make changes like this once
! in a while, to keep Emacs Lisp programmers on their toes.
  
  @item
! The @code{min-colors} face attribute, used for tailoring faces to
! limited-color displays, does not exist.  If in doubt, use colors like
! ``white'' and ``black'', which ought to be defined everywhere.
  
  @item
! The @code{tty-color-mode} frame parameter does not exist.  You should
! just trust the terminal capabilities database.
! @end itemize
  
  @item
! Several simplifications have been made to mouse support:
  
+ @itemize @minus
  @item
! Clicking @kbd{mouse-1} won't follow links, as that is alien to the
! spirit of Emacs.  Therefore, the @code{follow-link} property doesn't
! has any special meaning, and the function @code{mouse-on-link-p} has
! been removed.
  
  @item
! The variable @code{void-text-area-pointer} has been removed, so the
! mouse pointer shape remains unchanged when moving between valid text
! areas and void text areas.  The @code{pointer} image and text
! properties are no longer supported.
  
  @item
! Mouse events will no longer specify the timestamp, the object clicked,
! equivalent buffer positions (for marginal or fringe areas), glyph
! coordinates, or relative pixel coordinates.
! @end itemize
  
  @item
! Simplifications have also been made to the way Emacs handles keymaps
! and key sequences:
  
+ @itemize @minus
  @item
! The @code{kbd} macro has been removed.  It isn't that difficult to
! write key sequences using the string and vector representations, and
! we want to encourage users to learn.
  
  @item
! Emacs no longer supports key remapping.  You can do pretty much the
! same thing with @code{substitute-key-definition}, or by advising the
! relevant command.
  
  @item
! The @code{keymap} text and overlay property is now overridden by minor
! mode keymaps, and will not work at the ends of text properties and
! overlays.
  
  @item
! The functions @code{map-keymap}, @code{keymap-prompt}, and
! @code{current-active-maps} have been removed.
! @end itemize
  
  @item
! Process support has been pared down to a functional minimum.  The
! functions @code{call-process-shell-command} and @code{process-file}
! have been deleted.  Processes no longer maintain property lists, and
! they won't ask any questions when the user tries to exit Emacs (which
! would simply be rude.)  The function @code{signal-process} won't
! accept a process object, only the process id; determining the process
! id from a process object is left as an exercise to the programmer.
  
  @item
! Networking has also been simplified: @code{make-network-process} and
! its various associated function have all been replaced with a single
! easy-to-use function, @code{open-network-stream}, which can't use UDP,
! can't act as a server, and can't set up non-blocking connections.
! Also, deleting a network process with @code{delete-process} won't call
! the sentinel.
  
  @item
! Many programming shortcuts have been deleted, to provide you with the
! enjoyment of ``rolling your own''.  The macros @code{while-no-input},
! @code{with-local-quit}, @code{with-selected-window},
! @code{dynamic-completion-table}, and @code{lazy-completion-table} no
! longer exist.  Also, there are no built-in progress reporters.
  
  @item
! Variable aliases are no longer supported.  Aliases are for functions,
! not for variables.
  
  @item
! The variables @code{most-positive-fixnum} and
! @code{most-negative-fixnum} do not exist.  On 32 bit machines, the
! most positive integer is probably 134217727, and the most negative
! integer is probably -134217728.
  
  @item
! The functions @code{eql} and @code{macroexpand-all} are no longer
! available.  However, you can find similar functions in the @code{cl}
! package.
  
  @item
! The list returned by @code{split-string} won't include null substrings
! for separators at the beginning or end of a string.  If you want to
! check for such separators, do it separately.
  
  @item
! The function @code{assoc-string} has been removed.  Use
! @code{assoc-ignore-case} or @code{assoc-ignore-representation} (which
! are no longer obsolete.)
  
  @item
! The escape sequence @samp{\s} is always interpreted as a super
! modifier, never a space.
  
  @item
! The variable @code{buffer-save-without-query} has been removed, to
! prevent Emacs from sneakily saving buffers.  Also, the hook
! @code{before-save-hook} has been removed, so if you want something to
! be done before saving, advise or redefine @code{basic-save-buffer}.
  
  @item
! The variable @code{buffer-auto-save-file-format} has been renamed to
! @code{auto-save-file-format}, and is no longer a permanent local.
  
  @item
! The function @code{visited-file-modtime} now returns a cons, instead
! of a list of two integers.  The primitive @code{set-file-times} has
! been eliminated.
  
  @item
! The function @code{file-remote-p} is no longer available.
  
  @item
! When determining the filename extension, a leading dot in a filename
! is no longer ignored.  Thus, @file{.emacs} is considered to have
! extension @file{emacs}, rather than being extensionless.
  
  @item
! Emacs looks for special file handlers in a more efficient manner: it
! will choose the first matching handler in
! @code{file-name-handler-alist}, rather than trying to figure out which
! provides the closest match.
  
  @item
! The @code{predicate} argument for @code{read-file-name} has been
! removed, and so have the variables @code{read-file-name-function} and
! @code{read-file-name-completion-ignore-case}.  The function
! @code{read-directory-name} has also been removed.
  
  @item
! The functions @code{all-completions} and @code{try-completion} will no
! longer accept lists of strings or hash tables (it will still accept
! alists, obarrays, and functions.)  In addition, the function
! @code{test-completion} is no longer available.
  
  @item
! Arbitrary Lisp functions can no longer be recorded into
! @code{buffer-undo-list}.  As a consequence, @code{yank-undo-function}
! is obsolete, and has been removed.
  
  @item
! Emacs will never complain about commands that accumulate too much undo
! information, so you no longer have to worry about binding
! @code{buffer-undo-list} to @code{t} for such commands (though you may
! want to do that anyway, to avoid taking up unnecessary memory space.)
  
! @item
! Atomic change groups are no longer supported.
  
! @item
! The list returned by @code{(match-data t)} no longer records the
! buffer as a final element.
  
! @item
! The function @code{looking-back} has been removed, so we no longer
! have the benefit of hindsight.
  
  @item
! The variable @code{search-spaces-regexp} does not exist.  Spaces
! always stand for themselves in regular expression searches.
  
  @item
! The functions @code{skip-chars-forward} and @code{skip-chars-backward}
! no longer accepts character classes such as @samp{[:alpha:]}.  All
! characters are created equal.
  
  @item
! The @code{yank-handler} text property no longer has any meaning.
! Also, @code{yank-excluded-properties}, @code{insert-for-yank}, and
! @code{insert-buffer-substring-as-yank} have all been removed.
  
  @item
! The variable @code{char-property-alias-alist} has been deleted.
! Aliases are for functions, not for properties.
  
  @item
! The function @code{get-char-property-and-overlay} has been deleted.
! If you want the properties at a point, find the text properties at the
! point; then, find the overlays at the point, and find the properties
! on those overlays.
  
  @item
! Font Lock mode only manages @code{face} properties; you can't use
! font-lock keywords to specify arbitrary text properties for it to
! manage.  After all, it is called Font Lock mode, not Arbitrary
! Properties Lock mode.
  
  @item
! The arguments to @code{remove-overlays} are no longer optional.
  
  @item
! In @code{replace-match}, the replacement text now inherits properties
! from the surrounding text.
  
  @item
! @code{mode-line-format} no longer supports the @code{:propertize},
! @code{%i}, and @code{%I} constructs.  The function
! @code{format-mode-line} has been removed.
  
  @item
! The functions @code{window-inside-edges} and @code{window-body-height}
! have been removed.  You should do the relevant calculations yourself,
! starting with @code{window-width} and @code{window-height}.
  
  @item
! The functions @code{window-pixel-edges} and
! @code{window-inside-pixel-edges} have been removed.  We prefer to
! think in terms of lines and columns, not pixel coordinates.  (Sometime
! in the distant past, we will do away with graphical terminals
! entirely, in favor of text terminals.)  For similar reasons, the
! functions @code{posn-at-point}, @code{posn-at-x-y}, and
! @code{pos-visible-in-window-p} have been removed.
  
  @item
! The macro @code{save-selected-window} only saves the selected window
! of the selected frame, so don't try selecting windows in other frames.
  
  @item
! The function @code{minibufferp} is no longer available.
  
  @item
! The function @code{modify-all-frames-parameters} has been removed (we
! always suspected the name was ungrammatical, anyway.)
! 
! @item
! The @code{line-spacing} variable no longer accepts float values.
! 
! @item
! The function @code{tool-bar-local-item-from-menu} has been deleted.
! If you need to make an entry in the tool bar, you can still use
! @code{tool-bar-add-item-from-menu}, but that modifies the binding in
! the source keymap instead of copying it into the local keymap.
! 
! @item
! When determining the major mode, the file name takes precedence over
! the interpreter magic line.  The variable @code{magic-mode-alist},
! which associates certain buffer beginnings with major modes, has been
! eliminated.
! 
! @item
! The hook @code{after-change-major-mode-hook} is not defined, and
! neither are @code{run-mode-hooks} and @code{delay-mode-hooks}.
! 
! @item
! The variable @code{minor-mode-list} has been removed.
! 
! @item
! @code{define-derived-mode} will copy abbrevs from the parent mode's
! abbrev table, instead of creating a new, empty abbrev table.
! 
! @item
! There are no ``system'' abbrevs.  When the user saves into the abbrevs
! file, all abbrevs are saved.
! 
! @item
! The Warnings facility has been removed.  Just use @code{error}.
! 
! @item
! Several hook variables have been renamed to flout the Emacs naming
! conventions.  We feel that consistency is boring, and having
! non-standard hook names encourages users to check the documentation
! before using a hook.  For instance, the normal hook
! @code{find-file-hook} has been renamed to @code{find-file-hooks}, and
! the abnormal hook @code{delete-frame-functions} has been renamed to
! @code{delete-frame-hook}.
! 
! @item
! The function @code{symbol-file} does not exist.  If you want to know
! which file defined a function or variable, try grepping for it.
! 
! @item
! The variable @code{load-history} records function definitions just
! like variable definitions, instead of indicating which functions were
! previously autoloaded.
! 
! @item
! There is a new variable, @code{recursive-load-depth-limit}, which
! specifies how many times files can recursively load themselves; it is
! 50 by default, and nil means infinity.  Previously, Emacs signalled an
! error after just 3 recursive loads, which was boring.
! 
! @item
! Byte-compiler warnings and error messages will leave out the line and
! character positions, in order to exercise your debugging skills.
! Also, there is no @code{with-no-warnings} macro---instead of
! suppressing compiler warnings, fix your code to avoid them!
! 
! @item
! The function @code{unsafep} has been removed.
! 
! @item
! File local variables can now specify a string with text properties.
! Since arbitrary Lisp expressions can be embedded in text properties,
! this can provide you with a great deal of flexibility and power.  On
! the other hand, @code{safe-local-eval-forms} and the
! @code{safe-local-eval-function} function property have no special
  meaning.
  
  @item
! You can no longer use @code{char-displayable-p} to test if Emacs can
! display a certain character.
! 
! @item
! The function @code{string-to-multibyte} is no longer available.
! 
! @item
! The @code{translation-table-for-input} translation table has been
! removed.  Also, translation hash tables are no longer available, so we
! don't need the functions @code{lookup-character} and
! @code{lookup-integer}.
! 
! @item
! The @code{table} argument to @code{translate-region} can no longer be
! a char-table; it has to be a string.
! 
! @item
! The functions @code{merge-coding-systems} and
! @code{decode-coding-inserted-region}, and the variable
! @code{auto-coding-functions}, have been deleted.  The
! @code{mime-text-unsuitable} coding system property no longer has any
! special meaning.
  
  @item
! If pure storage overflows while dumping, Emacs won't tell you how much
! additional pure storage it needs.  Try adding in increments of 20000,
! until you have enough.
  
  @item
! The variables @code{gc-elapsed}, @code{gcs-done}, and
! @code{post-gc-hook} have been garbage-collected.
  @end itemize
  
  @ignore




reply via email to

[Prev in Thread] Current Thread [Next in Thread]