For those users who live backwards in time, here is information
about downgrading to Emacs version 24.5. We hope you will enjoy the
greater simplicity that results from the absence of many Emacs
Support for Cairo drawing has been removed. On GNU and Unix systems,
you now have only one drawing engine—the venerable X Window system.
No need to procrastinate on the dilemma whether you do or don’t want
the new shiny Cairo thing. Hail, simplicity!
Emacs still works on SGI IRIX systems. If you live backwards in time,
this is actually a bonus, as IRIX systems will become more and more
popular as you move farther back in time.
Support for dynamically loaded modules has been removed. You get to
use only the trusted Emacs codebase, with no additions. Those
external modules written by some J.R. Hacker cannot be trusted anyway.
We have greatly simplified the Emacs features which access the network
by removing the Network Security Manager. No more annoying prompts
about trusting this or that site or page—you asked for it, you get
it, no questions asked! You, the user, are now in charge of any
security issues related to sites whose certificates expired or didn’t
exist in the first place. Giving the user the utmost freedom was and
always will be the most important goal of Emacs development. We keep
that goal even as we develop Emacs back in time.
We made the output of C-h l much simpler and easier to grasp by
removing the names of commands run by the recorded keystrokes. True
Emacs lovers know their bindings by heart anyway, so why waste
precious screen estate on that which is well known?
Selection- and clipboard-related commands and variables got their
historical names back. It’s now the definitive
x-select-enable-clipboard again instead of the vague
select-enable-clipboard, and all those gui-select-text,
gui-get-primary-selection, etc. got their x-* names
back. (What’s a “GUI”, anyway?) The only true window system with
selections is the X Window system, so we stopped pretending that other
platforms have anything similar to that. You now know when you invoke
a command that accesses X.
Passwords are no longer hidden when typed in -batch mode. It
was a misfeature to have it not shown in the first place: who can type
without seeing what they type? We couldn’t convince the users of GUI
sessions to give up hiding the password, so we at least made it
visible in batch mode, which is something every veteran Emacs user
uses all the time. Stay tuned for un-hiding the password in GUI
sessions as well as we downgrade progressively to previous Emacs
The nuisance with Unicode characters popping up all over the place has
been amply dealt with. We’ve removed C-x 8 shorthands for
characters such as ‘, ’, “, ”, €, ≤, and many others; as a nice
benefit, this removes many useless entries at the beginning of the
C-h b output. The electric-quote-mode has been deleted,
so there’s only the one true quoting method now—using the
plain-ASCII quote characters. And if that’s not enough, the
doc strings and other messages show text quoted `like this'
as they were written, instead of arbitrarily replacing them
with Unicode “curved quote” characters ‘like this’. The
text-quoting-style variable becomes therefore unneeded and was
removed. As result, text produced by Emacs can be sent to those
venerable teletypes again, yeah!
For the same reasons, the character classes [:alpha:] and
[:alnum:] again match any word-constituent character, and
[:graph:] and [:print:] match every multibyte character.
Confusing use of Unicode character properties is gone.
I-search and query-replace no longer try to confuse you by using the
“character-folding” magic. They will no longer find any characters
you didn’t actually type, like find ⓐ when you actually typed
a. Users who want to find some fancy character will have to
type it explicitly.
The desktop.el package no longer records window and frame
configuration, and doesn’t attempt to restore them. You now have back
your freedom of re-arranging your windows and frames anew each time
you restore a session. This made the new backward-incompatible format
of the .emacs.desktop file unnecessary, so the format was
reverted back to what it was before Emacs 25. You can now again use
the desktop file with all the previous versions of Emacs.
We have reworked the Prettify Symbols mode to support only the default
prettify-symbols-compose-predicate. No need to consider
whether your major or minor mode needs its own prettifications; just
use what came with Emacs. We also removed the
prettify-symbols-unprettify-at-point option: once prettified,
always prettified! These changes make the Prettify Symbols mode quite
a lot simpler and easier to use.
Support for nifty new features of xterm, such as access to the X
selection and the clipboard, the “bracketed paste mode”, and other
advanced capabilities has been removed. When you kill text in an
xterm Emacs session, that text is only saved in the Emacs kill ring,
without letting other applications have any way of accessing it. An
xterm is just a text terminal, nothing more, nothing less. There
should be no feature we support on xterm that isn’t supported on bare
console terminals. For the same reasons, support for mouse-tracking
on xterm was removed. We will continue this line of simplifications
as we downgrade to previous versions of Emacs; stay tuned.
Various features in package.el have been simplified. The
“external” package status is no longer available. A package present
on multiple archives will now be listed as many times as it is found:
we don’t believe in concealing any information from the users. This
and other similar simplifications made
package-menu-toggle-hiding unnecessary, since there’s nothing
to unhide now.
The UP and DOWN keys in the minibuffer have
been simplified to move by history items. No need to wonder whether
you have moved to the next/previous item or to another line within the
same item. Well-written commands shouldn’t allow too long history
entries anyway; be sure to report any that do as bugs, so that we
could fix them in past versions of Emacs.
The VC mode was simplified by removing the support for “push”
commands. Moving back in time means you will have less and less need
to use modern version control systems such as Git, Bazaar, and
Mercurial, so the necessity of using “push” commands will gradually
disappear. We removed it from Emacs in advance, so that you won’t
need to un-learn it when this command disappears, as it should.
The support for full C/C++ expressions in macros has been removed from
Hide-Ifdef mode. It now supports only the basic literal macros. As
result, the user interface was simplified, and a number of useless
commands have been removed from Hide-Ifdef mode. Further
simplifications were made possible by removing support for some fancy
new preprocessor directives, such as #if defined, #elif,
We have reverted to Etags for looking up definitions of functions,
variables, etc. Commands such as M-. use tags tables, as they
always have. This allowed the removal of the entire xref.el
package and its many metastases in the other Emacs packages and
commands, significantly simplifying those. No more complexities with
the various “backends” that provide incoherent behavior that is hard
to explain and remember; either the symbol is in TAGS or it isn’t. No
more new user interfaces we never before saw in Emacs, either; if you
want the next definition for the symbol you typed, just invoke
C-u M-.—what could be simpler? As a nice side effect, you get
to use your beloved tags-loop-continue and pop-tag-mark
commands and their memorable bindings. The package.el package
has been removed for similar reasons.
(/ n) once again yields just n. Emacs Lisp is not
Common Lisp, so compatibility with CL just complicates Emacs here.
The functions filepos-to-bufferpos and
bufferpos-to-filepos have been removed. Code that needs to
find a file position by a buffer position or vice versa should adapt
by reading the file with no conversions and counting bytes while
comparing text. How hard can that be?
We saw no need for the make-process primitive, so we removed
it. The start-process primitive provides all the functionality
one needs, so adding more APIs just confuses users.
The functions bidi-find-overridden-directionality and
buffer-substring-with-bidi-context were removed, in preparation
for removing the whole bidi support when downgrading to Emacs 23.
Horizontal scroll bars are no longer supported. Enlarge your windows
and frames instead, or use truncate-lines and the automatic
horizontal scrolling of text that Emacs had since time immemorial.
Emacs is again counting the height of a frame’s menu and its tool bar
in the frame’s text height calculations. This makes Emacs invocation
on different platforms and with different toolkits less predictable
when frame geometry parameters are given on the Emacs command line,
thus making Emacs more adventurous and less boring to use.
The etags program no longer supports Ruby and Go languages.
You won’t need that as you progressively travel back in time towards
the time before these languages were invented. We removed support for
them in anticipation for that time.
To keep up with decreasing computer memory capacity and disk space, many
other functions and files have been eliminated in Emacs 24.5.