For those users who live backwards in time, here is information about downgrading to Emacs version 23.4. We hope you will enjoy the greater simplicity that results from the absence of many Emacs 24.4 features.
lexical-bindingvariable has been removed, and so has the lexical argument to
defconstforms no longer mark variables as dynamic, since all variables are dynamic.
Having only dynamic binding follows the spirit of Emacs extensibility, for it allows any Emacs code to access any defined variable with a minimum of fuss. But See Dynamic Binding Tips, for tips to avoid making your programs hard to understand.
nilor omitted argument does not enable the minor mode unconditionally; instead, it toggles the minor mode—which is the straightforward thing to do, since that is the behavior when invoked interactively. One downside is that it is more troublesome to enable minor modes from hooks; you have to do something like
(add-hook 'foo-hook (lambda () (bar-mode 1)))
turn-on-bar-mode and call that from the hook.
prog-modedummy major mode has been removed. Instead of using it as a crutch to meet programming mode conventions, you should explicitly ensure that your mode follows those conventions. See Major Mode Conventions.
bidi-string-mark-left-to-righthas been removed; so have many other functions and variables related to bidirectional display. Unicode directionality characters like
U+200E("left-to-right mark") have no special effect on display.
window-parent, window parameters related to window arrangement, and window-local buffer lists have all been removed. Functions for resizing windows can delete windows if they become too small.
The “action function” feature for controlling buffer display has
been removed, including
related variables, as well as the action argument to
display-buffer and other functions. The way to
programmatically control how Emacs chooses a window to display a
buffer is to bind the right combination of
metadataaction flag for completion functions, and the concept of “completion categories”. Lisp programmers may now find the choice of methods for tuning completion less bewildering, but if a package finds the streamlined interface insufficient for its needs, it must implement its own specialized completion feature.
copy-directorynow behaves the same whether or not the destination is an existing directory: if the destination exists, the contents of the first directory are copied into it (with subdirectories handled recursively), rather than copying the first directory into a subdirectory.
delete-directoryhave been removed. The variable
delete-by-moving-to-trashmust now be used with care; whenever it is non-
nil, all calls to
delete-directoryuse the trash.
copy-filehas been removed. The return value of
backup-bufferno longer has an entry for the SELinux file context.
(type item-name cache . binding)
The cache entry is used internally by Emacs to record equivalent keyboard key sequences for invoking the same command; Lisp programs should never use it.
gnutlslibrary has been removed, and the function
open-network-streamcorrespondingly simplified. Lisp programs that want an encrypted network connection must now call external utilities such as starttls or gnutls-cli.