Update Antinews in ELisp manual
* doc/lispref/anti.texi (Antinews): Update for Emacs 25.1. * doc/lispref/elisp.texi (Top): Update the main menu entry for Antinews.
This commit is contained in:
parent
ea0f750e5c
commit
0ad74106fa
2 changed files with 72 additions and 94 deletions
|
@ -6,132 +6,110 @@
|
|||
@c This node must have no pointers.
|
||||
|
||||
@node Antinews
|
||||
@appendix Emacs 23 Antinews
|
||||
@appendix Emacs 24 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 23.4. We hope you will enjoy the greater
|
||||
downgrading to Emacs version 24.5. 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 23
|
||||
@section Old Lisp Features in Emacs 24
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
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.
|
||||
|
||||
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.
|
||||
The requirement that @code{setq} and @code{setf} must be called with
|
||||
an even number of arguments has been removed. You can now call them
|
||||
with an odd number of arguments, and Emacs will helpfully supply a
|
||||
@code{nil} for the missing one. Simplicity rules!
|
||||
|
||||
@item
|
||||
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
|
||||
|
||||
@example
|
||||
(add-hook 'foo-hook (lambda () (bar-mode 1)))
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
or define @code{turn-on-bar-mode} and call that from the hook.
|
||||
@kbd{M-x shell} and @kbd{M-x compile} set the @env{EMACS} environment
|
||||
variable, as they should, to indicate that the subprocess is run by
|
||||
Emacs. This is so packages that took years to learn how to work
|
||||
around that setting could continue using their code to that effect.
|
||||
|
||||
@item
|
||||
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}.
|
||||
The @code{save-excursion} form saves and restores the mark, as
|
||||
expected. No more need for the new @code{save-mark-and-excursion},
|
||||
which has been deleted.
|
||||
|
||||
@item
|
||||
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.
|
||||
We have removed the @code{text-quoting-style} variable and the
|
||||
associated functionality that translates quote characters in messages
|
||||
displayed to the user and in help buffers. Emacs now shows exactly
|
||||
the same quote characters as you wrote in your code! Likewise,
|
||||
@code{substitute-command-keys} leaves the quote characters alone. As
|
||||
you move back in time, Unicode support becomes less and less
|
||||
important, so no need to display those fancy new quotes the Unicode
|
||||
Standard invented.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
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.
|
||||
Regular expressions have been simplified by removing support for
|
||||
Unicode character properties in regexp classes. As result,
|
||||
@code{[:alpha:]} and @code{[:alnum:]} will match any character with a
|
||||
word syntax, and @code{[:graph:]} and @code{[:print:]} will match any
|
||||
multibyte character, including surrogates and unassigned codepoints.
|
||||
Once again, this is in line with diminishing importance of Unicode as
|
||||
you move back in time.
|
||||
|
||||
@item
|
||||
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.
|
||||
Evaluating @samp{(/ @var{n})} will now yield @var{n}. We have
|
||||
realized that interpreting that as in Common Lisp was a bad mistake
|
||||
that needed to be corrected.
|
||||
|
||||
@item
|
||||
@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.
|
||||
The @code{pcase} form was significantly simplified by removing the
|
||||
UPatterns @code{quote} and @code{app}. To further simplify this
|
||||
facility, we've removed @code{pcase-defmacro}, since we found no need
|
||||
for letting Lisp programs define new UPatterns.
|
||||
|
||||
@item
|
||||
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.
|
||||
We've removed the text properties @code{cursor-intangible} and
|
||||
@code{cursor-sensor-functions}, replacing them by the much simpler
|
||||
@code{intangible}, @code{point-entered}, and @code{point-left}
|
||||
properties. The latter are implemented on a much lower level, and
|
||||
therefore are better integrated with user expectations. For similar
|
||||
reasons, @code{cursor-intangible-mode} and @code{cursor-sensor-mode}
|
||||
were removed; use the hook variable @code{inhibit-point-motion-hooks}
|
||||
which is no longer obsolete.
|
||||
|
||||
@item
|
||||
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.
|
||||
Process creation and management functions were significantly improved
|
||||
and simplified by removing @code{make-process} and the @code{pipe}
|
||||
connection type. Redirecting @code{stderr} of a subprocess should be
|
||||
done with shell facilities, not by Emacs.
|
||||
|
||||
@item
|
||||
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.
|
||||
We decided that shutting up informative messages is bad for user
|
||||
interaction, so we've removed the @code{inhibit-message} variable
|
||||
which could be used to that effect.
|
||||
|
||||
@item
|
||||
Bindings in menu keymaps (@pxref{Format of Keymaps}) now sometimes get
|
||||
an additional @var{cache} entry in their definitions, like this:
|
||||
|
||||
@example
|
||||
(@var{type} @var{item-name} @var{cache} . @var{binding})
|
||||
@end example
|
||||
|
||||
@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...
|
||||
Support for generators and for finalizers has been removed, as we
|
||||
found no real need for these facilities.
|
||||
|
||||
@item
|
||||
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}.
|
||||
Due to excessive complexity and the diminishing need for Unicode
|
||||
support, the functions @code{string-collate-lessp} and
|
||||
@code{string-collate-equalp} were removed. Their locale-independent
|
||||
counterparts @code{string-lessp} and @code{string-equal} are so much
|
||||
more simple and yield predictable results that we don't see any
|
||||
situation where the locale-dependent collation could be useful in
|
||||
Emacs. As result, the @file{ls-lisp.el} package sorts files in a
|
||||
locale-independent manner.
|
||||
|
||||
@item
|
||||
Tool bars can no longer display separators, which frees up several
|
||||
pixels of space on each graphical frame.
|
||||
In preparation for removal in some past version of Emacs of the
|
||||
bidirectional editing support, we started by deleting two functions
|
||||
@code{bidi-find-overridden-directionality} and
|
||||
@code{buffer-substring-with-bidi-context}.
|
||||
|
||||
@item
|
||||
Time conversion functions, such as @code{current-time-string}, no
|
||||
longer accept an optional @var{zone} argument. If you need to change
|
||||
the current time zone (why?), do that explicitly with
|
||||
@code{set-time-zone-rule}.
|
||||
|
||||
@item
|
||||
As part of the ongoing quest for simplicity, many other functions and
|
||||
|
|
|
@ -228,7 +228,7 @@ To view this manual in other formats, click
|
|||
|
||||
Appendices
|
||||
|
||||
* Antinews:: Info for users downgrading to Emacs 23.
|
||||
* Antinews:: Info for users downgrading to Emacs 24.
|
||||
* GNU Free Documentation License:: The license for this documentation.
|
||||
* GPL:: Conditions for copying and changing GNU Emacs.
|
||||
* Tips:: Advice and coding conventions for Emacs Lisp.
|
||||
|
|
Loading…
Add table
Reference in a new issue