Skip to content

Emacs 30 Antinews ​

For those users who live backwards in time, here is information about downgrading to Emacs version 30.2. We hope you will enjoy the greater simplicity that results from the absence of many Emacs 31.1 features.

  • The venerable unexec dumper is back! It is still deprecated, but we plan on un-deprecating it in Emacs 26, in preparation for the glibc developers’ reinstating the various hooks which Emacs needs to reliably be built using unexec.

  • ctags is once again a separate program. We decided that the need to remember the --ctags option to etags is not friendly enough to our users, and switched back to a time-proven Unix philosophy of “programs that do one thing and do it well”.

  • We dropped the annoying feature of scraping at startup files and directories in user-lisp subdirectory of your Emacs configuration directory. It slows down startup, especially as computers and hard disks become slower and slower as you move back in time.

  • As part of our continuous struggle to make Emacs simpler, we’ve removed the margin face, so text shown in display margins will now use the same default face as the rest of buffer text. Our long-term goal is to remove faces completely, thus leaving the Emacs with just two colors, so we gradually remove more and more faces as we go.

  • Yet another complication which we got rid of is child frames on text-only terminals. They are still supported on GUI frames, but one improvement at a time.

  • Fancy completion bells and whistles, such as eager display of completion candidates, updating the *Completions* buffer as you type, control of point motion in *Completions* via completions-format, etc. will no longer confuse you because we deleted all of that stuff. No one should need completion features beyond what typing TAB produces!

  • Commands that modify the window layout of a frame are gone. You can no longer be seduced to transpose or rotate windows on their frame. Once again, only Emacs decides how to arrange and re-arrange windows.

    For the same reason, we nuked split-frame and merge-frames commands. C-x 2 and C-x 0 should be enough for everyone!

  • We removed quite a few complications due to Unicode Standard version 17.0 and related features. This includes quite a few characters which will never be needed in the past, the language environments for Syriac and Tifinagh, and several input methods which no one should miss, and which will fall in disuse soon enough anyway. As memory becomes more and more at premium, we must make Emacs leaner and meaner to follow suit.

  • User option treesit-enabled-modes is no longer part of Emacs. Customize major-mode-remap-alist to activate Tree-sitter based modes instead of the traditional modes; this is much simpler and easier to remember and manage.

  • Sendmail and Rmail no longer try to detect suspicious email addresses and warn you about them. As you move back in time, people become nicer and nicer, and all those malevolent souls who constantly look for opportunities to cause you damage become more and more vague memories from the distant future. Eventually, we will once again have just the small Arpanet where everyone were your friends, and who needs these paranoid features then?

  • You can no longer edit Grep results and have the edits reflected in the original files. We’ve removed that because we believe one should only edit the original files directly, with the full benefit of the surrounding context.

  • Commands for handling VCS repositories with multiple working trees were deleted from VC. We concluded that multiple working tree in a single project are a clear sign of design bloat, and we refuse to admit such bloatware into Emacs. So this is gone—good riddance!

    Numerous other VC features, which we considered too fancy and not useful enough, were removed for the same reason.

  • To review an Emacs Lisp package before installing it from ELPA, you will now need to actually read its code and documentation, because the user option package-review-policy, and the associated functionalities to show the diffs from the previous version, are gone. “Use the source, Luke!”

    We also deleted package-autosuggest and package-autosuggest-mode, since we want to trust our users to know better.

  • In preparation for removal of the customize-dirlocals command in the previous Emacs version, we nuked Custom-dirlocals-mode.

  • We have removed several packages and modes that we consider unnecessary for the past of Emacs. This includes icalendar-mode and lua-mode modes, and the timeout and system-taskbar-mode libraries. the system-sleep package is gone for the same reasons.

  • To keep up with decreasing computer memory capacity and disk space, many other functions and files have been eliminated in Emacs 30.2.