For those users who live backwards in time, here is information about downgrading to Emacs version 28.2. We hope you will enjoy the greater simplicity that results from the absence of many Emacs 29.2 features.
substitute-command-keys
. One
prominent example is format-prompt
and all its many callers.
This makes the strings they produce much more predictable, returning
to you, the Lisp programmer, control on which punctuation characters
will appear in the text presented to the users. For similar reasons,
the substitute-quotes
function was deleted.
buffer-modified-p
function again reliably returns
either nil
or t
, not any other confusing values.
compiled-function-p
. Lisp programs
are expected to test explicitly for the relevant types of function
objects: built-in, byte-compiled, and natively-compiled. For the same
reasons we deleted the functions pos-bol
, pos-eol
,
file-attribute-file-identifier
, and quite a few others. We
don’t expect anyone to miss those fancy functions.
x-show-tip
can no longer be specified by
Lisp programs; it is hard-coded in the function. This will lead to a
simpler, easier maintained code, and no one should want to control the
timeout after which the tip pops down.
setopt
was deleted; use customize-variable
instead, or invoke the :set
function from Lisp.
lisp-directory
variable, as the value can be
easily deduced from other similar variables, like
installation-directory
and source-directory
, each one
when it’s relevant.
get-display-property
and add-display-text-property
; use
the generic get-text-property
and put-text-property
instead.
keymap-set
, keymap-global-set
,
keymap-local-set
, keymap-substitute
,
keymap-lookup
, and some others were deleted. We have found the
traditional define-key
, global-set-key
,
local-set-key
, substitute-key-definition
, and
key-binding
more than enough, and their minor inconsistencies
in the syntax of keys they accept a source of endless fun in Emacs
Lisp programming. Why make Emacs programming a dull place? For the
same reasons we deleted key-valid-p
, since we consider the
permissive nature of kbd
more in the spirit of Emacs Lisp.
string-pixel-width
and
string-glyph-split
, as we consider it inappropriate for Lisp
programs to do display layout calculations, where these functions come
in handy. Display is for the display engine, written in C, and should
stay there!
xwidget-perform-lispy-event
, xwidget-webkit-load-html
,
and xwidget-webkit-back-forward-list
, were deleted as part of
our continuing effort to gradually delete the entire Xwidget
functionality in some previous release of Emacs.
:stderr
property of a process in a
make-process
call once again forces the process’s connection to
use pipes, not ptys, for all the standard streams — a considerable
simplification of this complex interface.
string-equal-ignore-case
. Use compare-strings
instead.
Several features that complicated the byte compiler have been removed:
defcustom
types, like
double-quoting symbols in choice
lists.
with-buffer-unmodified-if-unchanged
was deleted.
Lisp programs that need to leave the buffer unmodified in these cases
can always compare the text before and after the modifications.
string-edit
and read-string-from-buffer
were removed, as we consider the fun of programming them anew every
time an important part of the education of each Emacs Lisp developer.
readablep
and the related variable
print-unreadable-function
, since no one is supposed to want to
print unreadable Lisp objects.
multisession-value
,
define-multisession-variable
, and
list-multisession-values
.
cursor-face
text property was dropped. We
consider the rest of the faces adequate for supporting this
functionality.
tooltip-show
dropped support for optional face
arguments text-face
and default-face
that allow fancy
control of the face of the tip text and top frame colors. We decided
that tooltips should all look the same, to prevent user confusion.