diff --git a/etc/NEWS b/etc/NEWS index e5260e4e7e..9b4238eea7 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -29,6 +29,13 @@ applies, and please also update docstrings as needed. This uses the popular sqlite3 library, and can be disabled by using the '--without-sqlite3' option to the 'configure' script. ++++ +** Support for the WebP image format. +This support is built by default when the libwebp library is +available, and includes support for animated WebP images. To disable +WebP support, use the '--without-webp' configure flag. Image +specifiers can now use ':type webp'. + +++ ** Emacs has been ported to the Haiku operating system. The configuration process should automatically detect and build for @@ -39,16 +46,12 @@ C++ compiler to be present on your system. If Emacs is not built with the option '--with-be-app', the resulting Emacs will only run in text-mode terminals. -+++ -** Cairo drawing support has been enabled for Haiku builds. To enable Cairo support, ensure that the Cairo and FreeType development files are present on your system, and configure Emacs with '--with-be-cairo'. ---- -** Double buffering is now enabled on the Haiku operating system. Unlike X, there is no compile-time option to enable or disable -double-buffering. If you wish to disable double-buffering, change the +double-buffering; it is always enabled. To disable it, change the frame parameter 'inhibit-double-buffering' instead. --- @@ -104,7 +107,7 @@ as was already the case for all the non-preloaded files. ** Emacs Sessions (Desktop) +++ -*** New option to load a locked desktop if locking Emacs is not running. +*** New user option to load a locked desktop if locking Emacs is not running. The option 'desktop-load-locked-desktop' can now be set to the value 'check-pid', which means to allow loading a locked ".emacs.desktop" file if the Emacs process which locked it is no longer running on the @@ -113,6 +116,12 @@ files when the Emacs session which locked it crashes, or was otherwise interrupted, and didn't exit gracefully. See the "(emacs) Saving Emacs Sessions" node in the Emacs manual for more details. +** Miscellaneous + ++++ +*** User option 'minibuffer-eldef-shorten-default' is now obsolete. +Customize the user option 'minibuffer-default-prompt-format' instead. + * Startup Changes in Emacs 29.1 @@ -135,6 +144,11 @@ and then execute the rest of the script file as Emacs Lisp. When it reaches the end of the script, Emacs will exit with an exit code from the value of the final form. ++++ +** New function 'substitute-quotes'. +This function works like 'substitute-command-keys' but only +substitutes quote characters. + +++ ** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. @@ -166,6 +180,30 @@ of 'user-emacs-directory'. * Incompatible changes in Emacs 29.1 ++++ +*** Bookmarks no longer include context for encrypted files. +If you're visiting an encrypted file, setting a bookmark no longer +includes excerpts from that buffer in the bookmarks file. + +--- +*** 'show-paren-mode' is now disabled in 'special-mode' buffers. +In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted +off. In Emacs 28.1, the mode was switched on in all buffers. In +Emacs 29.1, this was changed to be switched on in all editing-related +buffers, but not in buffers that inherit from 'special-mode'. To get +back to how things worked in Emacs 28.1, put the following in your +init file: + + (setopt show-paren-predicate t) + ++++ +*** Explicitly-set read-only state is preserved when reverting a buffer. +If you use the 'C-x C-q' command to change the read-only state of the +buffer and then revert it, Emacs would previously use the file +permission bits to determine whether the buffer should be read-only +after reverting the buffer. Emacs now remembers the decision made in +'C-x C-q'. + --- *** The Gtk selection face is no longer used for the region. The combination of a Gtk-controlled background and a foreground color @@ -293,6 +331,10 @@ been restricted to "...", '...', /.../, |...|, (...), [...], <...>, and {...}. See the "(eshell) Argument Predication and Modification" node in the Eshell manual for more details. ++++ +*** Eshell pipelines now only pipe stdout by default. +To pipe both stdout and stderr, use the '|&' operator instead of '|'. + --- ** The 'delete-forward-char' command now deletes by grapheme clusters. This command is by default bound to the function key @@ -335,6 +377,18 @@ the major mode according to 'initial-major-mode', like at Emacs startup. Previously, these functions ignored 'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'. +--- +** The 'rlogin' method in the URL library is now obsolete. +Emacs will now display a warning if you request a URL like +"rlogin://foo@example.org". + +--- +** Setting 'url-gateway-method' to 'rlogin' is now obsolete. +Emacs will now display a warning when setting it to that value. +The user options 'url-gateway-rlogin-host', +'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name' +are also obsolete. + --- ** The autoarg.el library is now marked obsolete. This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor @@ -375,6 +429,9 @@ option) and can be set to nil to disable Just-in-time Lock mode. * Changes in Emacs 29.1 +--- +** Emacs now supports Unicode Standard version 15.0. + --- ** New user option 'electric-quote-replace-consecutive'. @@ -716,6 +773,25 @@ saved to the X primary selection, following the 'select-active-regions' variable. This support is enabled when 'tty-select-active-regions' is non-nil. +--- +*** New command to set up display of unsupported characters. +The new command 'standard-display-by-replacement-char' produces Lisp +code that sets up the 'standard-display-table' to use a replacement +character for display of characters that the text-mode terminal +doesn't support. It is most useful with the Linux console and similar +terminals, where Emacs has a reliable way of determining which +characters have glyphs in the font loaded into the terminal's memory. + +--- +*** New functions to set terminal output buffer size. +The new functions 'tty--set-output-buffer-size' and +'tty--output-buffer-size' allow setting and retrieving the output +buffer size of a terminal device. The default buffer size is and has +always been BUFSIZ, which is defined in your system's stdio.h. When +you set a buffer size with 'tty--set-output-buffer-size', this also +prevents Emacs from explicitly flushing the tty output stream, except +at the end of display update. + ** ERT +++ @@ -886,17 +962,23 @@ or is itself too long. *** New user option 'outline-minor-mode-use-buttons'. If non-nil, Outline Minor Mode will use buttons to hide/show outlines in addition to the ellipsis. The default is nil in editing modes, but -non-nil in 'special-mode' and its derivatives. +non-nil in 'help-mode' and its derivatives. +++ -** Support for the WebP image format. -This support is built by default when the libwebp library is -available, and includes support for animated WebP images. To disable -WebP support, use the '--without-webp' configure flag. Image -specifiers can now use ':type webp'. +*** New user option 'outline-minor-mode-use-margins'. +If non-nil, Outline Minor Mode will use the window margins to +hide/show outlines in addition to the ellipsis. The default is +non-nil in 'special-mode' and its derivatives, and it can be used in +editing modes. ** Windows ++++ +*** New commands 'split-root-window-below' and 'split-root-window-right'. +These commands split the root window in two, and are bound to 'C-x w 2' +and 'C-x w 3', respectively. A number of other useful window-related +commands are now available on the 'C-x w' prefix. + +++ *** New user option 'display-buffer-avoid-small-windows'. If non-nil, this should be a window height, a number. Windows smaller @@ -952,10 +1034,15 @@ suspicious and could be malicious. ** Emacs server and client changes +++ -*** New command-line option '-r' for emacsclient. +*** New command-line option '-r'/'--reuse-frame' for emacsclient. With this command-line option, Emacs reuses an existing graphical client frame if one exists; otherwise it creates a new frame. ++++ +*** New command-line option '-w N'/'--timeout=N' for emacsclient. +With this command-line option, emacsclient will exit if Emacs does not +respond within N seconds. The default is to wait forever. + +++ *** 'server-stop-automatically' can be used to automatically stop the server. The Emacs server will be automatically stopped when certain conditions @@ -1157,6 +1244,12 @@ change the input method's translation rules, customize the user option * Changes in Specialized Modes and Packages in Emacs 29.1 +** ecomplete + +--- +*** New user option 'ecomplete-auto-select'. +If non-nil and there's only one matching option, auto-select that. + ** Dired +++ @@ -1284,6 +1377,11 @@ Sets the value of the buffer-local variable 'whitespace-style' in 'diff-mode' buffers. By default, this variable is '(face trailing)', which preserves behavior from previous Emacs versions. ++++ +*** New user option 'diff-add-log-use-relative-names'. +If non-nil insert file names in ChangeLog skeletons relative to the +VC root directory. + ** Ispell --- @@ -1398,8 +1496,8 @@ characters instead of just 'SPC' and 'TAB'. This mode adds some highlighting, fixes the 'M-q' command, and has commands for doing maintenance of the Emacs NEWS files. In addition, this mode turns on 'outline-minor-mode', and thus displays -customizable icons (see 'icon-preference') on heading lines. To -disable these icons, customize 'outline-minor-mode-use-buttons' to a +customizable icons (see 'icon-preference') in the margins. To +disable these icons, customize 'outline-minor-mode-use-margins' to a nil value. --- @@ -1514,6 +1612,9 @@ with 'C-s C-s', but also after typing a character. Non-nil means that the default definitions of equivalent characters are overridden. +*** New command 'describe-char-fold-equivalences'. +It displays character equivalences used by 'char-fold-to-regexp'. + +++ *** New command 'isearch-emoji-by-name'. It is bound to 'C-x 8 e RET' during an incremental search. The @@ -1521,11 +1622,26 @@ command accepts the Unicode name of an Emoji (for example, "smiling face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer completion, and adds the Emoji into the search string. +** Glyphless characters + +++ -** New minor mode 'glyphless-display-mode'. +*** New minor mode 'glyphless-display-mode'. This allows an easy way to toggle seeing all glyphless characters in the current buffer. +--- +*** The extra slot of 'glyphless-char-display' can now have cons values. +The extra slot of the 'glyphless-char-display' char-table can now have +values that are cons cells, specifying separate values for text-mode +and GUI terminals. + ++++ +*** "Replacement character" feature for undisplayable characters on TTYs. +The 'acronym' method of displaying glyphless characters on text-mode +frames treats single-character acronyms specially: they are displayed +without the surrounding [..] "box", thus in effect treating such +"acronyms" as replacement characters. + ** Registers +++ @@ -1556,11 +1672,29 @@ info node. This command only works for the Emacs and Emacs Lisp manuals. ** VC ++++ +*** 'C-x v b' prefix key is used now for branch commands. +'vc-print-branch-log' is bound to 'C-x v b l', and new commands are +'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s'). +The VC Directory buffer now uses the prefix 'b' for these branch-related +commands. + +++ *** New command '%' ('vc-dir-mark-by-regexp'). This command marks files based on a regexp. If given a prefix argument, unmark instead. +--- +*** 'C-x v v' in a diffs buffer allows to commit only some of the changes. +This command is intended to allow you to commit only some of the +changes you have in your working tree. Begin by creating a buffer +with the changes against the last commit, e.g. with 'C-x v D' +('vc-root-diff'). Then edit the diffs to remove the hunks you don't +want to commit. Finally, type 'C-x v v' in that diff buffer to commit +only part of your changes, those whose hunks were left in the buffer. + +Currently this feature works only with the Git as 'vc-backend'. + --- *** 'C-x v v' on an unregistered file will now use the most specific backend. Previously, if you had an SVN-covered "~/" directory, and a Git-covered @@ -1569,6 +1703,12 @@ directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file in the Git repository in "~/foo/bar". This makes this command consistent with 'vc-responsible-backend'. +--- +*** Log Edit now font locks long Git commit summary lines. +Writing shorter summary lines avoids truncation in contexts in which +Git commands display summary lines. See the two new user options +'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'. + ** Message --- @@ -1836,11 +1976,16 @@ as opposed to via the command-line. *** New command 'image-transform-fit-to-window'. This command fits the image to the current window by scaling down or up as necessary. Unlike 'image-transform-fit-both', this does not -only scale the image down, but up as well. It is bound to "s w" in +only scale the image down, but up as well. It is bound to 's w' in Image Mode by default. +--- +*** New command 'image-mode-wallpaper-set'. +This command sets the desktop background to the current image. It is +bound to 'W' by default. + +++ -*** 'image-transform-fit-to-(height|width)' are now obsolete. +*** 'image-transform-fit-to-{height,width}' are now obsolete. Use the new command 'image-transform-fit-to-window' instead. The keybinding for 'image-transform-fit-to-width' is now 's i'. @@ -1866,7 +2011,15 @@ These commands horizontally and vertically flip the image under point. +++ *** New command 'image-transform-set-percent'. It allows setting the image size to a percentage of its original size, -and is bound to "s p" in Image mode. +and is bound to 's p' in Image mode. + ++++ +*** 'image-transform-original' renamed to 'image-transform-reset-to-original'. +The old name was confusing, and is now an obsolete function alias. + ++++ +*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'. +The old name was confusing, and is now an obsolete function alias. ** Images @@ -1881,49 +2034,37 @@ This is done via 'image-converter-add-handler'. This avoids converting images in the background, and makes Image-Dired noticeably faster. New keybindings from 'image-mode' are now available in the "*image-dired-display-image*" buffer; press '?' or -'h' in that buffer to see the full list. Finally, some commands and -user options that are no longer needed are now obsolete: -'image-dired-cmd-create-temp-image-options', -'image-dired-cmd-create-temp-image-program', -'image-dired-display-current-image-full', -'image-dired-display-current-image-sized', -'image-dired-display-window-height-correction', -'image-dired-display-window-width-correction', -'image-dired-temp-image-file'. +'h' in that buffer to see the full list. --- *** Navigation and marking commands now work in image display buffer. The following new bindings have been added: - - n or SPC image-dired-display-next-thumbnail-original - p or DEL image-dired-display-previous-thumbnail-original - m image-dired-mark-thumb-original-file - d image-dired-flag-thumb-original-file - u image-dired-unmark-thumb-original-file +- 'n', 'SPC' => 'image-dired-display-next-thumbnail-original' +- 'p', 'DEL' => 'image-dired-display-previous-thumbnail-original' +- 'm' => 'image-dired-mark-thumb-original-file' +- 'd' => 'image-dired-flag-thumb-original-file' +- 'u' => 'image-dired-unmark-thumb-original-file' --- -*** Reduce dependency on external "exiftool" command. -The 'image-dired-copy-with-exif-file-name' no longer requires an -external "exiftool" command to be available. The user options -'image-dired-cmd-read-exif-data-program' and -'image-dired-cmd-read-exif-data-options' are now obsolete. +*** New command 'image-dired-unmark-all-marks'. +It removes all marks from all files in the thumbnail and the +associated Dired buffer, and is bound to 'U' in the thumbnail and +display buffer. --- -*** New command for the thumbnail buffer. -The new command 'image-dired-unmark-all-marks' has been added. It is -bound to 'U' in the thumbnail and display buffer. +*** New command 'image-dired-wallpaper-set'. +This command sets the desktop background to the image at point in the +thumbnail buffer. It is bound to 'W' by default. --- -*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020). -This standard allows sharing generated thumbnails across different -programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and -1024x1024 pixels. See the user option 'image-dired-thumbnail-storage' -to use it; it is not enabled by default. +*** 'image-dired-slideshow-start' is now bound to 'S'. +It is bound in both the thumbnail and display buffer. --- -*** Support GraphicsMagick command line tools. -Support for the GraphicsMagick command line tool ("gm") has been -added, and is used instead of ImageMagick when it is available. +*** New user option 'image-dired-marking-shows-next'. +If this option is non-nil (the default), marking, unmarking or +flagging an image in either the thumbnail or display buffer shows the +next image. --- *** New face 'image-dired-thumb-flagged'. @@ -1932,8 +2073,39 @@ used for images that are flagged for deletion in the Dired buffer associated with Image-Dired. --- -*** 'image-dired-slideshow-start' is now bound to 'S'. -It is bound in both the thumbnail and display buffer. +*** Image information is now shown in the header line. +This replaces the message most navigation commands in the thumbnail +buffer used to show at the bottom of the screen. + +--- +*** PDF support. +Image-Dired now displays thumbnails for PDF files. Type 'RET' on a +PDF file in the thumbnail buffer to visit the corresponding PDF. + +--- +*** Support GraphicsMagick command line tools. +Support for the GraphicsMagick command line tool ("gm") has been +added, and is used instead of ImageMagick when it is available. + +--- +*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020). +This standard allows sharing generated thumbnails across different +programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and +1024x1024 pixels. See the user option 'image-dired-thumbnail-storage' +to use it; it is not enabled by default. + +--- +*** Reduce dependency on external "exiftool" command. +The 'image-dired-copy-with-exif-file-name' no longer requires an +external "exiftool" command to be available. The user options +'image-dired-cmd-read-exif-data-program' and +'image-dired-cmd-read-exif-data-options' are now obsolete. + +--- +*** Support for bookmark.el. +The command 'bookmark-set' (bound to 'C-x r m') is now supported in +the thumbnail view, and will create a bookmark that opens the current +directory in Image-Dired. --- *** The 'image-dired-slideshow-start' command no longer prompts. @@ -1944,37 +2116,53 @@ argument to prompt for a delay. Customize the user option 'image-dired-slideshow-delay' to change the default from 5 seconds. --- -*** Support for bookmark.el. -The command 'bookmark-set' (bound to 'C-x r m') is now supported in -the thumbnail view, and will create a bookmark that opens the current -directory in Image-Dired. +*** 'image-dired-display-properties-format' default has changed. +If you prefer the old format, add this to your Init file: + + (setopt image-dired-display-properties-format "%b: %f (%t): %c") + ++++ +*** 'image-dired-show-all-from-dir-max-files' increased to 1000. +This user option controls asking for confirmation when starting +Image-Dired in a directory with many files. Since Image-Dired creates +thumbnails in the background in recent versions, this is not as +important as it used to be. You can now also customize this option to +nil to disable this confirmation completely. --- -*** New user option 'image-dired-marking-shows-next'. -If this option is non-nil (the default), marking, unmarking or -flagging an image in either the thumbnail or display buffer shows the -next image. +*** 'image-dired-thumb-size' increased to 128. --- -*** Image information is now shown in the header line. -This replaces the message most navigation commands in the thumbnail -buffer used to show at the bottom of the screen. +*** 'image-dired-thumb-(height|width)' are now obsolete. +Customize 'image-dired-thumb-size' instead, which will set both the +height and width. -+++ -*** 'image-dired-show-all-from-dir-max-files' has been increased to 500. -This option controls asking for confirmation when starting Image-Dired -in a directory with many files. However, Image-Dired creates -thumbnails in the background these days, so this is not as important -as it used to be, back when entering a large directory could lock up -Emacs for tens of seconds. In addition, you can now customize this -option to nil to disable this confirmation completely. +--- +*** HTML image gallery generation is now obsolete. +The 'image-dired-gallery-generate' command and these user options are +now obsolete: 'image-dired-gallery-thumb-image-root-url', +'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir', +'image-dired-gallery-image-root-url'. --- -*** 'image-dired-rotate-thumbnail-(left|right)' is now obsolete. +*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete. Instead, use commands 'image-dired-refresh-thumb' to generate a new thumbnail, or 'image-rotate' to rotate the thumbnail without updating the thumbnail file. ++++ +*** Some commands and user options are now obsolete. +Since Image-Dired no longer converts images in the background before +displaying them, some commands and user options that are no longer +needed are now obsolete: +'image-dired-cmd-create-temp-image-options', +'image-dired-cmd-create-temp-image-program', +'image-dired-display-current-image-full', +'image-dired-display-current-image-sized', +'image-dired-display-window-height-correction', +'image-dired-display-window-width-correction', +'image-dired-temp-image-file'. + ** Dired --- @@ -2006,7 +2194,10 @@ the buffer will take you to that directory. *** Search and replace in Dired/Wdired supports more regexps. For example, the regexp ".*" will match only characters that are part of the file name. Also "^.*$" can be used to match at the beginning -of the file name and at the end of the file name. +of the file name and at the end of the file name. This is used only +when searching on file names. In Wdired this can be used when the new +user option 'wdired-search-replace-filenames' is non-nil (which is the +default). ** Bookmarks @@ -2025,9 +2216,9 @@ recently set. It is bound to the new command 'bookmark-edit-annotation-cancel'. --- -*** New option 'bookmark-fringe-mark'. +*** New user option 'bookmark-fringe-mark'. This option controls the bitmap used to indicate bookmarks in the -fringe (or 'nil' to disable showing this marker). +fringe (or nil to disable showing this marker). ** Exif @@ -2119,6 +2310,18 @@ the Galeon web browser was released in September, 2008. Note that this historical web browser is different from Mozilla Firefox; it is its predecessor. +** Python Mode + ++++ +*** Project shells and a new user option 'python-shell-dedicated'. +When called with a prefix argument, 'run-python' now offers the choice +of creating a shell dedicated to the current project. This shell runs +in the project root directory and is shared among all project buffers. + +Without a prefix argument, the kind of shell (buffer-dedicated, +project-dedicated or global) is specified by the new +'python-shell-dedicated' user option. + ** Ruby Mode --- @@ -2143,7 +2346,15 @@ automatically insert the Tramp prefix. The automatic insertion applies only when 'default-directory' is remote and the command is a Lisp function. This frees you from having to keep track of whether commands are Lisp function or external when supplying absolute file -name arguments. See "Electric forward slash" in the Eshell manual. +name arguments. See the "(eshell) Electric forward slash" node in the +Eshell manual for details. + ++++ +*** Improved support for redirection operators in Eshell. +Eshell now supports a wider variety of redirection operators. For +example, you can now redirect both stdout and stderr via '&>' or +duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more +information, see the "(eshell) Redirection" node in the Eshell manual. +++ *** Double-quoting an Eshell expansion now treats the result as a single string. @@ -2236,6 +2447,20 @@ Enabling this minor mode turns on hiding header material, like 'elide-head' does; disabling it shows the header. The commands 'elide-head' and 'elide-head-show' are now obsolete. +*** New package 'osc'. +Support for OSC ("Operating System Command") escape sequences has been +extracted from 'comint.el' in order to provide interpretation of OSC +sequences in compilation buffers. + +Adding the new function 'osc-compilation-filter' to +'compilation-filter-hook' enables interpretation of OSC escape +sequences in compilation buffers. By default, all sequences are +filtered out. + +The list of handlers (already covering OSC 7 and 8) has been extended +with a handler for OSC 2, the command to set a window title. + + +++ *** New user option 'project-vc-include-untracked'. If non-nil, files untracked by a VCS are considered to be part of @@ -2262,7 +2487,7 @@ instead of also trying to ping it. Customize the user option *** The 'run-dig' command is now obsolete; use 'dig' instead. --- -*** Some `bib-mode' commands and variables have been renamed. +*** Some 'bib-mode' commands and variables have been renamed. To respect Emacs naming conventions, the variable 'unread-bib-file' has been renamed to 'bib-unread-file'. The following commands have also been renamed: @@ -2283,9 +2508,32 @@ remote host are shown. Alternatively, the user option *** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'. The old name is still available as an obsolete function alias. +--- +*** 'edit-abbrevs' now uses font-locking. +The new face 'abbrev-table-name' is used to display the abbrev table +name. + * New Modes and Packages in Emacs 29.1 ++++ +** New commands 'image-crop' and 'image-cut. +These commands allow interactively cropping/cutting the image at +point. The commands are bound to keys 'c' and 'x' (respectively) in +the local keymap over images. They rely on external programs, by +default "convert" from ImageMagick, to do the actual cropping/eliding +of the image file. + +--- +** New package 'wallpaper'. +This package provides the command 'wallpaper-set', which sets the +desktop background image. Depending on the system and the desktop, +this may require an external program (such as "swaybg", "gm", +"display" or "xloadimage"). If so, a suitable command should be +detected automatically in most cases. It can also be customized +manually if needed, using the new user options 'wallpaper-command' and +'wallpaper-command-args'. + +++ ** New package 'oclosure'. Allows the creation of "functions with slots" or "function objects" @@ -2315,6 +2563,11 @@ when visiting JSON files. * Incompatible Lisp Changes in Emacs 29.1 ++++ +** 'format-prompt' now uses 'substitute-command-keys'. +This means that both the prompt and 'minibuffer-default-prompt-format' +will have key definitions and single quotes handled specially. + --- ** 'find-image' now uses 'create-image'. This means that images found through 'find-image' also have @@ -2487,64 +2740,112 @@ It's been obsolete since Emacs-22.1, actually. negative arguments, and is generally slower than 'ash', which should be used instead. This warning can be suppressed by surrounding calls to 'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)', -but switching to `ash` is generally much preferable. +but switching to 'ash' is generally much preferable. --- ** Some functions and variables obsolete since Emacs 24 have been removed: +'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode', 'Info-edit-map', 'allout-abbreviate-flattened-numbering', -'allout-mode-deactivate-hook', 'ansi-color-unfontify-region', -'auth-source-forget-user-or-password', 'auth-source-hide-passwords', -'auth-source-user-or-password', 'bibtex-complete', -'bibtex-entry-field-alist', 'buffer-substring-filters', -'byte-compile-disable-print-circle', 'cfengine-mode-abbrevs', -'chart-map', 'comint-dynamic-complete', -'comint-dynamic-complete-as-filename', -'comint-dynamic-simple-complete', 'command-history-map', -'compilation-parse-errors-function', 'completion-annotate-function', -'condition-case-no-debug', 'count-lines-region', 'data-debug-map', -'deferred-action-list', 'deferred-action-function', -'dired-x-submit-report', 'eieio-defgeneric', 'eieio-defmethod', -'emacs-lock-from-exiting', 'erc-complete-word', -'eshell-cmpl-suffix-list', 'eshell-for', 'font-lock-maximum-size', +'allout-exposure-change-hook', 'allout-mode-deactivate-hook', +'allout-structure-added-hook', 'allout-structure-deleted-hook', +'allout-structure-shifted-hook', 'ansi-color-unfontify-region', +'archive-extract-hooks', 'auth-source-forget-user-or-password', +'auth-source-hide-passwords', 'auth-source-user-or-password', +'automatic-hscrolling', 'automount-dir-prefix', 'bibtex-complete', +'bibtex-entry-field-alist', 'buffer-has-markers-at', +'buffer-substring-filters', 'byte-compile-disable-print-circle', +'c-prepare-bug-report-hooks', 'cfengine-mode-abbrevs', +'change-log-acknowledgement', 'chart-map', +'checkdoc-comment-style-hooks', 'comint--unquote&expand-filename', +'comint-dynamic-complete', 'comint-dynamic-complete-as-filename', +'comint-dynamic-simple-complete', 'comint-unquote-filename', +'command-history-map', 'compilation-parse-errors-function', +'completion-annotate-function', 'condition-case-no-debug', +'count-lines-region', 'crisp-mode-modeline-string', +'custom-print-functions', 'custom-print-functions', +'cvs-string-prefix-p', 'data-debug-map', 'deferred-action-function', +'deferred-action-list', 'dired-pop-to-buffer', 'dired-shrink-to-fit', +'dired-sort-set-modeline', 'dired-x-submit-report', +'display-buffer-function', +'ediff-choose-window-setup-function-automatically', +'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting', +'erc-complete-word', 'erc-dcc-chat-filter-hook', +'eshell-add-to-window-buffer-names', 'eshell-cmpl-suffix-list', +'eshell-for', 'eshell-remove-from-window-buffer-names', +'eshell-status-in-modeline', 'filesets-cache-fill-content-hooks', +'font-list-limit', 'font-lock-maximum-size', 'font-lock-reference-face', 'gnus-carpal', 'gnus-debug-exclude-variables', 'gnus-debug-files', 'gnus-local-domain', 'gnus-outgoing-message-group', -'gnus-secondary-servers', 'gnus-registry-user-format-function-M', +'gnus-registry-user-format-function-M', 'gnus-secondary-servers', +'gnus-subscribe-newsgroup-hooks', 'gud-inhibit-global-bindings', +'hangul-input-method-inactivate', 'hfy-post-html-hooks', 'image-extension-data', 'image-library-alist', +'inactivate-current-input-method-function', 'inactivate-input-method', 'inhibit-first-line-modes-regexps', -'inhibit-first-line-modes-suffixes', 'intdos', -'mail-complete-function', 'mail-completion-at-point-function', +'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook', +'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook', +'latex-string-prefix-p', 'macro-declaration-function' (function), +'macro-declaration-function' (variable), 'mail-complete-function', +'mail-completion-at-point-function', 'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register', 'makefile-complete', 'menu-bar-kill-ring-save', 'meta-complete-symbol', 'meta-mode-map', +'mh-kill-folder-suppress-prompt-hooks', 'minibuffer-completing-symbol', 'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350', -'msb-after-load-hooks', 'nnimap-split-rule', 'nntp-authinfo-file', -'ns-alternatives-map', 'ns-store-cut-buffer-internal', -'package-menu-view-commentary', 'pascal-last-completions', -'pascal-show-completions', 'pascal-toggle-completions', -'prolog-char-quote-workaround', 'read-filename-at-point', +'mpc-string-prefix-p', 'msb-after-load-hooks', +'nndiary-request-accept-article-hooks', +'nndiary-request-create-group-hooks', +'nndiary-request-update-info-hooks', 'nnimap-split-rule', +'nntp-authinfo-file', 'ns-alternatives-map', +'ns-store-cut-buffer-internal', 'package-menu-view-commentary', +'pascal-last-completions', 'pascal-show-completions', +'pascal-toggle-completions', 'pcomplete-arg-quote-list', +'pcomplete-quote-argument', 'prolog-char-quote-workaround', +'python-buffer', 'python-guess-indent', 'python-indent', +'python-info-ppss-comment-or-string-p', 'python-info-ppss-context', +'python-info-ppss-context-type', 'python-preoutput-result', +'python-proc', 'python-send-receive', 'python-send-string', +'python-use-skeletons', 'quail-inactivate', 'quail-inactivate-hook', +'query-replace-interactive', 'rcirc-activity-hooks', +'rcirc-print-hooks', 'rcirc-receive-message-hooks', +'rcirc-sentinel-hooks', 'read-filename-at-point', 'redraw-modeline', 'reftex-index-map', 'reftex-index-phrases-map', 'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map', -'register-name-alist', 'register-value', +'register-name-alist', 'register-value', 'report-emacs-bug-info', 'report-emacs-bug-pretest-address', 'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to', -'rmail-dont-reply-to-names', 'rst-block-face', 'rst-comment-face', +'rmail-dont-reply-to-names', 'robin-inactivate', +'robin-inactivate-hook', 'rst-block-face', 'rst-comment-face', 'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face', 'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face', -'rst-reference-face', 'semantic-grammar-map', -'semantic-grammar-syntax-table', 'set-register-value', -'speedbar-key-map', 'speedbar-syntax-table', -'starttls-any-program-available', 'strokes-report-bug', +'rst-reference-face', 'semantic-change-hooks', +'semantic-edits-delete-change-hooks', +'semantic-edits-new-change-hooks', +'semantic-edits-reparse-change-hooks', 'semantic-grammar-map', +'semantic-grammar-syntax-table', 'semantic-lex-reset-hooks', +'semanticdb-elisp-sym-function-arglist', +'semanticdb-save-database-hooks', 'set-face-underline-p', +'set-register-value', 'sh-maybe-here-document', 'speedbar-key-map', +'speedbar-syntax-table', 'starttls-any-program-available', +'strokes-modeline-string', 'strokes-report-bug', +'term-default-bg-color', 'term-default-fg-color', +'tex-string-prefix-p', 'timeclock-modeline-display', +'timeclock-modeline-display', 'timeclock-update-modeline', 'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode', -'turn-on-iimage-mode', 'vc-toggle-read-only', 'view-return-to-alist', +'turn-on-iimage-mode', 'ucs-input-inactivate', 'ucs-insert', +'url-recreate-url-attributes', 'user-variable-p', +'vc-string-prefix-p', 'vc-toggle-read-only', 'view-return-to-alist', 'view-return-to-alist-update', 'w32-default-color-map' (function), -'which-func-mode' (function), 'x-cut-buffer-or-selection-value'. +'which-func-mode' (function), 'window-system-version', +'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'. --- ** Some functions and variables obsolete since Emacs 23 have been removed: 'find-emacs-lisp-shadows', 'newsticker-cache-filename', -'redisplay-end-trigger-functions', 'set-window-redisplay-end-trigger', +'process-filter-multibyte-p', 'redisplay-end-trigger-functions', +'set-process-filter-multibyte', 'set-window-redisplay-end-trigger', 'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode', 'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'. @@ -2584,11 +2885,42 @@ abbrevlist.el, assoc.el, complete.el, cust-print.el, erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el, patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el. ++++ +** Many seldom-used generalized variables have been made obsolete. +Emacs has a number of rather obscure generalized variables defined, +that, for instance, allowed you to say things like: + + (setf (point-min) 4) + +These never caught on and have been made obsolete. The form above, +for instance, is the same as saying + + (narrow-to-region 4 (point-max)) + +The following generalized variables have been made obsolete: +'buffer-file-name', 'buffer-local-value', 'buffer-modified-p', +'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer', +'current-column', 'current-global-map', 'current-input-mode', +'current-local-map', 'current-window-configuration', +'default-file-modes', 'documentation-property', 'frame-height', +'frame-width', 'frame-visible-p', 'global-key-binding', +'local-key-binding', 'mark', 'mark-marker', 'marker-position', +'mouse-position', 'point', 'point-marker', 'point-max', 'point-min', +'read-mouse-position', 'screen-height', 'screen-width', +'selected-frame', 'selected-screen', 'selected-window', +'standard-case-table', 'syntax-table', 'visited-file-modtime', +'window-height', 'window-width', and 'x-get-secondary-selection'. + * Lisp Changes in Emacs 29.1 +++ -** New functions 'eol' and 'bol'. +** New function 'make-obsolete-generalized-variable'. +This can be used to mark setters used by 'setf' as obsolete, and the +byte-compiler will then warn about using them. + ++++ +** New functions 'pos-eol' and 'pos-bol'. These are like 'line-end-position' and 'line-beginning-position' (respectively), but ignore fields (and are more efficient). @@ -2619,6 +2951,11 @@ compiler now emits a warning about this deprecated usage. These can be used for buttons in buffers and the like. See the "(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details. ++++ +** New function 'seq-positions'. +This returns a list of the (zero-based) indices of elements matching a +given predicate in the specified sequence. + +++ ** New arguments MESSAGE and TIMEOUT of 'set-transient-map'. MESSAGE specifies a message to display after activating the transient @@ -2631,6 +2968,11 @@ The default timeout value can be defined by the new variable ** New function 'seq-split'. This returns a list of sub-sequences of the specified sequence. ++++ +** New function 'seq-remove-at-position'. +This function returns a copy of the specified sequence where the +element at a given (zero-based) index got removed. + +++ ** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'. These function now take an optional comparison predicate argument. @@ -2686,6 +3028,12 @@ request the name of the ".eln" file which defined a given symbol. +++ ** New macro 'with-memoization' provides a very primitive form of memoization. ++++ +** 'max-char' can now report the maximum codepoint according to Unicode. +When called with a new optional argument UNICODE non-nil, 'max-char' +will now report the maximum valid codepoint defined by the Unicode +Standard. + ** Themes --- @@ -3189,11 +3537,21 @@ This means the vscroll will not be reset when set on a window that is ** XDG support --- -*** New function 'xdg-state-home' returns 'XDG_STATE_HOME' environment variable. -This new location, introduced in the XDG Base Directory Specification -version 0.8 (8th May 2021), "contains state data that should persist +*** New function 'xdg-state-home'. +It returns the new 'XDG_STATE_HOME' environment variable. It should +point to a file name that "contains state data that should persist between (application) restarts, but that is not important or portable enough to the user that it should be stored in $XDG_DATA_HOME". +(This variable was introduced in the XDG Base Directory Specification +version 0.8 released on May 8, 2021.) + +--- +*** New function 'xdg-current-desktop'. +It returns a list of strings, corresponding to the colon-separated +list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which +identify the current desktop environment. +(This variable was introduced in XDG Desktop Entry Specification +version 1.2.) +++ ** New macro 'with-delayed-message'. @@ -3454,6 +3812,14 @@ to preserve the old behavior, apply '(take N LIST)' returns the first N elements of LIST; 'ntake' does the same but works by modifying LIST destructively. +--- +** 'string-split' is now an alias for 'split-string'. + ++++ +** The variable 'max-specpdl-size' has been made obsolete. +Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion +and stack usage. 'max-specpdl-size' is still present as a plain +variable for compatibility but its limiting powers have been taken away. * Changes in Emacs 29.1 on Non-Free Operating Systems