A Emacs 29 Antinews
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 Emacs 30.2 features.
- Mouse wheel events once again follow the platform and window-system conventions: sometimes they are
wheel-up/downand sometimesmouse-4/5/6/7. Lisp programs which use these should once again be aware of the conventions in effect and behave accordingly. - The command
describe-functionno 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. - 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.
- 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?
- 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
minibuffer-regexp-modewas removed. Regular expressions are just strings, so no fancy mode should be needed for editing them. - 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 are back to interpreting
\xwithout any following hex digits as character code zero (NUL), as it always was in Emacs. The savings in typing due to this alone are enough to justify this simplification. - 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.
- Fancy sorting-related facilities, like the
value<function and keyword arguments forsort, were deleted as too complex. The basicsortfunction should all that's needed in the years to go. - Features related to the inheritance graph of major modes were deemed unnecessary and thus were dropped. This includes
provided-mode-derived-p,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. - 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.
- 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.
- We deleted some fancy
declareforms for functions, such asftype. Emacs Lisp is not a string-typed language, which makes these declarations anathema. The typesclosureandinterpreted-functionare gone for the same reason: no need to distinguish types of Lisp functions. - The byte compiler stopped issuing warnings about practices some purists consider questionable. This includes warnings about missing
lexical-bindingcookies, empty bodies of special forms and macros, comparison with literals,condition-casewithout 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! - The
obarraytype 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. - 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.