X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/51751aa26f9935609630f04e781a954b54ecc82e..7e09ef09a479731d01b1ca46e94ddadd73ac98e3:/doc/lispref/anti.texi diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index bb1e42c930..c1773aa6e9 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -1,155 +1,139 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2002-2011 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