Emacs 28 Antinews
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.4 features.
- The implementation of overlays is back to its simple, time-proven storage in a pair of linear linked lists centered around some buffer position. No more fancy interval trees and suchlikes. Lisp programs that use overlays once again need to recenter overlays around the buffer position of interest, and display-related features should again make sure they don't use too many overlays in a buffer, lest redisplay will be too slow.
- Several functions stopped the annoying conversion of quotes and key sequences by no longer calling
substitute-command-keys. One prominent example isformat-promptand 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, thesubstitute-quotesfunction was deleted. - The venerable
buffer-modified-pfunction again reliably returns eithernilort, not any other confusing values. - The support for
mediumweight of fonts was dropped. Emacs now considersmediumandregularweights to be the same. We believe this will simplify your font setup, since there's no longer a need to worry about fonts that supportregularweight, but not themediumone, or vice versa: either one will do! - To reduce the amount of code in Emacs related to unimportant features, we've removed the function
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 functionspos-bol,pos-eol,file-attribute-file-identifier, and quite a few others. We don't expect anyone to miss those fancy functions. - The timeout used by
x-show-tipcan 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. - The macro
setoptwas deleted; usecustomize-variableinstead, or invoke the:setfunction from Lisp. - We removed the
lisp-directoryvariable, as the value can be easily deduced from other similar variables, likeinstallation-directoryandsource-directory, each one when it's relevant. - To simplify code and reduce complexity, we deleted the functions
get-display-propertyandadd-display-text-property; use the genericget-text-propertyandput-text-propertyinstead. - Support for pinch input events and for modern drag-and-drop functionality on X was dropped. As you move back in time, these facilities will become less and less important, and will soon enough disappear, so there's no reason to keep them in Emacs.
- To keep Emacs clean and elegant, we've removed the
textsec.ellibrary, with its facilities for checking whether some text is "suspicious". We consider our users smart enough to detect maliciously modified text by just looking at it or by moving the cursor across it, and the whole idea that someone would wish to deliberately deceive Emacs users ridiculous and unworthy of complicating our elegant text-processing and display capabilities. - The functions
keymap-set,keymap-global-set,keymap-local-set,keymap-substitute,keymap-lookup, and some others were deleted. We have found the traditionaldefine-key,global-set-key,local-set-key,substitute-key-definition, andkey-bindingmore 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 deletedkey-valid-p, since we consider the permissive nature ofkbdmore in the spirit of Emacs Lisp. - Yanking of anything but plain text from other applications becomes more and more an unnecessary feature as you move back in time, so we dropped support for pasting media like HTML and images via the clipboard. If you @i{really} need to yank those into an Emacs buffer, you can go via a disk file.
- We removed unnecessary functions
string-pixel-widthandstring-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! - Various new Xwidget functions, such as
xwidget-perform-lispy-event,xwidget-webkit-load-html, andxwidget-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. - Setting the
:stderrproperty of a process in amake-processcall once again forces the process's connection to use pipes, not ptys, for all the standard streams — a considerable simplification of this complex interface. - To keep the amount of Lisp functions from growing out of control, we deleted
string-equal-ignore-case. Usecompare-stringsinstead. Several features that complicated the byte compiler have been removed: - The warnings about quoting mistakes in documentation strings. You are expected to find such mistakes yourself, by eyeballing the resulting
*Help*buffer display. - The warnings about malformed
defcustomtypes, like double-quoting symbols inchoicelists. - The macro
with-buffer-unmodified-if-unchangedwas deleted. Lisp programs that need to leave the buffer unmodified in these cases can always compare the text before and after the modifications. - The functions
string-editandread-string-from-bufferwere removed, as we consider the fun of programming them anew every time an important part of the education of each Emacs Lisp developer. - We deleted the function
readablepand the related variableprint-unreadable-function, since no one is supposed to want to print unreadable Lisp objects. - The facility for storing multisession variables was deleted as an unnecessary complication. With it are gone
multisession-value,define-multisession-variable, andlist-multisession-values. - The support for the
cursor-facetext property was dropped. We consider the rest of the faces adequate for supporting this functionality. - The function
tooltip-showdropped support for optional face argumentstext-faceanddefault-facethat 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. - 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.