From: Stefan Kangas Date: Fri, 16 Dec 2022 07:45:06 +0000 (+0100) Subject: Merge from origin/emacs-29 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=03892d4f7c1253bc1affeedd227eb0a1520de90e;p=emacs.git Merge from origin/emacs-29 033071692c7 ; Fix typos f4a513344d9 Add lambda_expression-rule to java-ts-mode (bug#60091) 546aed35434 eglot: Add support for new language server csharp-ls cb761eb7ac4 Use the new tree-sitter commands 037407ad95a Add "function" feature to python-ts-mode (bug#59977) fee2efe1b03 Add go-ts-mode and go-mod-ts-mode (Bug#60025) e8f7ab67ad1 Add basic support for hideshow in python-ts-mode (bug#60044) cac070b23e4 Add "this" keyword to java-ts-mode (bug#60086) c8d75046a2f When completing relative project file names, use relative... 3b618d0e3ed Avoid segfaults due to invalid selected-window's buffer # Conflicts: # lisp/progmodes/sh-script.el --- 03892d4f7c1253bc1affeedd227eb0a1520de90e diff --cc etc/NEWS index af7f1050b76,dd11b3c2715..4efa75fce21 --- a/etc/NEWS +++ b/etc/NEWS @@@ -73,37 -343,4184 +73,45 @@@ using this new option. (Or set 'displa ** Eshell -*** Eshell's PATH is now derived from 'exec-path'. -For consistency with remote connections, Eshell now uses 'exec-path' -to determine the execution path on the local system, instead of using -the PATH environment variable directly. - ---- -*** '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. - -+++ -*** 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 -(a.k.a. ). When invoked without a prefix argument or with -a positive prefix numeric argument, the command will now delete -complete grapheme clusters produced by character composition. For -example, if point is before an Emoji sequence, pressing will -delete the entire sequence, not just a single character at its -beginning. - +++ -** 'load-history' does not treat autoloads specially any more. -An autoload definition appears just as a '(defun . NAME)' and the -'(t . NAME)' entries are not generated any more. - ---- -** The Tamil input methods no longer insert Tamil digits. -The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert -the Tamil digits, as those digit characters are not used nowadays by -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 splice operator for Eshell dollar expansions. +Dollar expansions in Eshell now let you splice the elements of the +expansion in-place using '$@expr'. This makes it easier to fill lists +of arguments into a command, such as when defining aliases. For more +information, see the "(eshell) Dollars Expansion" node in the Eshell +manual. +++ -** 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. +*** 'eshell-read-aliases-list' is now an interactive command. +After manually editing 'eshell-aliases-file', you can use +'M-x eshell-read-aliases-list' to load the edited aliases. +** Prog Mode +++ -** Functions that 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'. - ---- -** Naming of Image-Dired thumbnail files has changed. -Names of thumbnail files generated when 'image-dired-thumbnail-storage' -is 'image-dired' now always end in ".jpg". This fixes various issues -on different platforms, but means that thumbnails generated in Emacs 28 -will not be used in Emacs 29, and vice-versa. If disk space is an -issue, consider deleting the 'image-dired-dir' directory after -upgrading (usually "~/.emacs.d/image-dired/"). - ---- -** 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 user function 'url-irc-function' now takes a SCHEME argument. -The user option 'url-irc-function' is now called with a sixth argument -corresponding to the scheme portion of the target URL. For example, -this would be "ircs" for a URL like "ircs://irc.libera.chat". - ---- -** The linum.el library is now obsolete. -We recommend using either the built-in 'display-line-numbers-mode', or -the 'nlinum' package from GNU ELPA instead. The former has better -performance, but the latter is closer to a drop-in replacement. - -1. To use 'display-line-numbers-mode', add something like this to your - Init file: - - (global-display-line-numbers-mode 1) - ;; Alternatively, to use it only in programming modes: - (add-hook 'prog-mode-hook #'display-line-numbers-mode) - -2. To use 'nlinum', add this to your Init file: - - (package-install 'nlinum) - (global-nlinum-mode 1) - ;; Alternatively, to use it only in programming modes: - (add-hook 'prog-mode-hook #'nlinum-mode) - -3. To continue using the obsolete package 'linum', add this line to - your Init file, in addition to any existing customizations: - - (require 'linum) - ---- -** The thumbs.el library is now obsolete. -We recommend using 'M-x image-dired' instead. - ---- -** The autoarg.el library is now marked obsolete. -This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor -modes to emulate the behavior of the historical editor Twenex Emacs. -It is believed to no longer be useful. - ---- -** The quickurl.el library is now obsolete. -Use 'abbrev', 'skeleton' or 'tempo' instead. - ---- -** The rlogin.el library, and the 'rsh' command are now obsolete. -Use something like 'M-x shell RET ssh RET' instead. - ---- -** The url-about.el library is now obsolete. - ---- -** The autoload.el library is now obsolete. -It is superseded by the loaddefs-gen.el library. - ---- -** The netrc.el library is now obsolete. -Use the 'auth-source-netrc-parse-all' function in auth-source.el -instead. - ---- -** The url-dired.el library is now obsolete. - ---- -** The fast-lock.el and lazy-lock.el libraries have been removed. -They have been obsolete since Emacs 22.1. - -The variable 'font-lock-support-mode' is occasionally useful for -debugging purposes. It is now a regular variable (instead of a user -option) and can be set to nil to disable Just-in-time Lock mode. - +*** New command 'prog-fill-reindent-defun' +This command either fills a single paragraph in a defun, such as a +doc-string, or a comment, or (re)indents the surrounding defun if +point is not in a comment or a string. It is by default bound to +'M-q' in 'prog-mode' and all its descendants. -* Changes in Emacs 29.1 - -+++ -** New user option 'major-mode-remap-alist' to specify favorite major modes. -This user option lets you remap the default modes (e.g. 'perl-mode' or -'latex-mode') to your favorite ones (e.g. 'cperl-mode' or -'LaTeX-mode') without having to use 'defalias', which can have -undesirable side effects. -This applies to all modes specified via 'auto-mode-alist', file-local -variables, etc. - ---- -** Emacs now supports Unicode Standard version 15.0. - ---- -** New user option 'electric-quote-replace-consecutive'. - ---- -** Emacs is now capable of editing files with very long lines. -The display of long lines has been optimized, and Emacs should no -longer choke when a buffer on display contains long lines. The -variable 'long-line-threshold' controls whether and when these display -optimizations are in effect. - -A companion variable 'large-hscroll-threshold' controls when another -set of display optimizations are in effect, which are aimed -specifically at speeding up display of long lines that are truncated. - -If you still experience slowdowns while editing files with long lines, -this may be due to line truncation, or to one of the enabled minor -modes, or to the current major mode. Try turning off line truncation -with 'C-x x t', or try disabling all known slow minor modes with -'M-x so-long-minor-mode', or try disabling both known slow minor modes -and the major mode with 'M-x so-long-mode', or visit the file with -'M-x find-file-literally' instead of the usual 'C-x C-f'. - -Note that the display optimizations in these cases may cause the -buffer to be occasionally mis-fontified. - -The new function 'long-line-optimizations-p' returns non-nil when -these optimizations are in effect in the current buffer. - -+++ -** New command to change the font size globally. -To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to -decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x -C-M-0'. The final key in these commands may be repeated without the -leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+' -and 'C-x C-M-+ + +' increase the font size by three steps. When -'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also -increase and decrease the font size globally. Additionally, the -user option 'global-text-scale-adjust-resizes-frames' controls whether -the frames are resized when the font size is changed. - -** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. -This variable is used by some operations (mostly syntax-propertization -and font-locking) to treat lines longer than this variable as if they -were made up of various smaller lines. This can help reduce the -slowdowns seen in buffers made of a single long line, but can also -cause misbehavior in the presence of such long lines (tho most of that -misbehavior should usually be limited to mis-highlighting). You can -recover the previous behavior with: - - (setq syntax-wholeline-max most-positive-fixnum) - ---- -** New bindings in 'find-function-setup-keys' for 'find-library'. -When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to -'find-library', 'C-x 4 L' is now bound to 'find-library-other-window' -and 'C-x 5 L' is now bound to 'find-library-other-frame'. - -+++ -** New key binding after 'M-x' or 'M-X': 'M-X'. -Emacs allows different completion predicates to be used with 'M-x' -(i.e., 'execute-extended-command') via the -'read-extended-command-predicate' user option. Emacs also has the -'M-X' (note upper case) command, which only displays commands -especially relevant to the current buffer. Emacs now allows toggling -between these modes while the user is inputting a command by hitting -'M-X' while in the minibuffer. - ---- -** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved. - ---- -** New commands 'duplicate-line' and 'duplicate-dwim'. -'duplicate-line' duplicates the current line the specified number of times. -'duplicate-dwim' duplicates the region if it is active. If not, it -works like 'duplicate-line'. An active rectangular region is -duplicated on its right-hand side. - ---- -** Files with the ".eld" extension are now visited in 'lisp-data-mode'. - -+++ -** 'network-lookup-address-info' can now check numeric IP address validity. -Specifying 'numeric' as the new optional 'hints' argument makes it -check if the passed address is a valid IPv4/IPv6 address (without DNS -traffic). - - (network-lookup-address-info "127.1" 'ipv4 'numeric) - => ([127 0 0 1 0]) - -+++ -** 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'. - -+++ -** New command 'rename-visited-file'. -This command renames the file visited by the current buffer by moving -it to a new location, and also makes the buffer visit this new file. - -** 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 -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-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 -to another program. - ---- -** New user option 'mouse-drag-and-drop-region-scroll-margin'. -If non-nil, this option allows scrolling a window while dragging text -around without a scroll wheel. - -+++ -*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'. -This prevents mouse drag gestures from putting empty strings onto the -kill ring. - -+++ -** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'. -These options allow adjusting point and scrolling a window when -dragging items from another program. - -+++ -** The X Direct Save (XDS) protocol is now supported. -This means dropping an image or file link from programs such as -Firefox will no longer create a temporary file in a random directory, -instead asking you where to save the file first. - -+++ -** New user option 'record-all-keys'. -If non-nil, this option will force recording of all input keys, -including those typed in response to passwords prompt (this was the -previous behavior). The default is nil, which inhibits recording of -passwords. - -+++ -** New function 'command-query'. -This function makes its argument command prompt the user for -confirmation before executing. - -+++ -** The 'disabled' property of a command's symbol can now be a list. -The first element of the list should be the symbol 'query', which will -cause the command disabled this way prompt the user with a y/n or a -yes/no question before executing. The new function 'command-query' is -a convenient method of making commands disabled in this way. - ---- -** 'count-words' will now report buffer totals if given a prefix. -Without a prefix, it will only report the word count for the narrowed -part of the buffer. - -+++ -** 'count-words' will now report sentence count when used interactively. - -** New user option 'set-message-functions'. -It allows selecting more functions for 'set-message-function' -in addition to the default function that handles messages -in the active minibuffer. The most useful are 'inhibit-message' -that allows specifying a list of messages to inhibit via -'inhibit-message-regexps', and 'set-multi-message' that -accumulates recent messages and displays them stacked -in the echo area. - ---- -** New user option 'find-library-include-other-files'. -If set to nil, commands like 'find-library' will only include library -files in the completion candidates. The default is t, which preserves -previous behavior, whereby non-library files could also be included. - -+++ -** New command 'sqlite-mode-open-file' for examining an sqlite3 file. -This uses the new 'sqlite-mode' which allows listing the tables in a -DB file, and examining and modifying the columns and the contents of -those tables. - ---- -** 'write-file' will now copy some file mode bits. -If the current buffer is visiting a file that is executable, the -'C-x C-w' command will now make the new file executable, too. - -+++ -** New user option 'process-error-pause-time'. -This determines how long to pause Emacs after a process -filter/sentinel error has been handled. - -+++ -** New faces for font-lock. -These faces are primarily meant for use with tree-sitter. They are: -'font-lock-bracket-face', 'font-lock-delimiter-face', -'font-lock-escape-face', 'font-lock-number-face', -'font-lock-misc-punctuation-face', 'font-lock-operator-face', -'font-lock-property-face', and 'font-lock-punctuation-face'. - -+++ -** New face 'variable-pitch-text'. -This face is like 'variable-pitch' (from which it inherits), but is -slightly larger, which should help with the visual size differences -between the default, non-proportional font and proportional fonts when -mixed. - -+++ -** New face 'mode-line-active'. -This inherits from the 'mode-line' face, but is the face actually used -on the mode lines (along with 'mode-line-inactive'). - -+++ -** New face attribute pseudo-value 'reset'. -This value stands for the value of the corresponding attribute of the -'default' face. It can be used to reset attribute values produced by -inheriting from other faces. - -+++ -** New X resource: "borderThickness". -This controls the thickness of the external borders of the menu bars -and pop-up menus. - -+++ -** New X resource: "inputStyle". -This controls the style of the pre-edit and status areas of X input -methods. - -+++ -** New X resources: "highlightForeground" and "highlightBackground". -Only in the Lucid build, this controls colors used for highlighted -menu item widgets. - -+++ -** On X, Emacs now tries to synchronize window resize with the window manager. -This leads to less flicker and empty areas of a frame being displayed -when a frame is being resized. Unfortunately, it does not work on -some ancient buggy window managers, so if Emacs appears to freeze, but -is still responsive to input, you can turn it off by setting the X -resource "synchronizeResize" to "off". - -+++ -** On X, Emacs can optionally synchronize display with the graphics hardware. -When this is enabled by setting the X resource "synchronizeResize" to -"extended", frame content "tearing" is drastically reduced. This is -only supported on the Motif, Lucid, and no-toolkit builds, and -requires an X compositing manager supporting the extended frame -synchronization protocol (see -https://fishsoup.net/misc/wm-spec-synchronization.html). +* New Modes and Packages in Emacs 30.1 -This behavior can be toggled on and off via the frame parameter -'use-frame-synchronization'. - -+++ -** New frame parameter 'alpha-background' and X resource "alphaBackground". -This controls the opacity of the text background when running on a -composited display. - -+++ -** New frame parameter 'shaded'. -With window managers which support this, it controls whether or not a -frame's contents will be hidden, leaving only the title bar on display. - ---- -** New user option 'x-gtk-use-native-input'. -This controls whether or not GTK input methods are used by Emacs, -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+, 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. - ---- -** New minor mode 'pixel-scroll-precision-mode'. -When enabled, and if your mouse supports it, you can scroll the -display up or down at pixel resolution, according to what your mouse -wheel reports. Unlike 'pixel-scroll-mode', this mode scrolls the -display pixel-by-pixel, as opposed to only animating line-by-line -scrolls. - -** Terminal Emacs - ---- -*** Emacs will now use 24-bit colors on terminals that support "Tc" capability. -This is in addition to previously-supported ways of discovering 24-bit -color support: either via the "RGB" or "setf24" capabilities, or if -the 'COLORTERM' environment variable is set to the value "truecolor". - -*** Select active regions with xterm selection support. -On terminals with xterm setSelection support, the active region may be -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 + +* Incompatible Lisp Changes in Emacs 30.1 -+++ -*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'. -These variables will override 'print-length' and 'print-level' when -printing Lisp values in ERT batch test results. ++*** New major mode 'go-ts-mode'. ++A major mode based on the tree-sitter library for editing programs in ++the Go language. It is auto-enabled for files with the ".go" extension. + ---- -*** Redefining an ERT test in batch mode now signals an error. -Executing 'ert-deftest' with the same name as an existing test causes -the previous definition to be discarded, which was probably not -intended when this occurs in batch mode. To remedy the error, rename -tests so that they all have unique names. ++*** New major mode 'go-mod-ts-mode'. ++A major mode based on the tree-sitter library for editing "go.mod" ++files. It is auto-enabled for files which are named "go.mod". + -+++ -*** ERT can generate JUnit test reports. -When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT -generates a JUnit test report under this file name. This is useful -for Emacs integration into CI/CD test environments. - ---- -*** Unbound test symbols now signal an 'ert-test-unbound' error. -This affects the 'ert-select-tests' function and its callers. - -** Emoji - -+++ -*** Emacs now has several new methods for inserting Emojis. -The Emoji commands are under the new 'C-x 8 e' prefix. - -+++ -*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i'). -This command guides you through various Emoji categories and -combinations in a graphical menu system. - -+++ -*** New command 'emoji-search' (bound to 'C-x 8 e s'). -This command lets you search for Emojis based on names. - -+++ -*** New command 'emoji-list' (bound to 'C-x 8 e l'). -This command lists all Emojis (categorized by themes) in a special -buffer and lets you choose one of them. - ---- -*** New command 'emoji-recent' (bound to 'C-x 8 e r'). -This command lets you choose among the Emojis you have recently -inserted. - -+++ -*** New command 'emoji-describe' (bound to 'C-x 8 e d'). -This command will tell you the name of the Emoji at point. (This -command also works for non-Emoji characters.) - ---- -*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. -These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They -can be used on any character, but are mainly useful for emoji. - ---- -*** New input method 'emoji'. -This allows you to enter emoji using short strings, eg ':face_palm:' -or ':scream:'. - -** Help - ---- -*** Variable values displayed by 'C-h v' in "*Help*" are now font-locked. - -+++ -*** New user option 'help-clean-buttons'. -If non-nil, link buttons in "*Help*" will have any surrounding quotes -removed. - ---- -*** 'M-x apropos-variable' output now includes values of variables. - -+++ -*** New docstring syntax to indicate that symbols shouldn't be links. -When displaying docstrings 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. - ---- -*** Jumping to function/variable source now saves mark before moving point. -Jumping to source from "*Help*" buffer moves the point when the source -buffer is already open. Now, the old point is pushed to mark ring. - -+++ -*** New key bindings in "*Help*" buffers: 'n' and 'p'. -These will take you (respectively) to the next and previous "page". - ---- -*** 'describe-char' now also outputs the name of emoji combinations. - -+++ -*** New key binding in "*Help*" buffer: 'I'. -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. - ---- -*** 'describe-keymap' now considers the symbol at point. -If the symbol at point is a keymap, 'describe-keymap' suggests it as -the default candidate. - ---- -*** New command 'help-quick' displays an overview of common commands. -The command pops up a buffer at the bottom of the screen with a few -helpful commands for various tasks. You can toggle the display using -'C-h q'. - -** Emacs 29.1 comes with Org v9.6. -See the file ORG-NEWS for user-visible changes in Org. - -** Outline Mode - -+++ -*** Support for customizing the default visibility state of headings. -Customize the user option 'outline-default-state' to define what -headings will be visible after Outline mode is turned on. When equal -to a number, the user option 'outline-default-rules' determines the -visibility of the subtree starting at the corresponding level. Values -are provided to control showing a heading subtree depending on whether -the heading matches a regexp, or on whether its subtree has long lines -or is itself too long. - -** Outline Minor Mode - -+++ -*** 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, but in 'help-mode' -it has the value 'insert' that inserts the buttons directly to the -buffer where you can use 'RET' to cycle outline visibility. When -the value is 'in-margins', Outline Minor Mode uses the window margins -to hide/show outlines. - -** 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 -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 - - '(window-width . (body-columns . 40))' - -will make the body of the chosen window 40 columns wide. For the -height use 'window-height' in combination with 'body-lines'. - ---- -*** You can customize which window 'scroll-other-window' operates on. -This is controlled by the new 'other-window-scroll-default' user option. - -** Frames - -+++ -*** Deleted frames can now be undeleted. -The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when -'undelete-frame-mode' is enabled. Without a prefix argument, undelete -the most recently deleted frame. With a numerical prefix argument -between 1 and 16, where 1 is the most recently deleted frame, undelete -the corresponding deleted frame. - -** Tab Bars and Tab Lines - ---- -*** New user option 'tab-bar-auto-width' to automatically determine tab width. -This option is non-nil by default, which resizes tab-bar tabs so that -their width is evenly distributed across the tab bar. A companion -option 'tab-bar-auto-width-max' controls the maximum width of a tab -before its name on display is truncated. - ---- -*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist. - ---- -*** New keymap 'tab-bar-history-mode-map'. -By default, it contains 'C-c ' and 'C-c ' to browse -the history of tab window configurations back and forward. - ---- -** Better detection of text suspiciously reordered on display. -The function 'bidi-find-overridden-directionality' has been extended -to detect reordering effects produced by embeddings and isolates -(started by directional formatting control characters such as RLO and -LRI). The new command 'highlight-confusing-reorderings' finds and -highlights segments of buffer text whose reordering for display is -suspicious and could be malicious. - -** Emacs server and client changes - -+++ -*** 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 -are met. The conditions are given by the argument, which can be -'empty', 'delete-frame' or 'kill-terminal'. - -** Rcirc - -+++ -*** New command 'rcirc-when'. - -+++ -*** New user option 'rcirc-cycle-completion-flag'. -Rcirc will use the default 'completion-at-point' mechanism. The -conventional IRC behavior of completing by cycling through the -available options can be restored by enabling this option. - -+++ -*** New user option 'rcirc-bridge-bot-alist'. -If you are in a channel where a bot is responsible for bridging -between networks, you can use this variable to make these messages -appear more native. For example you might set the option to: - - (setq rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+"))) - -for messages like - - 09:47 {john} I am not on IRC - -to be reformatted into - - 09:47 I am not on IRC - ---- -*** New formatting commands. -Most IRC clients (including rcirc) support basic formatting using -control codes. Under the 'C-c C-f' prefix a few commands have been -added to insert these automatically. For example, if a region is -active and 'C-c C-f C-b' is invoked, markup is inserted for the region -to be highlighted bold. - -** Imenu - -+++ -*** '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. - -+++ -** Emacs is now capable of abandoning a window's redisplay that takes too long. -This is controlled by the new variable 'max-redisplay-ticks'. If that -variable is set to a non-zero value, display of a window will be -aborted after that many low-level redisplay operations, thus -preventing Emacs from becoming wedged when visiting files with very -long lines. - -* 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 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 -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: - - (cl-flet ((bla (x) - (* x x))) - (bla 42)) - -This change also affects 'cl-macrolet', 'cl-flet*' and -'cl-symbol-macrolet'. - -+++ -** New user option 'translate-upper-case-key-bindings'. -Set this option to nil to inhibit translating upper case keys to lower -case keys. - -+++ -** New command 'ensure-empty-lines'. -This command increases (or decreases) the number of empty lines before -point. - ---- -** Improved mouse behavior with auto-scrolling modes. -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. - -+++ -** 'kill-ring-max' now defaults to 120. - ---- -** New user option 'yank-menu-max-items'. -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 - -+++ -*** 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. The default is nil. - -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. - -** Comint - -+++ -*** 'comint-term-environment' is now aware of connection-local variables. -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. - ---- -*** New user option 'comint-delete-old-input'. -When nil, this prevents comint from deleting the current input when -inserting previous input using ''. The default is t, to -preserve past behavior. - ---- -*** New minor mode 'comint-fontify-input-mode'. -This minor mode is enabled by default in "*shell*" and "*ielm*" -buffers. It fontifies input text according to 'shell-mode' or -'emacs-lisp-mode' font-lock rules. Customize the user options -'shell-fontify-input-enable' and 'ielm-fontify-input-enable' to nil if -you don't want to enable input fontification by default. - -** Mwheel - ---- -*** 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. - -** Internationalization changes - -*** The function key now allows deleting the entire composed sequence. -For the details, see the item about the 'delete-forward-char' command -above. - -*** New user option 'composition-break-at-point'. -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. - ---- -*** 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. 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 -Kharoshthi script and language environment -Lepcha script and language environment -Meetei Mayek script and language environment -Adlam script and language environment -Mende Kikakui script and language environment -Wancho script and language environment -Toto script and language environment -Gothic script and language environment -Coptic 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. - ---- -*** New Ukrainian translation of the Emacs Tutorial. - ---- -*** New default phonetic input method for the Tamil language environment. -The default input method for the Tamil language environment is now -"tamil-phonetic" which is a customizable phonetic input method. To -change the input method's translation rules, customize the user option -'tamil-translation-rules'. - ---- -*** New tamil99 input method for the Tamil language. -This supports the keyboard layout specifically designed for the Tamil -language. - ---- -*** New input method 'slovak-qwerty'. -This is a variant of the 'slovak' input method, which corresponds to -the QWERTY Slovak keyboards. - - -* Changes in Specialized Modes and Packages in Emacs 29.1 - -** Ecomplete - ---- -*** New commands 'ecomplete-edit' and 'ecomplete-remove'. -These allow you to (respectively) edit and bulk-remove entries from -the ecomplete database. - ---- -*** New user option 'ecomplete-auto-select'. -If non-nil and there's only one matching option, auto-select that. - ---- -*** New user option 'ecomplete-filter-regexp'. -If non-nil, this user option describes what entries not to add to the -database stored on disk. - -** Auth-Source - -+++ -*** New user option 'auth-source-pass-extra-query-keywords'. -Whether to recognize additional keyword params, like ':max' and -':require', as well as accept lists of query terms paired with -applicable keywords. This disables most known behavioral quirks -unique to auth-source-pass, such as wildcard subdomain matching. - -** Dired - -+++ -*** 'dired-guess-shell-command' moved from dired-x to dired. -This means that 'dired-do-shell-command' will now provide smarter -defaults without first having to require 'dired-x'. See the node -"(emacs) Shell Command Guessing" in the Emacs manual for more details. - ---- -*** 'dired-clean-up-buffers-too' moved from dired-x to dired. -This means that Dired now offers to kill buffers visiting files and -dirs when they are deleted in Dired. Before, you had to require -'dired-x' to enable this behavior. To disable this behavior, -customize the user option 'dired-clean-up-buffers-too' to nil. The -related user option 'dired-clean-confirm-killing-deleted-buffers' -(which see) has also been moved to 'dired'. - -+++ -*** 'dired-do-relsymlink' moved from dired-x to dired. -The corresponding key 'Y' is now bound by default in Dired. - -+++ -*** 'dired-do-relsymlink-regexp' moved from dired-x to dired. -The corresponding key '% Y' is now bound by default in Dired. - ---- -*** 'M-G' is now bound to 'dired-goto-subdir'. -Before, that binding was only available if the dired-x package was -loaded. - -+++ -*** 'dired-info' and 'dired-man' moved from dired-x to dired. -The 'dired-info' and 'dired-man' commands have been moved from the -dired-x package to dired. They have also been renamed to -'dired-do-info' and 'dired-do-man'; the old command names are obsolete -aliases. - -The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound -in Dired mode by default. The user options 'dired-bind-man' and -'dired-bind-info' no longer have any effect and are obsolete. - -To get the old behavior back and unbind these keys in Dired mode, add -the following to your Init file: - - (with-eval-after-load 'dired - (keymap-set dired-mode-map "N" nil) - (keymap-set dired-mode-map "I" nil)) - ---- -*** New command 'dired-do-eww'. -This command visits the file on the current line with EWW. - -** Elisp - ---- -*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e'). -This command evals the forms in the active region or in the whole buffer. - ---- -*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'. -These commands (bound to 'C-c C-f' and 'C-c C-b', respectively) -byte-compile the visited file and the current buffer, respectively. - -** Games - ---- -*** New user option 'tetris-allow-repetitions'. -This controls how randomness is implemented (whether to use pure -randomness as before or whether to use a bag). - -** 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 - -*** New Flymake backend using the ShellCheck program. -It is enabled by default, but requires that the external "shellcheck" -command is installed. - -** CC Mode - ---- -*** C++ Mode now supports most of the new features in the C++20 standard. - -** 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. - ---- -*** 'perldb' now recognizes '-E'. -As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates -all optional features of the Perl version in use. 'perldb' now uses -this invocation as its default. - -** Customize - ---- -*** New command 'custom-toggle-hide-all-widgets'. -This is bound to 'H' and toggles whether to hide or show the widget -contents. - -** Diff mode - ---- -*** New user option 'diff-whitespace-style'. -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 - ---- -*** '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 - -+++ -*** New command 'package-update'. -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 commands 'package-recompile' and 'package-recompile-all'. -These commands can be useful if the ".elc" files are out of date -(invalid byte code and macros). - -+++ -*** 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. - -+++ -*** New command 'package-vc-install'. -Packages can now be installed directly from source by cloning from a -repository. - -+++ -*** New command 'package-vc-install-from-checkout'. -An existing checkout can now be loaded via package.el, by creating a -symbolic link from the usual package directory to the checkout. - -+++ -*** New command 'package-vc-checkout'. -Used to fetch the source of a package by cloning a repository without -activating the package. - -+++ -*** New command 'package-vc-prepare-patch'. -This command allows you to send patches to package maintainers, for -packages checked out using 'package-vc-install'. - -+++ -*** New command 'package-report-bug'. -This command helps you compose an email for sending bug reports to -package maintainers. - -+++ -*** New user option 'package-vc-selected-packages'. -By customizing this user option you can specify specific packages to -install. - -** Emacs Sessions (Desktop) - -+++ -*** 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 -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. - -** 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 - ---- -*** 'q' in a "*Backtrace*" buffer no longer clears the buffer. -Instead it just buries the buffer and switches the mode from -'debugger-mode' to 'backtrace-mode', since commands like 'e' are no -longer available after exiting the recursive edit. - -+++ -*** 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 behavior from previous Emacs versions. - -+++ -*** 'e' in edebug can now take a prefix arg to pretty-print the results. -When invoked with a prefix argument, as in 'C-u e', this command will -pop up a new buffer and show the full pretty-printed value there. - -+++ -*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results. -When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', -this command will pop up a new buffer and show the full pretty-printed -value there. - -+++ -*** You can now generate a backtrace from Lisp errors in redisplay. -To do this, set the new variable 'backtrace-on-redisplay-error' to a -non-nil value. The backtrace will be written to a special buffer -named "*Redisplay-trace*". This buffer will not be automatically -displayed in a window. - -** 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 -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 of the Emacs NEWS files. In addition, -this mode turns on 'outline-minor-mode', and thus displays -customizable icons (see 'icon-preference') in the margins. To -disable these icons, set 'outline-minor-mode-use-buttons' to a -nil value. - ---- -** 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). - ---- -** savehist.el can now truncate variables that are too long. -An element of 'savehist-additional-variables' can now be of the form -'(VARIABLE . MAX-ELTS)', which means to truncate the VARIABLE's value to -at most MAX-ELTS elements (if the value is a list) before saving the -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 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*" -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. 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. -To enable this behavior, customize the user option -'completion-auto-select' to t, then pressing 'TAB' will switch to the -"*Completions*" buffer when it pops up that buffer. If the value is -'second-tab', then the first 'TAB' will display "*Completions*", and -the second one will switch to the "*Completions*" buffer. - ---- -*** New user option 'completion-auto-wrap'. -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 values for the 'completion-auto-help' user option. -There are two new values to control the way the "*Completions*" buffer -behaves after pressing a 'TAB' if completion is not unique. The value -'always' updates or shows the "*Completions*" buffer after any attempt -to complete. The value 'visual' is like 'always', but only updates -the completions if they are already visible. The default value t -always hides the completion buffer after some completion is made. - -*** New commands to complete the minibuffer history. -'minibuffer-complete-history' ('C-x ') is like 'minibuffer-complete' -but completes on the history items instead of the default completion -table. 'minibuffer-complete-defaults' ('C-x ') completes -on the list of default items. - -+++ -*** User option 'minibuffer-eldef-shorten-default' is now obsolete. -Customize the user option 'minibuffer-default-prompt-format' instead. - -+++ -*** New user option 'completions-sort'. -This option controls the sorting of the completion candidates in -the "*Completions*" buffer. Available styles are no sorting, -alphabetical (the default), or a custom sort function. - -+++ -*** New user option 'completions-max-height'. -This option limits the height of the "*Completions*" buffer. - -+++ -*** New user option 'completions-header-format'. -This is a string to control the heading line to show in the -"*Completions*" buffer before the list of completions. -If it contains "%s", that is replaced with the number of completions. -If nil, the heading line is not shown. - -+++ -*** New user option 'completions-highlight-face'. -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, -but doesn't exit the minibuffer. - -+++ -*** You can now define abbrevs for the fundamental minibuffer modes. -'minibuffer-mode-abbrev-table' and -'minibuffer-inactive-mode-abbrev-table' are now defined. - -** Isearch and Replace - -+++ -*** 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. - -+++ -*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'. -Now with these values the search will wrap around not only on repeating -with 'C-s C-s', but also after typing a character. - -+++ -*** New user option 'char-fold-override'. -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 -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'. -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 - -+++ -*** Buffer names can now be stored in registers. -For instance, to enable jumping to the "*Messages*" buffer with -'C-x r j m': - - (set-register ?m '(buffer . "*Messages*")) - -** Pixel-fill - -+++ -*** This is a new package that deals with filling variable-pitch text. - -+++ -*** New function 'pixel-fill-region'. -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 -info node. This command only works for the Emacs and Emacs Lisp manuals. - -** Shortdoc - ---- -*** New command 'shortdoc-copy-function-as-kill' bound to 'w'. -It copies the name of the function near point into the kill ring. - ---- -*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'. -This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'. - -** VC - ---- -*** New command 'vc-pull-and-push'. -This commands first does a "pull" command, and if that is successful, -do a "push" command afterwards. - -+++ -*** '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. - -+++ -*** New command 'C-x v !' ('vc-edit-next-command'). -This prefix command requests editing of the next VC shell command -before execution. For example, in a Git repository, you can produce a -log of more than one branch by typing 'C-x v ! C-x v b l' and then -appending additional branch names to the 'git log' command. - ---- -*** '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. - ---- -*** '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 -directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file -"~/foo/bar/zot" would register it in the SVN repository in "~/" instead of -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'. - ---- -*** New 'log-edit-headers-separator' face. -It is used to style the line that separates the 'log-edit' headers -from the 'log-edit' summary. - ---- -*** The function 'vc-read-revision' accepts a new MULTIPLE argument. -If non-nil, multiple revisions can be queried. This is done using -'completing-read-multiple'. - ---- -*** New function 'vc-read-multiple-revisions'. -This function invokes 'vc-read-revision' with a non-nil value for -MULTIPLE. - -+++ -*** New command 'vc-prepare-patch'. -Patches for any version control system can be prepared using VC. The -command will query what commits to send and will compose messages for -your mail user agent. The behavior of 'vc-prepare-patch' can be -modified by the user options 'vc-prepare-patches-separately' and -'vc-default-patch-addressee'. - -** Message - ---- -*** New user option 'mml-attach-file-at-the-end'. -If non-nil, 'C-c C-a' will put attached files at the end of the message. - ---- -*** Message Mode now supports image yanking. - -+++ -*** New user option 'message-server-alist'. -This controls automatic insertion of the "X-Message-SMTP-Method" -header before sending a message. - -** HTML Mode - ---- -*** HTML Mode now supports "text/html" and "image/*" yanking. - -** Texinfo Mode - ---- -*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition. -It narrows to the current node. - -** EUDC - -+++ -*** Deprecations planned for next release. -After Emacs 29.1, some aspects of EUDC will be deprecated. The goal -of these deprecations is to simplify EUDC server configuration by -making 'eudc-server-hotlist' the only place to add servers. There -will not be a need to set the server using the 'eudc-set-server' -command. Instead, the 'eudc-server-hotlist' user option should be -customized to have an entry for the server. The plan is to obsolete -the 'eudc-hotlist' package since Customize is sufficient for changing -'eudc-server-hotlist'. How the 'eudc-server' user option works in this -context is to-be-determined; it can't be removed, because that would -break compatibility, but it may become synchronized with -'eudc-server-hotlist' so that 'eudc-server' is always equal to '(car -eudc-server-hotlist)'. The first entry in 'eudc-server-hotlist' is the -first server tried by 'eudc-expand-try-all'. The hotlist -simplification will allow 'eudc-query-form' to show a drop down of -possible servers, instead of requiring a call to 'eudc-set-server' -like it does in this release. The default value of -'eudc-ignore-options-file' will be changed from nil to t. - -+++ -*** New user option 'eudc-ignore-options-file' that defaults to nil. -The 'eudc-ignore-options-file' user option can be configured to ignore -the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most -users should configure this to t and put EUDC configuration in the -main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el"). - -+++ -*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'. -'eudc-expansion-overwrites-query' is renamed to -'eudc-expansion-save-query-as-kill' to reflect the actual behavior of -the user option. - -+++ -*** New command 'eudc-expand-try-all'. -This command can be used in place of 'eudc-expand-inline'. It takes a -prefix argument that causes 'eudc-expand-try-all' to return matches -from all servers instead of just the matches from the first server to -return any. This is useful for example, if one wants to search LDAP -for a name that happens to match a contact in one's BBDB. - -+++ -*** New behavior and default for user option 'eudc-inline-expansion-format'. -EUDC inline expansion result formatting defaulted to - - '("%s %s <%s>" firstname name email) - -Since email address specifications need to comply with RFC 5322 in -order to be useful in messages, there was a risk to produce syntax -which was standard with RFC 822, but is marked as obsolete syntax by -its successor RFC 5322. Also, the first and last name part was never -enclosed in double quotes, potentially producing invalid address -specifications, which may be rejected by a receiving MTA. Thus, this -variable can now additionally be set to nil (the new default), or a -function. In both cases, the formatted result will be in compliance -with RFC 5322. When set to nil, a default format very similar to the -old default will be produced. When set to a function, that function -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. - -+++ -*** 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'. - -+++ -*** Additional attributes of query and results in eudcb-macos-contacts.el. -The EUDC back-end for the macOS Contacts app now provides a wider set -of attributes to use for queries, and delivers more attributes in -query results. - -+++ -*** New back-end for ecomplete. -A new back-end for ecomplete allows information from that database to -be queried by EUDC, too. The attributes present in the EUDC query are -used to select the entry type in the ecomplete database. - -+++ -*** New back-end for mailabbrev. -A new back-end for mailabbrev allows information from that database to -be queried by EUDC, too. The attributes 'email', 'name', and 'firstname' -are supported only. - -** 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 -allowed images. - -+++ -*** New user option 'shr-use-xwidgets-for-media'. -If non-nil (and Emacs has been built with support for xwidgets), -display