diff --git a/etc/NEWS b/etc/NEWS index 6637eda00c..fc9e949d8b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -65,7 +65,7 @@ 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. -(featurep 'xinput2) can be used to test for the presence of XInput 2 +'(featurep 'xinput2)' can be used to test for the presence of XInput 2 support from Lisp programs. +++ @@ -121,7 +121,7 @@ This will output a string identifying the current Emacs build. +++ ** New hook 'after-pdump-load-hook'. -This is run at the end of the Emacs startup process, and it meant to +This is run at the end of the Emacs startup process, and is meant to be used to reinitialize structures that would normally be done at load time. @@ -136,6 +136,26 @@ of 'user-emacs-directory'. * Incompatible changes in Emacs 29.1 ++++ +** Setting the goal columns now also affects '' and ''. +Previously, 'C-x C-n' only affected 'next-line' and 'previous-line', +but it now also affects 'scroll-up-command' and 'scroll-down-command'. + +--- +** The 'd' command in Dired now more consistently skip dot files. +In previous Emacs versions, commands like `C-u 10 d' would put the "D" +mark on the next ten files, no matter whether they were dot files +(i.e., "." and "..") or not, while marking the next ten lines with the +mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot +files. These now work equivalently. + +--- +** 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 @@ -151,10 +171,10 @@ 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. +This means that if point 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. @@ -164,7 +184,7 @@ If you have code in your init file that removes directories from --- ** 'C-k' no longer deletes files in 'ido-mode'. To get the previous action back, put something like the following in -your init file: +your Init file: (require 'ido) (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head) @@ -188,6 +208,13 @@ 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. +--- +** 'C-x 8 =' moved to 'C-x 8 = ='. +You can now use 'C-x 8 =' to insert several characters with macron; +for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH +MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the +previous 'C-x ='. + ** Eshell --- @@ -228,19 +255,57 @@ 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. +** 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. + ++++ +** Functions which recreate the "*scratch*" buffer now also initialize it. +When functions like 'other-buffer' and 'server-execute' recreate +"*scratch*", they now also insert 'initial-scratch-message' and set +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'. * Changes in Emacs 29.1 ++++ +** New command 'find-sibling-file'. +This command jumps to a file considered a "sibling file", which is +determined according to the new user option 'find-sibling-rules'. + ++++ +** New user option 'delete-selection-temporary-region'. +When non-nil, 'delete-selection-mode' will only delete the temporary +regions (usually set by mouse-dragging or shift-selection). + ++++ +** New user option 'switch-to-prev-buffer-skip-regexp'. +This should be a regexp or a list of regexps; buffers whose names +match those regexps will be ignored by 'switch-to-prev-buffer' and +'switch-to-next-buffer'. + +** Menus + +--- +*** The entries following the buffers in the "Buffers" menu can now be altered. +Change the 'menu-bar-buffers-menu-command-entries' variable to alter +the entries that follow the buffer list. + +--- +** '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 @@ -250,6 +315,12 @@ the current Emacs process at the end, it starts a new Emacs process optional parameters to restart instead of just killing the current process. ++++ +** New user option 'mouse-drag-mode-line-buffer'. +If non-nil, dragging on the buffer name part of the mode-line will +drag the buffer's associated file to other programs. This option is +currently only available on X, Haiku and Nextstep (GNUstep or macOS). + +++ ** New user option 'mouse-drag-and-drop-region-cross-program'. If non-nil, this option allows dragging text in the region from Emacs @@ -280,6 +351,9 @@ a convenient method of making commands disabled in this way. --- ** 'count-lines' will now report buffer totals if given a prefix. ++++ +** 'count-words' will now report sentence count when used interactively. + --- ** New user option 'find-library-include-other-files'. If set to nil, commands like 'find-library' will only include library @@ -356,10 +430,16 @@ instead of XIM input methods. ** New user option 'use-system-tooltips'. This controls whether to use the toolkit tooltips, or Emacs's own native implementation of tooltips as small frames. This option is -only meaningful if Emacs was built with GTK+ or Haiku support, and -defaults to t, which makes Emacs use the toolkit tooltips. The -existing GTK-specific option 'x-gtk-use-system-tooltips' is now an -alias of this new option. +only meaningful if Emacs was built with GTK+, Nextstep, or Haiku +support, and defaults to t, which makes Emacs use the toolkit +tooltips. The existing GTK-specific option +'x-gtk-use-system-tooltips' is now an alias of this new option. + ++++ +** Non-native tooltips are now supported on Nextstep. +This means Emacs built with GNUstep or built on macOS is now able to +display different faces and images inside tooltips when the +'use-system-tooltips' user option is nil. ** Connection-local variables @@ -374,8 +454,8 @@ make it more convenient to inspect and modify them. Running 'with-connection-local-variables' defaults to application 'tramp'. This can be changed by let-binding 'connection-local-default-application' to another symbol. This is -useful when running code in a buffer, where Tramp has already set some -connection local variables. +useful when running code in a buffer where Tramp has already set some +connection-local variables. --- ** New minor mode 'pixel-scroll-precision-mode'. @@ -449,27 +529,39 @@ 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:. +This allows you to enter emoji using short strings, eg ':face_palm:' +or ':scream:'. ** Help +--- +*** 'M-x apropos-variable' output now includes values of variables. + ++++ +*** 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. +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, . + 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... + 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. @@ -480,7 +572,7 @@ instead. --- *** New user option 'help-enable-variable-value-editing'. -If enabled, 'e' on a value in *Help* will pop you to a new buffer +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. @@ -515,6 +607,11 @@ minor modes are listed after the major mode. The apropos commands will now select the apropos window if 'help-window-select' is non-nil. +--- +*** 'describe-keymap' now considers the symbol at point. +If the symbol at point is a keymap, 'describe-keymap' suggests it as +the default candidate. + ** Outline Mode +++ @@ -532,7 +629,7 @@ 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. Default nil. +in addition to the ellipsis. The default is nil. --- *** New user option 'outline-minor-mode-buttons'. @@ -541,12 +638,21 @@ 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. (This also includes support for animated WebP images.) To -disable WebP support, use the '--without-webp' configure flag. Image +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'. ** Windows +*** New user option 'display-buffer-avoid-small-windows'. +If non-nil, this should be a window height, a number. Windows smaller +than this will be avoided by 'display-buffer', if possible. + ++++ +*** New display action 'display-buffer-full-frame'. +This action removes other windows on the frame when displaying a +buffer. + +++ *** 'display-buffer' now can set up the body size of the chosen window. For example, a 'display-buffer-alist' entry of @@ -613,13 +719,32 @@ 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 + +++ -** 'imenu' is now bound to 'M-g i' globally. +*** 'imenu' is now bound to 'M-g i' globally. + +--- +*** New function 'imenu-flush-cache'. +Use it if you want Imenu to forget the buffer's index alist and +recreate it anew next time 'imenu' is invoked. * Editing Changes in Emacs 29.1 ++++ +** 'M-SPC' is now bound to 'cycle-spacing'. +Formerly it invoked 'just-one-space'. The actions performed by +'cycle-spacing' and their order can now be customized via the user +option 'cycle-spacing-actions'. + +--- +** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars. +These commands now behave as case-sensitive for interactive calls when +they are invoked with an uppercase character, regardless of the +`case-fold-search' value. + --- -** 'scroll-other-window' and 'scroll-other-window-down' now respects remapping. +** 'scroll-other-window' and 'scroll-other-window-down' now respect 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 @@ -640,7 +765,7 @@ This change also affects 'cl-macrolet', 'cl-flet*' and +++ ** New user option 'translate-upper-case-key-bindings'. -This can be set to nil to inhibit translating upper case keys to lower +Set this option to nil to inhibit translating upper case keys to lower case keys. +++ @@ -650,8 +775,8 @@ point. --- ** Improved mouse behavior with auto-scrolling modes. -When clicking inside the 'scroll-margin' or 'hscroll-margin' region -the point is now moved only when releasing the mouse button. This no +When clicking inside the 'scroll-margin' or 'hscroll-margin' region, +point is now moved only when releasing the mouse button. This no longer results in a bogus selection, unless the mouse has been effectively dragged. @@ -672,9 +797,9 @@ Customize this option to limit the number of entries in the menu *** New user option 'show-paren-context-when-offscreen'. When non-nil, if the point is in a closing delimiter and the opening delimiter is offscreen, shows some context around the opening -delimiter in the echo area. Default nil. +delimiter in the echo area. The default is nil. -May also be set to the symbols 'overlay' or 'child-frame' in which +May also be set to the symbols 'overlay' or 'child-frame', in which case the context is shown in an overlay or child-frame at the top-left of the current window. The latter option requires a graphical frame. On non-graphical frames, the context is shown in the echo area. @@ -683,7 +808,7 @@ On non-graphical frames, the context is shown in the echo area. +++ *** 'comint-term-environment' is now aware of connection-local variables. -The user option 'comint-terminfo-terminal' and variable +The user option 'comint-terminfo-terminal' and the variable 'system-uses-terminfo' can now be set as connection-local variables to change the terminal used on a remote host. @@ -696,7 +821,7 @@ The options 'mouse-wheel-down-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 @@ -707,17 +832,113 @@ Setting it to a non-nil value temporarily disables automatic composition of character sequences at point, and thus makes it easier 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. +--- +*** Support for many old scripts and writing systems. +Emacs now supports and has language-environments and input methods for +several dozens of old scripts that were used in the past for various +languages in South and South-East Asia. For each such script Emacs +now has font-selection and character composition rules, a language +environment, and an input method. The newly-added scripts and the +corresponding language environments are: + +**** Tai Tham script and the Northern Thai language environment +**** Brahmi script and language environment +**** Kaithi script and language environment +**** Tirhuta script and language environment +**** Sharada script and language environment +**** Siddham script and language environment +**** Syloti Nagri script and language environment +**** Modi script and language environment +**** Baybayin script and Tagalog language environment +**** Hanunoo script and language environment +**** Buhid script and language environment +**** Tagbanwa script and language environment +**** Limbu script and language environment +**** Balinese script and language environment +**** Javanese script and language environment +**** Sundanese script and language environment +**** Batak script and language environment +**** Rejang script and language environment +**** Makasar script and language environment +**** Lontara script and language environment +**** Hanifi Rohingya script and language environment +**** Grantha script and language environment + +--- +*** The "Oriya" language environment was renamed to "Odia". +This is to follow the change in the official name of the script. The +'oriya' input method was also renamed to 'odia'. However, the old +name of the language environment and the input method are still +supported. + +--- +*** 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 +** Battery + ++++ +*** New user option 'battery-update-functions'. +This can be used to trigger actions based on the battery status. + +** Enriched Mode + ++++ +*** New command 'enriched-toggle-markup'. +This allows you to see the markup in 'enriched-mode' buffers (e.g., +the HELLO file). + +** Shell Script Mode + +--- +*** New user option 'sh-indent-statement-after-and'. +This controls how statements like the following are indented: + + foo && + bar + +** Cperl Mode +--- +*** New user option 'cperl-file-style'. +This option determines the indentation style to be used. It can also +be used as a file-local variable. + +** Gud + +--- +*** 'gud-go' is now bound to 'C-c C-v'. +If given a prefix, it will query the user for an argument to use for +the run/continue command. + +** Customize + +--- +*** New command 'custom-toggle-hide-all-widgets'. +This is bound to 'H' and toggles whether to hide or show the widget +contents. + +** Ispell + +--- +*** 'ispell-region' and 'ispell-buffer' now push the mark. +These commands push onto the mark ring the location of the last +misspelled word where corrections were offered, so that you can then +skip back to that location with 'C-x C-x'. + +** 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 +++ @@ -725,24 +946,44 @@ script that was used in ancient South Asia. A new input method, This command allows you to upgrade packages without using 'M-x list-packages'. ++++ +*** New command 'package-update-all'. +This command allows updating all packages without any queries. + ++++ +*** New DWIM action on 'x' in "*Packages*" buffer. +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 +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. +inadvertently delete the "*scratch*" buffer. ** Debugging *** New user option 'debug-allow-recursive-debug'. -This user option controls whether the 'e' (in a *Backtrace* +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-hidden-output'. +This can be used to make specific parts of compilation output +invisible. + ++++ +*** The 'compilation-auto-jump-to-first-error' user option has been extended. +It can now have the additional values 'if-location-known' (which will +only jump if the location of the first error is known), and +'first-known' (which will jump to the first known error location). + +++ *** New user option 'compilation-max-output-line-length'. Lines longer than this will have the ends hidden, with a button to @@ -765,7 +1006,7 @@ This mode adds some highlighting, fixes the 'M-q' command, and has commands for doing maintenance. --- -** kmacro +** Kmacro Kmacros are now OClosures and have a new constructor 'kmacro' which uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form' (which is now declared obsolete). @@ -790,7 +1031,9 @@ a completion candidate to the minibuffer, then 'M-RET' can be used to choose the currently active candidate from the "*Completions*" buffer and exit the minibuffer. With a prefix argument, 'C-u M-RET' inserts the currently active candidate to the minibuffer, but doesn't -exit the minibuffer. +exit the minibuffer. These keys are also available for in-buffer +completion, but they don't insert candidates automatically, you need +to type 'M-RET' to insert the selected candidate to the buffer. +++ *** The "*Completions*" buffer can now be automatically selected. @@ -838,7 +1081,7 @@ 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, @@ -879,7 +1122,7 @@ For instance, to enable jumping to the "*Messages*" buffer with (set-register ?m '(buffer . "*Messages*")) -** pixel-fill +** Pixel-fill +++ *** This is a new package that deals with filling variable-pitch text. @@ -898,7 +1141,12 @@ This fills the region to be no wider than a specified pixel width. This will take you to the gnu.org web server's version of the current info node. This command only works for the Emacs and Emacs Lisp manuals. -** vc +** VC + ++++ +*** 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' on an unregistered file will now use the most specific backend. @@ -969,7 +1217,13 @@ is called, and the returned values are used to populate the phrase and comment parts (see RFC 5322 for definitions). In both cases, the phrase part will be automatically quoted if necessary. -** eww/shr ++++ +*** New function 'eudc-capf-complete' with 'message-mode' integration. +EUDC can now contribute email addresses to 'completion-at-point' by +adding the new function 'eudc-capf-complete' to +'completion-at-point-functions' in 'message-mode'. + +** EWW/SHR +++ *** New user option to automatically rename EWW buffers. @@ -988,7 +1242,7 @@ allowed images. *** New user option 'shr-use-xwidgets-for-media'. If non-nil (and Emacs has been built with support for xwidgets), display