mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2026-09-10 07:46:51 -04:00
; Update "Antinews" in ELisp manual
* doc/lispref/elisp.texi (Top): * doc/lispref/anti.texi (Antinews): Update for Emacs 31.
This commit is contained in:
parent
1988e330c1
commit
0914969e0e
|
|
@ -6,117 +6,133 @@
|
|||
@c This node must have no pointers.
|
||||
|
||||
@node Antinews
|
||||
@appendix Emacs 29 Antinews
|
||||
@appendix Emacs 30 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 29.4. We hope you will enjoy the greater
|
||||
downgrading to Emacs version 30.2. We hope you will enjoy the greater
|
||||
simplicity that results from the absence of many @w{Emacs
|
||||
@value{EMACSVER}} features.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Mouse wheel events once again follow the platform and window-system
|
||||
conventions: sometimes they are @code{wheel-up/down} and sometimes
|
||||
@code{mouse-4/5/6/7}. Lisp programs which use these should once again
|
||||
be aware of the conventions in effect and behave accordingly.
|
||||
Lisp strings are now mutable. You can use @code{aset} on unibyte
|
||||
strings to replace single bytes by multibyte characters, and @code{aset}
|
||||
on multibyte strings can replace any character by any other character,
|
||||
regardless if they are ASCII or multibyte non-ASCII@. We feel those
|
||||
restrictions are un-Emacsy and get in the way of doing all kinds of
|
||||
exciting things with strings.
|
||||
|
||||
@item
|
||||
The command @code{describe-function} no longer distracts you by showing
|
||||
unnecessary details like the type of the function's object. Emacs
|
||||
hackers always know whether a function is a primitive, a native-compiled
|
||||
Lisp function, or any other kind. Stating the obvious simply wastes the
|
||||
precious screen estate; as you move into the past, and the typical
|
||||
dimensions of the screen become smaller, that waste is less and less
|
||||
justified. So we made the waste smaller.
|
||||
Buffers that are current to a non-main thread cannot be killed by other
|
||||
threads. We decided to get rid of the numerous complications which were
|
||||
needed to allow killing such buffers. If your program needs to kill
|
||||
such buffers, you will need to use a disciplined approach of first
|
||||
making some other buffer current to the thread.
|
||||
|
||||
@item
|
||||
The support for styled underline in face attribute was dropped. The
|
||||
simple underline should be enough; anything else is just code bloat and
|
||||
creeping featurism. Colorful underlines on TTY frames are no longer
|
||||
supported for the same reason.
|
||||
We removed the early detection of faces that inherit from themselves.
|
||||
As you move back in time, Emacs Lisp programmers become more and more
|
||||
proficient, so disallowing such tricks feels wrong. Those who don't
|
||||
know well enough what they are doing will be amply punished by having
|
||||
their Lisp programs barf at display time or even wedge Emacs cold.
|
||||
|
||||
@item
|
||||
IELM stopped recording its input history. You will no longer be annoyed
|
||||
by inputs from your past sessions; each session starts with a clean
|
||||
slate. What can be simpler and easier to remember?
|
||||
Calling @code{debug} in batch mode now kills Emacs. We decided that
|
||||
there's no sense in continuing a batch session that entered the
|
||||
debugger: who and how will debug it, anyway?
|
||||
|
||||
For the same reason, @kbd{C-c} in batch mode now always kills Emacs, it
|
||||
never quits.
|
||||
|
||||
@item
|
||||
You can no longer disable JavaScript in xwidget Webkit sessions. Since
|
||||
xwidgets are going away in one of the previous Emacs versions, we
|
||||
decided to make this one step in that direction and get rid of this
|
||||
complication.
|
||||
The functions that access and manipulate error descriptors were deleted.
|
||||
Functions like @code{error-type}, @code{error-slot-value} and others are
|
||||
useless bloat, since Lisp programs can simply access the data structure
|
||||
directly, as God intended!
|
||||
|
||||
@item
|
||||
The @code{minibuffer-regexp-mode} was removed. Regular expressions are
|
||||
just strings, so no fancy mode should be needed for editing them.
|
||||
We removed @code{frame-initial-p}, as its job can easily be done by
|
||||
testing several obscure variables and frame parameters.
|
||||
|
||||
@item
|
||||
We removed the Compat package. Forward compatibility for ELPA packages
|
||||
becomes less and less important as you move back through time, and soon
|
||||
enough ELPA will disappear entirely. We decided it was prudent to start
|
||||
preparing for that now.
|
||||
We've added the @code{redisplay-dont-pause} variable, so we could allow
|
||||
interrupting a runaway redisplay cycle in one of the past versions of
|
||||
Emacs.
|
||||
|
||||
@item
|
||||
We are back to interpreting @code{\x} without any following hex digits
|
||||
as character code zero (@acronym{NUL}), as it always was in Emacs. The
|
||||
savings in typing due to this alone are enough to justify this
|
||||
simplification.
|
||||
There's no longer a guarantee that all the digit characters will have
|
||||
the @code{digit} (@code{?6}) category. We feel that such silly
|
||||
consistency robs Lisp programmers of too much fun, whereby they should
|
||||
discover which digits have this category by trial-and-error.
|
||||
|
||||
For the same reason, not all characters belonging to the @code{symbol}
|
||||
script will have the @code{symbol} (@code{?5}) category.
|
||||
|
||||
@item
|
||||
To keep Emacs clean and elegant, we've removed the ability to show
|
||||
tooltips for fringe bitmaps. What important information cam be shown on
|
||||
the fringes, and why would it require tooltips to explain its purpose?
|
||||
We decided it isn't justified to keep this in past versions of Emacs.
|
||||
Lisp programs can now easily delete that daemon frame by calling
|
||||
@code{delete-frame}, as with any other frame. We decided there's no
|
||||
reason to make a special case for the daemon frames, especially as some
|
||||
past Emacs version will remove the daemon feature entirely.
|
||||
|
||||
@item
|
||||
Fancy sorting-related facilities, like the @code{value<} function and
|
||||
keyword arguments for @code{sort}, were deleted as too complex. The
|
||||
basic @code{sort} function should all that's needed in the years to go.
|
||||
Lisp files found on @code{load-path} are no longer cached. We intend to
|
||||
make the @code{load-path} list shorter and shorter as we move to
|
||||
previous versions of Emacs, so caching files is an unnecessary
|
||||
complication and bloat of precious memory.
|
||||
|
||||
@item
|
||||
Features related to the inheritance graph of major modes were deemed
|
||||
unnecessary and thus were dropped. This includes
|
||||
@code{provided-mode-derived-p}, @code{derived-mode-add-parents}, and
|
||||
others. We decided that untangling the mode inheritance relationships
|
||||
by hand facilitates more clear code and makes the intent evident.
|
||||
The annoying warning about the missing @code{lexical-binding} cookie
|
||||
when loading Lisp files was removed. This is one more step towards
|
||||
eventual elimination of lexical binding from Emacs in one of the past
|
||||
versions.
|
||||
|
||||
For the same reason, Lisp files loaded via the @option{-x} and
|
||||
@option{--script} command-line options no longer use lexical binding by
|
||||
default.
|
||||
|
||||
@item
|
||||
We removed unnecessary functionality for handling touch screen events,
|
||||
as touch screens gradually disappear from view as you move back in time.
|
||||
There's no need to keep obsolete these new inventions in the past.
|
||||
To keep Emacs clean and elegant, we deleted the @code{setopt-local}
|
||||
macro. This was one more useless bloat, since it is easy to do the same
|
||||
using @code{setq-local}, and avoids the annoying warnings about mismatch
|
||||
between the value and expected type defined by @code{defcustom}.
|
||||
|
||||
@item
|
||||
Various new functions and variables for moving and transposing sexps and
|
||||
for moving by program statements were dropped as unnecessary. The
|
||||
original commands that move by balanced expressions are more than
|
||||
enough.
|
||||
Pure storage is now part of Emacs, and is here to stay. The function
|
||||
@code{purecopy} really copies its argument to pure storage. This is a
|
||||
significant step towards making Emacs more memory-efficient on
|
||||
yesterday's computers, and more generally towards using @code{unexec} as
|
||||
the only way of dumping Emacs.
|
||||
|
||||
@item
|
||||
We deleted some fancy @code{declare} forms for functions, such as
|
||||
@code{ftype}. Emacs Lisp is not a string-typed language, which makes
|
||||
these declarations anathema. The types @code{closure} and
|
||||
@code{interpreted-function} are gone for the same reason: no need to
|
||||
distinguish types of Lisp functions.
|
||||
The @code{cond*} macro was removed. You can still use @code{pcase}
|
||||
instead, but better start using the venerable @code{cond} exclusively,
|
||||
as @code{pcase} and its ilk will disappear from Emacs in the near past.
|
||||
No one should need these fancy and hard-to-read constructs with their
|
||||
obscure semantics and myriads of backticks! The original control-flow
|
||||
special forms of the pristine Emacs Lisp are more than enough.
|
||||
|
||||
@item
|
||||
The byte compiler stopped issuing warnings about practices some purists
|
||||
consider questionable. This includes warnings about missing
|
||||
@code{lexical-binding} cookies, empty bodies of special forms and
|
||||
macros, comparison with literals, @code{condition-case} without
|
||||
handlers, mutation of constants, and some others. As time moves into
|
||||
the past, the typical Emacs hacker knows best what's correct code and
|
||||
what isn't, and thus these warnings become useless annoyances. Good
|
||||
riddance!
|
||||
Xref commands automatically suggest visiting a tags table. This is to
|
||||
enable symbol completion,and generally move towards removing all
|
||||
backends except the @code{etags} one in some past Emacs version.
|
||||
|
||||
@item
|
||||
The @code{obarray} type is gone. Obarrays are back to their original
|
||||
representation as vectors. Each removed Lisp data type makes Emacs
|
||||
simpler and easier to use, so this is a welcome deletion.
|
||||
Support for SHA-3 message digests was removed from the function
|
||||
@code{secure-hash}. We plan to continue removing algorithms from this
|
||||
function, so as to keep Emacs as lean as possible. Eventually, just one
|
||||
kind of digest should be enough for everyone!
|
||||
|
||||
@item
|
||||
We deleted unnecessary functions like @code{incf}, @code{decf},
|
||||
@code{plusp}, @code{minusp}, @code{oddp}, and @code{evenp}. Use the
|
||||
corresponding functions from @file{cl-lib} or just write these trivial
|
||||
functions when you need them. For the same reason, @code{all},
|
||||
@code{any}, @code{drop-while}, and @code{take-while} are also gone.
|
||||
|
||||
@item
|
||||
As part of the ongoing quest for simplicity, many other functions and
|
||||
variables have been eliminated. Other functions and variables, that
|
||||
were declared obsolete since Emacs 24, have been added back, in
|
||||
preparation for releasing Emacs 24 in some distant past.
|
||||
were declared obsolete since Emacs 25, have been added back, in
|
||||
preparation for releasing Emacs 25 in some distant past.
|
||||
@end itemize
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ To view this manual in other formats, click
|
|||
|
||||
Appendices
|
||||
|
||||
* Antinews:: Info for users downgrading to Emacs 29.
|
||||
* Antinews:: Info for users downgrading to Emacs 30.
|
||||
* 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…
Reference in a new issue