]> code.delx.au - gnu-emacs/blobdiff - doc/lispref/anti.texi
Update copyright year to 2015
[gnu-emacs] / doc / lispref / anti.texi
index bb1e42c930951ad6ffb4277cf2ed9982ba3d92cb..c1773aa6e9bf97feb21d17c8bb0ef680c51c4502 100644 (file)
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2002-201 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2002-2015 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, Packaging, Top
-@appendix Emacs 22 Antinews
-@c Update the elisp.texi, vol1.texi, vol2.texi Antinews menu entries
-@c with the above version number.
+@node Antinews
+@appendix Emacs 23 Antinews
+@c Update the elisp.texi Antinews menu entry with the above version number.
 
 For those users who live backwards in time, here is information about
-downgrading to Emacs version 22.3.  We hope you will enjoy the greater
+downgrading to Emacs version 23.4.  We hope you will enjoy the greater
 simplicity that results from the absence of many Emacs @value{EMACSVER}
 features.
 
-@section Old Lisp Features in Emacs 22
+@section Old Lisp Features in Emacs 23
 
 @itemize @bullet
 @item
-The internal character representation used by Emacs is not longer
-based on Unicode.  In this representation, called @code{emacs-mule},
-each character belongs to one and only one script.  Emacs makes no
-attempt to distinguish between ``similar'' characters occurring in
-different scripts.
+Support for lexical scoping has been removed; all variables are
+dynamically scoped.  The @code{lexical-binding} variable has been
+removed, and so has the @var{lexical} argument to @code{eval}.  The
+@code{defvar} and @code{defconst} forms no longer mark variables as
+dynamic, since all variables are dynamic.
 
-@item
-The @code{^} interactive spec code, the function
-@code{handle-shift-selection}, and the variable
-@code{this-command-keys-shift-translated} have all been removed.
-Shift-translated keys are no longer treated specially, making Emacs'
-handling of keybindings much more consistent.
-
-@item
-Temporarily-active regions are not created by giving the variable
-@code{transient-mark-mode} values of the form @code{(only
-. @var{oldvar})}.  We instead use a more complicated scheme:
-setting @code{transient-mark-mode} to @code{only} enables Transient
-Mark mode for the following command only, during which the value of
-@code{transient-mark-mode} is set to @code{identity}; if it is still
-@code{identity} at the end of the command, Transient Mark mode is
-disabled.
-
-@item
-Many minibuffer functions, such as @code{read-file-name} and
-@code{minibuffer-complete}, have been rewritten in C for greater
-speed.  The completion code has been considerably simplified; the
-completion style can no longer be changed via
-@code{completion-styles-alist}, and @code{completing-read} no longer
-recognizes the special values @code{confirm-only} and
-@code{confirm-after-completion} for its @var{require-match} argument.
-
-@item
-Emacs no longer supports explicitly-numbered groups in regular
-expressions.
+Having only dynamic binding follows the spirit of Emacs extensibility,
+for it allows any Emacs code to access any defined variable with a
+minimum of fuss.  But @xref{Dynamic Binding Tips}, for tips to avoid
+making your programs hard to understand.
 
 @item
-The @code{permanent-local-hook} function property has no special
-meaning.
+Calling a minor mode function from Lisp with a @code{nil} or omitted argument
+does not enable the minor mode unconditionally; instead, it toggles
+the minor mode---which is the straightforward thing to do, since that
+is the behavior when invoked interactively.  One downside is that it
+is more troublesome to enable minor modes from hooks; you have to do
+something like
 
-@item
-The @code{functionp} function now returns @code{t} for special forms.
+@example
+(add-hook 'foo-hook (lambda () (bar-mode 1)))
+@end example
 
-@item
-The @code{interactive-form} symbol property has no special meaning.
-Once you supply a function with an interactive form, the only way to
-change it is to redefine the function.
+@noindent
+or define @code{turn-on-bar-mode} and call that from the hook.
 
 @item
-The @code{ignore-errors} macro has been moved into the @code{cl}
-package.
+The @code{prog-mode} dummy major mode has been removed.  Instead of
+using it as a crutch to meet programming mode conventions, you should
+explicitly ensure that your mode follows those conventions.
+@xref{Major Mode Conventions}.
 
 @item
-Variables can now be both buffer-local and frame-local; buffer-local
-bindings take precedence over frame-local bindings.
+Emacs no longer supports bidirectional display and editing.  Since
+there is no need to worry about the insertion of right-to-left text
+messing up how lines and paragraphs are displayed, the function
+@code{bidi-string-mark-left-to-right} has been removed; so have many
+other functions and variables related to bidirectional display.
+Unicode directionality characters like @code{U+200E} ("left-to-right
+mark") have no special effect on display.
 
 @item
-Faces can no longer be remapped.
+Emacs windows now have most of their internal state hidden from Lisp.
+Internal windows are no longer visible to Lisp; functions such as
+@code{window-parent}, window parameters related to window arrangement,
+and window-local buffer lists have all been removed.  Functions for
+resizing windows can delete windows if they become too small.
 
-@item
-Lisp programs now specify fonts by their names, which are strings
-following the XLFD (X logical font descriptor) format.  Fonts are no
-longer represented using a special set of ``font'' data types.  The
-various functions that act on these data types, such as @code{fontp},
-@code{font-spec}, and @code{list-fonts}, have all been deleted.
+The ``action function'' feature for controlling buffer display has
+been removed, including @code{display-buffer-overriding-action} and
+related variables, as well as the @var{action} argument to
+@code{display-buffer} and other functions.  The way to
+programmatically control how Emacs chooses a window to display a
+buffer is to bind the right combination of @code{pop-up-frames} and
+other variables.
 
 @item
-Emacs does not recognize the @code{FontBackend} X resource and the
-@code{font-backend} frame parameter.  On the X Window System, fonts
-are always drawn using the X core font driver.
+The standard completion interface has been simplified, eliminating the
+@code{completion-extra-properties} variable, the @code{metadata}
+action flag for completion functions, and the concept of
+``completion categories''.  Lisp programmers may now find the choice
+of methods for tuning completion less bewildering, but if a package
+finds the streamlined interface insufficient for its needs, it must
+implement its own specialized completion feature.
 
 @item
-Display terminals are no longer represented using a ``terminal'' data
-type; this is not necessary, because we have removed the ability to
-display on graphical and text-only terminals simultaneously.  For the
-same reason, the @code{window-system} variable is no longer
-frame-local, and the @code{window-system} function has been removed.
+@code{copy-directory} now behaves the same whether or not the
+destination is an existing directory: if the destination exists, the
+@emph{contents} of the first directory are copied into it (with
+subdirectories handled recursively), rather than copying the first
+directory into a subdirectory.
 
 @item
-The functions @code{list-system-processes} and
-@code{process-attributes} have been removed.  To get information about
-system processes, call an external program, such as @command{ps}.
+The @var{trash} arguments for @code{delete-file} and
+@code{delete-directory} have been removed.  The variable
+@code{delete-by-moving-to-trash} must now be used with care; whenever
+it is non-@code{nil}, all calls to @code{delete-file} or
+@code{delete-directory} use the trash.
 
 @item
-The function @code{locate-user-emacs-file} and the variable
-@code{user-emacs-directory} have been removed.  Instead, use
-hard-coded values pointing to @file{~/.emacs.d}.
+Because Emacs no longer supports SELinux file contexts, the
+@var{preserve-selinux-context} argument to @code{copy-file} has been
+removed.  The return value of @code{backup-buffer} no longer has an
+entry for the SELinux file context.
 
 @item
-@code{vertical-motion} can no longer be told to move to a specific
-column; it always puts point on the first column of a line.
+For mouse click input events in the text area, the Y pixel coordinate
+in the @var{position} list (@pxref{Click Events}) now counts from the
+top of the header line, if there is one, rather than the top of the
+text area.
 
 @item
-Windows no longer have parameters.
+Bindings in menu keymaps (@pxref{Format of Keymaps}) now sometimes get
+an additional @var{cache} entry in their definitions, like this:
 
-@item
-The @code{display-buffer} function has been rewritten in C.  Its
-window-splitting heuristics are a little less sophisticated, and a
-little less documented.  Window-splitting is handled internally,
-instead of using @code{split-window-preferred-function} (which has
-been removed).  Windows are never split horizontally; the variable
-@code{split-width-threshold} has been removed.
+@example
+(@var{type} @var{item-name} @var{cache} . @var{binding})
+@end example
 
-@item
-The @code{mode-name} variable now accepts only string values, and
-cannot take the form of a mode-line construct.
-
-@item
-The behavior of @code{map-char-table} has changed.  It calls the
-mapping function for every single character in the table, instead of
-using cons cells to represent contiguous character code ranges.
+@noindent
+The @var{cache} entry is used internally by Emacs to record equivalent
+keyboard key sequences for invoking the same command; Lisp programs
+should never use it.
+@c Not really NEWS-worthy then...
 
 @item
-Several keymaps have been eliminated: @code{input-decode-map},
-@code{local-function-key-map}, @code{search-map},
-@code{multi-query-replace-map}, and
-@code{minibuffer-local-shell-command-map}.
+The @code{gnutls} library has been removed, and the function
+@code{open-network-stream} correspondingly simplified.
+Lisp programs that want an encrypted network connection must now call
+external utilities such as @command{starttls} or @command{gnutls-cli}.
 
 @item
-Many functions have been removed, including: @code{buffer-swap-text},
-@code{emacs-init-time}, @code{emacs-uptime}, @code{use-region-p},
-@code{region-active-p}, @code{start-file-process},
-@code{process-lines}, @code{image-refresh},
-@code{match-substitute-replacement}, @code{word-search-forward-lax},
-and @code{word-search-backward-lax}.
+Tool bars can no longer display separators, which frees up several
+pixels of space on each graphical frame.
 
 @item
-Many variables have been removed, including @code{read-circle},
-@code{after-init-time} and @code{before-init-time},
-@code{generate-autoload-cookie}, @code{file-local-variables-alist},
-@code{replace-search-function} and @code{replace-re-search-function},
-@code{inhibit-changing-match-data}, @code{wrap-prefix}, and
-@code{line-prefix},
+As part of the ongoing quest for simplicity, many other functions and
+variables have been eliminated.
 @end itemize