@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1999, 2002--2025 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.

@c This node must have no pointers.

@node Antinews
@appendix Emacs 29 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
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.

@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.

@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.

@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?

@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.

@item
The @code{minibuffer-regexp-mode} was removed.  Regular expressions are
just strings, so no fancy mode should be needed for editing them.

@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.

@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.

@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.

@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.

@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.

@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.

@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.

@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.

@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!

@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.

@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.
@end itemize
