diff --git a/etc/NEWS b/etc/NEWS index 79c27da549..234aa819be 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -40,13 +40,13 @@ the option '--with-be-app', the resulting Emacs will only run in text-mode terminals. +++ -*** Cairo drawing support has been enabled for Haiku builds. +** 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. +** 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 frame parameter 'inhibit-double-buffering' instead. @@ -58,25 +58,28 @@ The file is typically installed using a file name akin to If a constant file name is required, the file can be renamed to "emacs.pdmp", and Emacs will find it during startup anyway. -** Emacs now supports use of XInput 2 for input events. -If your X server has support and you have the XInput 2 development headers -installed, you can configure Emacs with the option '--with-xinput2' to enable -this support. +--- +** Emacs now uses of XInput 2 for input events. +If your X server has support and you have the XInput 2 development +headers installed, Emacs will use the X Input Extension for handling +input. If this causes problems, you can configure Emacs with the +option '--without-xinput2' to disable this support. -The named feature 'xinput2' can be used to test for the presence of -XInput 2 support from Lisp programs. +(featurep 'xinput2) can be used to test for the presence of XInput 2 +support from Lisp programs. +++ ** Emacs now supports being built with pure GTK. -To use this option, make sure the GTK 3 and Cairo development files -are installed, and configure Emacs with the option '--with-pgtk'. -Unlike the default X and GTK build, the resulting Emacs binary will -work on any underlying window system supported by GDK, such as Wayland -and Broadway. We do not recommend that you use this configuration, -unless you are running a window system that's supported by GDK other -than X. Running this configuration on X is known to have problems, -such as undesirable frame positioning and various issues with keyboard -input of sequences such as 'C-;' and 'C-S-u'. +To use this option, make sure the GTK 3 (version 3.20 or later) and +Cairo development files are installed, and configure Emacs with the +option '--with-pgtk'. Unlike the default X and GTK build, the +resulting Emacs binary will work on any underlying window system +supported by GDK, such as Wayland and Broadway. We do not recommend +that you use this configuration, unless you are running a window +system that's supported by GDK other than X. Running this +configuration on X is known to have problems, such as undesirable +frame positioning and various issues with keyboard input of sequences +such as 'C-;' and 'C-S-u'. --- ** The docstrings of preloaded files are not in "etc/DOC" any more. @@ -90,14 +93,25 @@ as was already the case for all the non-preloaded files. 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 -local machine. This allows to avoid asking questions about locked -desktop 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. +local machine. This allows avoiding questions about locked desktop +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. * Startup Changes in Emacs 29.1 ++++ +** Emacs can now be used more easily in an executable script. +If you start an executable script with + + #!/usr/bin/emacs -x + +Emacs will start without reading any init files (like with '--quick'), +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. + +++ ** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. @@ -122,6 +136,33 @@ of 'user-emacs-directory'. * Incompatible changes in Emacs 29.1 +--- +** Isearch in *Help* and *info* now char-folds quote characters by default. +This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer +contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These +quotation characters look somewhat similar in some fonts. To switch +this off, disable the new 'isearch-fold-quotes-mode' minor mode. + +--- +** Sorting commands no longer necessarily change modification status. +In earlier Emacs versions, commands like 'M-x sort-lines' would always +change buffer modification status to "modified", whether they changed +something in the buffer or not. This has been changed: The buffer is +marked as modified only if the sorting ended up changing the contents +of the buffer. + +--- +** 'string-lines' handles trailing newlines differently. +It no longer returns an empty final string if the string ends with a +newline. + +--- +** 'TAB' and '' are now bound in 'button-map'. +This means that if your cursor is on a button, 'TAB' will take you to +the next button, even if the mode has bound it to something else. +This also means that 'TAB' on a button in an 'outline-minor-mode' +heading will move point instead of collapsing the outline. + --- ** 'Info-default-directory-list' is no longer populated at Emacs startup. If you have code in your init file that removes directories from @@ -154,11 +195,22 @@ files that were compiled with an old EIEIO (Emacs<25). ** 'C-x 8 .' has been moved to 'C-x 8 . .'. This is to open up the 'C-x 8 .' map to bind further characters there. +** Eshell + --- -** 'source' and '.' in Eshell no longer accept the '--help' option. +*** 'source' and '.' no longer accept the '--help' option. This is for compatibility with the shell versions of these commands, which don't handle options like '--help' in any special way. ++++ +*** String delimiters in argument predicates/modifiers are more restricted. +Previously, some argument predicates/modifiers allowed arbitrary +characters as string delimiters. To provide more unified behavior +across all predicates/modifiers, the list of allowed delimiters has +been restricted to "...", '...', /.../, |...|, (...), [...], <...>, +and {...}. See the "(eshell) Argument Predication and Modification" +node in the Eshell manual for more details. + --- ** The 'delete-forward-char' command now deletes by grapheme clusters. This command is by default bound to the function key @@ -182,9 +234,36 @@ speakers of the Tamil language. To get back the previous behavior, use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input methods instead. ++++ +** New variable current-time-list governing default timestamp form. +Functions like current-time now yield (TICKS . HZ) timestamps if this +new variable is nil. The variable defaults to t, which means these +functions default to timestamps of the forms (HI LO US PS), (HI LO US) +or (HI LO), which are less regular and less efficient. This is part +of a long-planned change first documented in Emacs 27. Developers are +encouraged to test timestamp-related code with this variable set to +nil, as it will default to nil in a future Emacs version and will be +removed some time after that. + * Changes in Emacs 29.1 +--- +** 'delete-process' is now a command. +When called interactively, it will kill the process running in the +current buffer (if any). This can be useful if you have runaway +output in the current buffer (from a process or a network connection), +and want to stop it. + ++++ +** New command 'restart-emacs'. +This is like 'save-buffers-kill-emacs', but instead of just killing +the current Emacs process at the end, it starts a new Emacs process +(using the same command line arguments as the running Emacs process). +'kill-emacs' and 'save-buffers-kill-emacs' have also gained new +optional parameters to restart instead of just killing the current +process. + +++ ** New user option 'mouse-drag-and-drop-region-cross-program'. If non-nil, this option allows dragging text in the region from Emacs @@ -384,9 +463,50 @@ command also works for non-Emoji characters.) --- *** New input method 'emoji'. +This allows you to enter emoji using short strings, eg :face_palm: or +:scream:. ** Help ++++ +*** New doc string syntax to indicate that symbols shouldn't be links. +When displaying doc strings in *Help* buffers, strings that are +"`like-this'" are made into links (if they point to a bound +function/variable). This can lead to false positives when talking +about values that are symbols that happen to have the same names as +functions/variables. To inhibit this buttonification, the new +"\\+`like-this'" syntax can be used. + ++++ +*** New user option 'help-window-keep-selected'. +If non-nil, commands to show the info manual and the source will reuse +the same window the *Help* buffer is shown in. + +--- +*** Commands like 'C-h f' have changed how they describe menu bindings. +For instance, previously a command might be described as having the +following bindings: + + It is bound to , C-x C-f, . + +This has been changed to: + + It is bound to and C-x C-f. + It can also be invoked from the menu: File → Visit New File... + ++++ +*** The 'C-h .' command now accepts a prefix argument. +'C-u C-h .' would previously inhibit displaying a warning message if +there's no local help at point. This has been changed to call +'button-describe'/'widget-describe' and display button/widget help +instead. + +--- +*** New user option 'help-enable-variable-value-editing'. +If enabled, 'e' on a value in *Help* will pop you to a new buffer +where you can edit the value. This is not enabled by default, because +it's easy to make an edit that yields an invalid result. + --- *** 'C-h b' uses outlining by default. Set 'describe-bindings-outline' to nil to get the old behavior. @@ -408,6 +528,16 @@ These will take you (respectively) to the next and previous "page". This will take you to the Emacs Lisp manual entry for the item displayed, if any. +--- +*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted. +It now only includes local minor modes at the start, and the global +minor modes are listed after the major mode. + ++++ +*** The user option 'help-window-select' now affects apropos commands. +The apropos commands will now select the apropos window if +'help-window-select' is non-nil. + ** Outline Mode +++ @@ -434,8 +564,9 @@ This is a list of pairs of open/close strings used to display buttons. +++ ** Support for the WebP image format. This support is built by default when the libwebp library is -available. To disable it, use the '--without-webp' configure flag. -Image specifiers can now use ':type webp'. +available. (This also includes support for animated WebP images.) To +disable WebP support, use the '--without-webp' configure flag. Image +specifiers can now use ':type webp'. ** Windows @@ -499,8 +630,26 @@ are met. The conditions are given by the argument, which can be +++ *** New command 'rcirc-when'. ++++ +*** New user option 'rcirc-cycle-completion-flag'. +Rcirc will use the default 'completion-at-point' mechanism. The +conventional IRC behaviour of completing by cycling through the +available options can be restored by enabling this option. + ++++ +** 'imenu' is now bound to 'M-g i' globally. + * Editing Changes in Emacs 29.1 +--- +** 'scroll-other-window' and 'scroll-other-window-down' now respects remapping. +These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other +windows without looking a customizations in that other window. These +functions now check whether they have been rebound in the buffer in +that other window, and then call the remapped function instead. In +addition, these commands now also respect the +'scroll-error-top-bottom' user option. + --- ** Indentation of 'cl-flet' and 'cl-labels' has changed. These forms now indent like this: @@ -537,6 +686,7 @@ effectively dragged. Customize this option to limit the number of entries in the menu "Edit->Paste from Kill Menu". The default is 60. ++++ ** Performing a pinch gesture on a touchpad now increases the text scale. ** show-paren-mode @@ -564,12 +714,12 @@ change the terminal used on a remote host. --- *** New user options for alternate wheel events. -The options 'mouse-wheel-down-alternate-event', 'mouse-wheel-up-alternate-event', -'mouse-wheel-left-alternate-event', and 'mouse-wheel-right-alternate-event' have -been added to better support systems where two kinds of wheel events can be -received. +The options 'mouse-wheel-down-alternate-event', +'mouse-wheel-up-alternate-event', 'mouse-wheel-left-alternate-event', +and 'mouse-wheel-right-alternate-event' have been added to better +support systems where two kinds of wheel events can be received. -** Editing complex text layout (CTL) scripts +** Internationalization changes *** The function key now allows deleting the entire composed sequence. For the details, see the item about the 'delete-forward-char' command @@ -583,9 +733,91 @@ to edit such sequences by allowing point to "enter" the sequence. *** New language environment "Northern Thai". This uses the Tai Tham script, whose support has been enhanced. +*** New language environment "Brahmi". +This language environment supports Brahmi, which is a historical +script that was used in ancient South Asia. A new input method, +'brahmi', is provided to type text in this script. + +*** New language environment "Kaithi". +This language environment supports Kaithi or Kayasthi, which was +an important writing system of the past mainly used for administrative +purposes. A new input method, 'kaithi', is provided to type text in +this script. + +*** New language environment "Tirhuta". +This language environment supports Tirhuta or Mithilaakshar, which is +used to write the Maithili language. A new input method, 'tirhuta', +is provided to type text in this script. + +--- +*** New Greek translation of the Emacs tutorial. +Type 'C-u C-h t' to select it in case your language setup does not do +so automatically. + * Changes in Specialized Modes and Packages in Emacs 29.1 +** dabbrev + +--- +*** New function 'dabbrev-capf' for use on 'completion-at-point-functions' + ++++ +*** New user option 'dabbrev-ignored-buffer-modes'. +Buffers with major modes in this list will be ignored. By default, +this includes "binary" buffers like 'archive-mode' and 'image-mode'. + +** Package + ++++ +*** New command 'package-update'. +This command allows you to upgrade packages without using 'M-x +list-packages'. + ++++ +*** New DWIM action on 'x'. +If no packages are marked, 'x' will install the package under point if +it isn't already, and remove it if it is installed. + +** Miscellaneous + ++++ +*** New command 'scratch-buffer'. +This command switches to the *scratch* buffer. If *scratch* doesn't +exist, the command creates it first. You can use this command if you +inadvertently delete the *scratch* buffer. + +** Debugging + +*** New user option 'debug-allow-recursive-debug'. +This user option controls whether the 'e' (in a *Backtrace* +buffer or while edebugging) and 'C-x C-e' (while edebugging) commands +lead to a (further) backtrace. By default, this variable is nil, +which is a change in behaviour from previous Emacs versions. + +** Compile + ++++ +*** New user option 'compilation-max-output-line-length'. +Lines longer than this will have the ends hidden, with a button to +reveal the hidden text. This speeds up operations like grepping on +files that have few newlines. + +** Flymake + ++++ +*** New user option 'flymake-mode-line-lighter'. + ++++ +** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'. +This mode switches 'word-wrap' on, and breaks on all the whitespace +characters instead of just SPC and TAB. + +--- +** New mode, 'emacs-news-mode', for editing the NEWS file. +This mode adds some highlighting, fixes the 'M-q' command, and has +commands for doing maintenance. + --- ** kmacro Kmacros are now OClosures and have a new constructor 'kmacro' which @@ -601,11 +833,12 @@ value. ** Minibuffer and Completions ++++ *** New commands for navigating completions from the minibuffer. When the minibuffer is the current buffer, typing 'M-' or 'M-' selects a previous/next completion candidate from the "*Completions*" buffer and inserts it to the minibuffer. -When the variable 'minibuffer-completion-auto-choose' is nil, +When the user option 'minibuffer-completion-auto-choose' is nil, 'M-' and 'M-' do the same, but without inserting a completion candidate to the minibuffer, then 'M-RET' can be used to choose the currently active candidate from the "*Completions*" @@ -621,11 +854,13 @@ To enable this behavior, customize the user option 'second-tab', then the first 'TAB' will display "*Completions*", and the second one will switch to the "*Completions*" buffer. +--- *** New user option 'completion-wrap-movement'. When non-nil, the commands 'next-completion' and 'previous-completion' automatically wrap around on reaching the beginning or the end of the "*Completions*" buffer. ++++ *** New user option 'completions-sort'. This option controls the sorting of the completion candidates in the "*Completions*" buffer. Available styles are no sorting, @@ -657,15 +892,25 @@ When this user option names a face, the current candidate in the "*Completions*" buffer is highlighted with that face. The nil value disables this highlighting. +--- *** Choosing a completion with a prefix argument doesn't exit the minibuffer. This means that typing 'C-u RET' on a completion candidate in the "*Completions*" buffer inserts the completion to the minibuffer, -bot doesn't exit the minibuffer. +but doesn't exit the minibuffer. ** Isearch and Replace +++ -*** New user option 'char-fold-override' disables default character equivalences. +*** Changes in how Isearch responds to 'mouse-yank-at-point'. +If a user does 'C-s' and then uses '' ('mouse-yank-primary') +outside the echo area, Emacs will, by default, end the Isearch and +yank the text at mouse cursor. But if 'mouse-yank-at-point' is +non-nil, the text will now be added to the Isearch instead. + ++++ +*** New user option 'char-fold-override'. +Non-nil means that the default definitions of equivalent characters +are overridden. +++ *** New command 'isearch-emoji-by-name'. @@ -674,6 +919,7 @@ 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. ++++ ** New minor mode 'glyphless-display-mode'. This allows an easy way to toggle seeing all glyphless characters in the current buffer. @@ -698,6 +944,9 @@ This fills the region to be no wider than a specified pixel width. ** Info ++++ +*** 'M-x info-apropos' now takes a prefix argument to search for regexps. + --- *** New command 'Info-goto-node-web' and key binding 'G'. This will take you to the gnu.org web server's version of the current @@ -776,6 +1025,14 @@ phrase part will be automatically quoted if necessary. ** eww/shr ++++ +*** New user option to automatically rename EWW buffers. +The 'eww-auto-rename-buffer' user option can be configured to rename +rendered web pages by using their title, URL, or a user-defined +function which returns a string. For the first two cases, the length +of the resulting name is controlled by 'eww-buffer-name-length'. By +default, no automatic renaming is performed. + +++ *** New user option 'shr-allowed-images'. This complements 'shr-blocked-images', but allows specifying just the @@ -795,6 +1052,16 @@ the common "utm_" trackers from URLs. ** Gnus ++++ +*** Tool bar changes in Gnus/Message. +There were previously two styles of tool bars available in Gnus and +Message, referred to as 'gnus-summary-tool-bar-retro', +'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and +'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and +'message-tool-bar-gnome'. The "retro" tool bars have been removed (as +well as the icons used), and the "Gnome" tool bars are now the only +pre-defined toolbars. + --- *** Gnus now uses a variable-pitch font in the headers by default. To get the monospace font back, you can put something like the @@ -824,6 +1091,12 @@ representation as emojis. Configuration is very similar to the notmuch and namazu backends. It supports the unified search syntax. +--- +*** gnus-html-image-cache-ttl is now a seconds count. +Formerly it was a pair of numbers (A B) that represented 65536*A + B, +to cater to older Emacs implementations that lacked bignums. +The older form still works but is undocumented. + ** EIEIO +++ @@ -838,18 +1111,14 @@ M-x align' for it to work. This has now been changed. The default regexp for 'C-u M-x align-regexp' has also been changed to be easier for inexperienced users to use. -** eww - -+++ -*** New user option to automatically rename EWW buffers. -The 'eww-auto-rename-buffer' user option can be configured to rename -rendered web pages by using their title, URL, or a user-defined -function which returns a string. For the first two cases, the length -of the resulting name is controlled by 'eww-buffer-name-length'. By -default, no automatic renaming is performed. - ** Help +--- +*** New mode, 'emacs-news-view-mode', for viewing the NEWS file. +This mode is used by the 'C-h N' command, and adds buttons to manual +entries and symbol references. + +--- *** New user option 'help-link-key-to-documentation'. When this option is non-nil (which is the default), key bindings displayed in the "*Help*" buffer will be linked to the documentation @@ -878,6 +1147,11 @@ filters and displayed with the specified color. ** term-mode +--- +*** New user option 'term-bind-function-keys'. +If non-nil, 'term-mode' will pass the function keys on to the +underlying shell instead of using the normal Emacs bindings. + --- *** Support for ANSI 256-color and 24-bit colors, italic and other fonts. Term-mode can now display 256-color and 24-bit color codes. It can @@ -886,9 +1160,11 @@ it with new 'term-{faint,italic,slow-blink,fast-blink}' faces. ** Xref ++++ *** 'project-find-file' and 'project-or-external-find-file' now accept a prefix argument which is interpreted to mean "include all files". ++++ *** 'project-kill-buffers' can display the list of buffers to kill. Customize the user option 'project-kill-buffers-display-buffer-list' to enable the display of the buffer list. @@ -898,14 +1174,19 @@ to enable the display of the buffer list. It is bound to 'C-M-,' and jumps to the location where 'xref-go-back' ('M-,', also known as 'xref-pop-marker-stack') was invoked previously. -*** 'xref-query-replace-in-results' does not prompt for FROM when -called without prefix argument, to make the most common case faster: -replacing entire matches. ++++ +*** 'xref-query-replace-in-results' prompting change. +This command no longer prompts for FROM when called without prefix +argument. This makes the most common case faster: replacing entire +matches. ++++ *** New command 'xref-find-references-and-replace' to rename one identifier. +--- *** New variable 'xref-current-item' (renamed from a private version). +--- *** New function 'xref-show-xrefs'. ** File notifications @@ -939,6 +1220,7 @@ The keybinding for 'image-transform-fit-to-width' is now 's i'. *** User option 'image-auto-resize' can now be set to 'fit-window'. This works like 'image-transform-fit-to-window'. +--- *** New user option 'image-auto-resize-max-scale-percent'. The new 'fit-window' option will never scale an image more than this much (in percent). It is nil by default, which means no limit. @@ -970,8 +1252,8 @@ user options that are no longer needed are now obsolete: *** Navigation and marking commands now work in image display buffer. The following new bindings have been added: - n / SPC image-dired-display-next-thumbnail-original - p / DEL image-dired-display-previous-thumbnail-original + 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 @@ -1058,6 +1340,7 @@ If non-nil, dragging file names with the mouse in a Dired buffer will initiate a drag-and-drop session allowing them to be opened in other programs. ++++ *** New user option 'dired-free-space'. Dired will now, by default, include the free space in the first line instead of having it on a separate line. To get the previous behavior @@ -1073,6 +1356,7 @@ the buffer will take you to that directory. ** Exif +--- *** New function 'exif-field'. This is a convenience function to extract the field data from 'exif-parse-file' and 'exif-parse-buffer'. @@ -1128,7 +1412,7 @@ will abbreviate the user's home directory, for example by abbreviating +++ *** New user option 'tramp-use-scp-direct-remote-copying'. When set to non-nil, Tramp does not copy files between two remote -hosts via a local copy in its temporary directory, but let the 'scp' +hosts via a local copy in its temporary directory, but lets the 'scp' command do this job. +++ @@ -1152,6 +1436,7 @@ the Galeon web browser was released in September, 2008. ** Ruby Mode +--- *** New user option 'ruby-toggle-block-space-before-parameters'. ** Eshell @@ -1165,6 +1450,50 @@ support for pipelines which will move a lot of data. See section "Running Shell Pipelines Natively" in the Eshell manual, node "(eshell) Input/Output". ++++ +*** New module to help supplying absolute file names to remote commands. +After enabling the new 'eshell-elecslash' module, typing a forward +slash as the first character of a command line argument will +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. + ++++ +*** Double-quoting an Eshell expansion now treats the result as a single string. +If an Eshell expansion like '$FOO' is surrounded by double quotes, the +result will always be a single string, no matter the type that would +otherwise be returned. + ++++ +*** Concatenating Eshell expansions now works more similarly to other shells. +When concatenating an Eshell expansion that returns a list, "adjacent" +elements of each operand are now concatenated together, +e.g. '$list("a" "b")c' returns '("a" "bc")'. See the "(eshell) +Expansion" node in the Eshell manual for more details. + ++++ +*** Eshell subcommands with multiline numeric output return lists of numbers. +If every line of the output of an Eshell subcommand like '${COMMAND}' +is numeric, the result will be a list of numbers (or a single number +if only one line of output). Previously, this only converted numbers +when there was a single line of output. + +--- +*** Built-in Eshell commands now follow POSIX/GNU argument syntax conventions. +Built-in commands in Eshell now accept command-line options with +values passed as a single token, such as '-oVALUE' or +'--option=VALUE'. New commands can take advantage of this with the +'eshell-eval-using-options' macro. See "Defining new built-in +commands" in the "(eshell) Built-ins" node of the Eshell manual. + +** Calc + ++++ +*** New user option 'calc-kill-line-numbering'. +This can be set to nil to exclude line numbering from kills and copies. + ** Miscellaneous +++ @@ -1176,7 +1505,7 @@ keyword-driven fontifications. *** New package vtable.el for formatting tabular data. This package allows formatting data using variable-pitch fonts. The resulting tables can display text in variable pitch fonts, text -using fonts of different sizes, and images. See the '(vtable)Top' +using fonts of different sizes, and images. See the "(vtable) Top" manual for more details. --- @@ -1212,6 +1541,11 @@ remote host are shown. Alternatively, the user option Allows the creation of "functions with slots" or "function objects" via the macros 'oclosure-define' and 'oclosure-lambda'. +*** New generic function 'oclosure-interactive-form'. +Used by 'interactive-form' when called on an OClosure. +This allows specific OClosure types to compute their interactive specs +on demand rather than precompute them when created. + --- ** New theme 'leuven-dark'. This is a dark version of the 'leuven' theme. @@ -1225,6 +1559,15 @@ Emacs buffers, like indentation and the like. The new ert function * Incompatible Lisp Changes in Emacs 29.1 +--- +** 'with-silent-modifications' also restores buffer modification ticks. +'with-silent-modifications' is a macro meant to be used by the font +locking machinery to allow applying text properties without changing +the modification status of the buffer. However, it didn't restore the +buffer modification ticks, so applying font locking to a modified +buffer that had already been auto-saved would trigger another +auto-saving. This is no longer the case. + --- ** 'prin1' doesn't always escape "." and "?" in symbols any more. Previously, symbols like 'foo.bar' would be printed by 'prin1' as @@ -1247,6 +1590,7 @@ they will still be escaped, so the '.foo' symbol is still printed as and remapping parent of basic faces does not work reliably. Instead of remapping 'mode-line', you have to remap 'mode-line-active'. +--- ** User option 'mail-source-ignore-errors' is now obsolete. The whole mechanism for prompting users to continue in case of mail-source errors has been removed, so this option is no longer @@ -1360,8 +1704,86 @@ functions. * Lisp Changes in Emacs 29.1 +--- +*** New minor mode 'isearch-fold-quotes-mode'. +This sets up 'search-default-mode' so that quote characters are +char-folded into each other. It is used, by default, in *Help* and +*info* buffers. + +++ -** 'macroexp-let2*' can omit 'test' arg and use single-var bindings. +** New macro 'buffer-local-set-state'. +This is a helper macro to be used by minor modes that wish to restore +buffer-local variables back to their original states when the mode is +switched off. + +--- +** New macro 'with-buffer-unmodified-if-unchanged'. +If the buffer is marked as unmodified, and code does modifications +that, in total, means that the buffer is identical to the buffer +before, mark the buffer as unmodified again. + +--- +** New function 'malloc-trim'. +This function allows returning unused memory back to the operating +system, and is mainly meant as a debugging tool. It is currently +available only when Emacs was built with glibc as the C library. + +--- +** 'x-show-tip' no longer hard-codes a timeout default. +The new 'x-show-tooltip-timeout' variable allows the user to alter +this for packages that don't use 'tooltip-show', but instead calls the +lower level function directly. + ++++ +** New function 'window-max-characters-per-line'. + ++++ +** New function 'window-char-pixel-width'. + ++++ +** New function 'window-char-pixel-width'. + +--- +** New function 'current-cpu-time'. +It gives access to the CPU time used by the Emacs process, for +example for benchmarking purposes. + +--- +** New function 'string-edit'. +This is meant to be used when the user has to edit a (potentially) +long string. It pops you to a new buffer where you can edit the +string, and a callback is called when the user types 'C-c C-c'. + ++++ +** New function 'read-string-from-buffer'. +This is a modal version of 'string-edit', and can be used as an +alternative to 'read-string'. + ++++ +** The return value of 'clear-message-function' is not ignored anymore. +If the function returns 'dont-clear-message', then the message is not +cleared, with the assumption that the function cleared it itself. + ++++ +** The local variable section now supports defining fallback modes. +This was previously only available when using a property line (i.e., +putting the modes on the first line of a file). + ++++ +** New function 'flush-standard-output'. +This enables you do display incomplete lines from batch-based Emacs +scripts. + ++++ +** New convenience function 'buttonize-region'. +This works like 'buttonize', but for a region instead of a string. + ++++ +** 'macroexp-let2*' can omit TEST arg and use single-var bindings. + ++++ +** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'. +See the "(cl) Macro-Writing Macros" manual section for descriptions. +++ ** New variable 'last-event-device' and new function 'device-class'. @@ -1388,8 +1810,9 @@ compliant. +++ ** New macro 'setopt'. -This is like 'setq', but uses 'customize-set-variable' to set the -variable(s). +This is like 'setq', but is meant to be used for user options instead +of plain variables, and +uses 'custom-set'/'set-default' to set them. +++ ** New utility predicate 'mode-line-window-selected-p'. @@ -1475,6 +1898,17 @@ them towards or away from each other. This hook is run before 'x-popup-menu' is about to display a deck-of-cards menu on screen. +** New function 'buffer-match-p'. +Check if a buffer satisfies some condition. Some examples for +conditions can be regular expressions that match a buffer name, a +cons-cell like '(major-mode . shell-mode)' that matches any buffer +where 'major-mode' is 'shell-mode' or a combined with a condition like +'(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'. + +** New function 'match-buffers'. +Use 'buffer-match-p' to gather a list of buffers that match a +condition. + ** Text security and suspiciousness +++ @@ -1612,8 +2046,10 @@ It marks the image with the 'inhibit-isearch' text property, which inhibits 'isearch' matching the STRING parameter. --- -** New function 'replace-regexp-function'. -It can be used to implement own regexp syntax for search/replace. +** New variable 'replace-regexp-function'. +Function to call to convert the entered FROM string to an Emacs +regexp in 'query-replace' and similar commands. It can be used to +implement a different regexp syntax for search/replace. --- ** New variables to customize defaults of FROM for 'query-replace*' commands. @@ -1664,11 +2100,6 @@ dimensions. Specifying a cons as the FROM argument allows to start measuring text from a specified amount of pixels above or below a position. ---- -** 'eshell-eval-using-options' now follows POSIX/GNU argument syntax conventions. -Built-in commands in Eshell now accept command-line options with -values passed as a single token, such as '-oVALUE' or '--option=VALUE'. - ** XDG support --- @@ -1844,11 +2275,21 @@ For example, '(time-add nil '(1 . 1000))' no longer warns that the '(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a temporary transition aid for Emacs 27, has served its purpose. ++++ +** 'encode-time' now also accepts a 6-element list with just time and date. +(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR)) is now short for +(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil)). + +++ ** 'date-to-time' now assumes earliest values if its argument lacks month, day, or time. For example, (date-to-time "2021-12-04") now assumes a time of 00:00 instead of signaling an error. ++++ +** 'format-seconds' now allows suppressing zero-value trailing elements. +The new "%x" non-printing control character will suppress zero-value +elements that appear after "%x". + +++ ** New events for taking advantage of touchscreen devices. The events 'touchscreen-begin, 'touchscreen-update', and @@ -1883,7 +2324,7 @@ translation. +++ ** 'shell-quote-argument' has a new optional parameter POSIX. This is useful when quoting shell arguments for a remote shell -invocation. Such shells are POSIX conform by default. +invocation. Such shells are POSIX conformant by default. +++ ** 'signal-process' now consults the list 'signal-process-functions'. @@ -1893,8 +2334,8 @@ asynchronous processes. The hitherto existing implementation has been moved to 'signal-default-interrupt-process'. +++ -** 'list-system-processes' returns remote process IDs now. -This happens, when the current buffer's 'default-directory' is +** 'list-system-processes' now returns remote process IDs. +This happens only when the current buffer's 'default-directory' is remote. In order to preserve the old behavior, apply (let ((default-directory temporary-file-directory)) @@ -1915,6 +2356,21 @@ to preserve the old behavior, apply ** MS-Windows +--- +*** Emacs now supports double-buffering on MS-Windows to reduce display flicker. +(This was supported on Free systems since Emacs 26.1.) + +To disable double-buffering (e.g., if it causes display problems), set +the frame parameter 'inhibit-double-buffering' to a non-nil value. +You can do that either by adding + + '(inhibit-double-buffering . t) + +to 'default-frame-alist', or by modifying the frame parameters of the +selected frame by evaluating + + (modify-frame-parameters nil '((inhibit-double-buffering . t))) + +++ *** Emacs now supports system dark mode. On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now @@ -1940,6 +2396,11 @@ where those APIs are available. When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now has built-in support for displaying BMP images. +** Cygwin + +--- +*** 'process-attributes' is now implemented. + ---------------------------------------------------------------------- This file is part of GNU Emacs. @@ -1961,5 +2422,6 @@ along with GNU Emacs. If not, see . Local variables: coding: utf-8 mode: outline +mode: emacs-news paragraph-separate: "[ ]*$" end: