From: Stefan Kangas Date: Mon, 19 Dec 2022 03:42:18 +0000 (+0100) Subject: Merge from origin/emacs-29 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=690724f0f17375f76e404c8adc946f2ee6f49371;p=emacs.git Merge from origin/emacs-29 67bc96c9d94 Remove treesit-defun-prefer-top-level and friends 4f9bccef556 Add yaml-ts-mode (Bug#60105) f9cb144d45a Fix indentation in json-ts-mode (bug#60123) 3d348c46e78 ; Handle nil ARG in treesit-beginning/end-of-defun 1a66435dda3 New input method 'cyrillic-chuvash' b9227c502d7 ; Improve wording of 'format' doc string --- 690724f0f17375f76e404c8adc946f2ee6f49371 diff --cc etc/NEWS index af7f1050b76,6d28bef409d..00f96904156 --- a/etc/NEWS +++ b/etc/NEWS @@@ -22,88 -22,4515 +22,98 @@@ When you add a new item, use the approp applies, and please also update docstrings as needed. -* Installation Changes in Emacs 29.1 - ---- -** Ahead-of-time native compilation can now be specified via configure. -Use '--with-native-compilation=aot' to specify that all the Lisp files -in the Emacs tree should be natively compiled ahead of time. (This is -slow on most machines.) - -+++ -** Emacs can be built with the 'tree-sitter' parsing library. -This library, together with grammar libraries, provides incremental -parsing capabilities for several popular programming languages and -other formatted files. Emacs built with this library offers major -modes, described elsewhere in this file, that are based on the -'tree-sitter's parsers. If you have the 'tree-sitter' library -installed, the configure script will automatically include it in the -build; use '--without-tree-sitter' at configure time to disable that. - -+++ -** Emacs can be built with built-in support for accessing SQLite databases. -This uses the popular sqlite3 library, and can be disabled by using -the '--without-sqlite3' option to the 'configure' script. - -+++ -** Support for the WebP image format. -This support is built by default when the libwebp library is -available, and includes support for animated WebP images. To disable -WebP support, use the '--without-webp' configure flag. Image -specifiers can now use ':type webp'. - -+++ -** Emacs has been ported to the Haiku operating system. -The configuration process should automatically detect and build for -Haiku. There is also an optional window-system port to Haiku, which -can be enabled by configuring Emacs with the option '--with-be-app', -which will require the Haiku Application Kit development headers and a -C++ compiler to be present on your system. If Emacs is not built with -the option '--with-be-app', the resulting Emacs will only run in -text-mode terminals. - -To enable Cairo support, ensure that the Cairo and FreeType -development files are present on your system, and configure Emacs with -'--with-be-cairo'. - -Unlike X, there is no compile-time option to enable or disable -double-buffering; it is always enabled. To disable it, change the -frame parameter 'inhibit-double-buffering' instead. - ---- -** Emacs now installs the ".pdmp" file using a unique fingerprint in the name. -The file is typically installed using a file name akin to -"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-.pdmp". -If a constant file name is required, the file can be renamed to -"emacs.pdmp", and Emacs will find it during startup anyway. - ---- -** Emacs now uses XInput 2 for input events. -If your X server has support and you have the XInput 2 development -headers installed, Emacs will use the X Input Extension for handling -input. If this causes problems, you can configure Emacs with the -option '--without-xinput2' to disable this support. - -'(featurep 'xinput2)' can be used to test for the presence of XInput 2 -support from Lisp programs. - ---- -** Emacs no longer reduces the size of the Japanese dictionary. -Building Emacs includes generation of a Japanese dictionary, which is -used by Japanese input methods. Previously, the build included a step -of reducing the size of this dictionary's vocabulary. This vocabulary -reduction is now optional, by default off. If you need the Emacs -build to include the vocabulary reduction, configure Emacs with the -option '--with-small-ja-dic'. In an Emacs source tree already -configured without that option, you can force the vocabulary reduction -by saying - - make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION='' - -after deleting "lisp/leim/ja-dic/ja-dic.el". - -+++ -** Emacs now supports being built with pure GTK. -To use this option, make sure the GTK 3 (version 3.22.23 or later) and -Cairo development files are installed, and configure Emacs with the -option '--with-pgtk'. Unlike the default X and GTK build, the -resulting Emacs binary will work on any underlying window system -supported by GDK, such as Wayland and Broadway. We do not recommend -that you use this configuration, unless you are running a window -system that's supported by GDK other than X. Running this -configuration on X is known to have problems, such as undesirable -frame positioning and various issues with keyboard input of sequences -such as 'C-;' and 'C-S-u'. - ---- -** The docstrings of preloaded files are not in "etc/DOC" any more. -Instead, they're fetched as needed from the corresponding ".elc" file, -as was already the case for all the non-preloaded files. +* Installation Changes in Emacs 30.1 -* Startup Changes in Emacs 29.1 - -+++ -** '--batch' and '--script' now adjust the garbage collection levels. -These switches now set 'gc-cons-percentage' to 1.0 (up from the -default of 0.1). This means that batch processes will typically use -more memory than before, but use less time doing garbage collection. -Batch jobs that are supposed to run for a long time should adjust the -limit back down again. - -+++ -** Emacs can now be used more easily in an executable script. -If you start an executable script with - - #!/usr/bin/emacs -x - -Emacs will start without reading any init files (like with '--quick'), -and then execute the rest of the script file as Emacs Lisp. When it -reaches the end of the script, Emacs will exit with an exit code from -the value of the final form. - -+++ -** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. - -+++ -** Emacs now has a '--fingerprint' option. -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 is meant to -be used to reinitialize structures that would normally be done at load -time. - -** Native Compilation - -+++ -*** New variable 'inhibit-automatic-native-compilation'. -If set, Emacs will inhibit native compilation (and won't write -anything to the eln cache automatically). The variable is initialized -from the 'EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION' environment -variable on Emacs startup. - ---- -*** New command 'native-compile-prune-cache'. -This command deletes older eln cache entries (but not the ones for -the current Emacs version). - ---- -*** New function 'startup-redirect-eln-cache'. -This function can be called in your init files to change the -user-specific directory where Emacs stores the "*.eln" files produced -by native compilation of Lisp packages Emacs loads. The default -eln cache directory is unchanged: it is the "eln-cache" subdirectory -of 'user-emacs-directory'. +* Startup Changes in Emacs 30.1 -* Incompatible changes in Emacs 29.1 - -+++ -** The image commands have changed key bindings. -In previous Emacs versions, images have had the '+', '-' and 'r' keys -bound when point is over an image. In Emacs 29.1, additional commands -were added, and this made it more likely that users would trigger the -image commands by mistake. To avoid this, all image commands have -moved to the 'i' keymap, so '+' is now 'i +', '-' is now 'i -', and -'r' is now 'i r'. In addition, these commands are now repeating, so -you can rotate an image twice by saying 'i r r', for instance. - -+++ -** Emacs now picks the correct coding system for X input methods. -Previously, Emacs would use the locale coding system for input -methods, which could in some circumstances be incorrect, especially -when the input method chose to fall back to some other coding system. - -Now, Emacs automatically detects the coding system used by input -methods, and uses that to decode input in preference to the value of -'locale-coding-system'. This unfortunately means that users who have -changed the coding system used to decode X keyboard input must adjust -their customizations to 'locale-coding-system' to the variable -'x-input-coding-system' instead. - -+++ -** Bookmarks no longer include context for encrypted files. -If you're visiting an encrypted file, setting a bookmark no longer -includes excerpts from that buffer in the bookmarks file. This is -implemented by the new hook 'bookmark-inhibit-context-functions', -where packages can register a function which returns non-nil for file -names to be excluded from adding such excerpts. - ---- -** 'show-paren-mode' is now disabled in 'special-mode' buffers. -In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted -off. In Emacs 28.1, the mode was switched on in all buffers. In -Emacs 29.1, this was changed to be switched on in all editing-related -buffers, but not in buffers that inherit from 'special-mode'. To get -back to how things worked in Emacs 28.1, put the following in your -init file: - - (setopt show-paren-predicate t) - -+++ -** Explicitly-set read-only state is preserved when reverting a buffer. -If you use the 'C-x C-q' command to change the read-only state of the -buffer and then revert it, Emacs would previously use the file -permission bits to determine whether the buffer should be read-only -after reverting the buffer. Emacs now remembers the decision made in -'C-x C-q'. - ---- -** The Gtk selection face is no longer used for the region. -The combination of a Gtk-controlled background and a foreground color -controlled by the internal Emacs machinery led to low-contrast faces -in common default setups. Emacs now uses the same 'region' face on -Gtk and non-Gtk setups. - -** Dired - ---- -*** 'w' ('dired-copy-filename-as-kill') has changed behavior. -If there are several files marked, file names containing space and -quote characters will be quoted "like this". - ---- -*** The 'd' command now more consistently skips 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. - -+++ -** Warning about "eager macro-expansion failure" is changed into an error. - ---- -** Previously, the X "reverseVideo" value at startup was heeded for all frames. -This meant that if you had a "reverseVideo" resource on the initial -display, and then opened up a new frame on a display without any -explicit "reverseVideo" setting, it would get heeded there, too. (This -included terminal frames.) In Emacs 29, the "reverseVideo" X resource -is handled like all the other X resources, and set on a per-frame basis. - -+++ -** 'E' in 'query-replace' now edits the replacement with exact case. -Previously, this command did the same as 'e'. - ---- -** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp. - -+++ -** 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'. +* Changes in Emacs 30.1 ---- -** Isearch in "*Help*" and "*info*" now char-folds quote characters by default. -This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer -contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These -quotation characters look somewhat similar in some fonts. To switch -this off, disable the new 'isearch-fold-quotes-mode' minor mode. +** X selection requests are now handled much faster and asynchronously. +This means it should be less necessary to disable the likes of +`select-active-regions' when Emacs is running over a slow network +connection. ---- -** Sorting commands no longer necessarily change modification status. -In earlier Emacs versions, commands like 'M-x sort-lines' would always -change buffer modification status to "modified", whether they changed -something in the buffer or not. This has been changed: The buffer is -marked as modified only if the sorting ended up changing the contents -of the buffer. + +* Editing Changes in Emacs 30.1 + --- -** 'string-lines' handles trailing newlines differently. -It no longer returns an empty final string if the string ends with a -newline. ++*** New input method 'cyrillic-chuvash'. ++This input method is based on the russian-computer, and is intended ++for the Chuvash language written in the Cyrillic script. + + +* Changes in Specialized Modes and Packages in Emacs 30.1 --- -** 'TAB' and '' are now bound in 'button-map'. -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. +** Variable order and truncation can now be configured in gdb-many-window mode. +The new variable 'gdb-locals-table-row-config' allows users to +configure the order and max length of various properties in the local +variables buffer when using 'gdb-many-windows'. ---- -** 'Info-default-directory-list' is no longer populated at Emacs startup. -If you have code in your init file that removes directories from -'Info-default-directory-list', this will no longer work. +By default, this variable is set to write the properties in the order: +name, type and value, where the name and type are truncated to 20 +characters, and the value is truncated according to the value of +'gdb-locals-value-limit'. ---- -** 'C-k' no longer deletes files in 'ido-mode'. -To get the previous action back, put something like the following in -your Init file: +If you want to get back the old behavior, set +'gdb-locals-table-row-config' to the value - (require 'ido) - (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head) + ((type . 0)(name . 0)(value . ,gdb-locals-value-limit)). ---- -** New user option 'term-clear-full-screen-programs'. -By default, term will now work like most terminals when displaying -full-screen programs: When they exit, the output is cleared, leaving -what was displayed in the window before the programs started. Set -this user option to nil to revert back to the old behavior. +** VC --- -** Support for old EIEIO functions is not autoloaded any more. -You need an explicit '(require 'eieio-compat)' to use 'defmethod' -and 'defgeneric' (which have been made obsolete in Emacs 25.1 with -'cl-defmethod' and 'cl-defgeneric'). -Similarly you might need to '(require 'eieio-compat)' before loading -files that were compiled with an old EIEIO (Emacs<25). +*** New user option 'vc-git-shortlog-switches'. +This is a string or a list of strings that specifies the Git log +switches for shortlogs, such as the one produced by 'C-x v L'. +'vc-git-log-switches' is no longer used for shortlogs. ---- -** '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. +** bs --- -** '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 ='. +*** New user option 'bs-default-action-list'. +You can now configure how to display the "*buffer-selection*" buffer +using this new option. (Or set 'display-buffer-alist' directly.) ** 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. +* New Modes and Packages in Emacs 30.1 -+++ -** 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). - -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 - -+++ -*** 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. + +* Incompatible Lisp Changes in Emacs 30.1 ---- -*** 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 'yaml-ts-mode'. ++A major mode based on the tree-sitter library for editing files ++written in YAML. It is auto-enabled for files with the ".yaml" or ++".yml" extensions. + -+++ -*** 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. - ---- -*** New input method 'cyrillic-chuvash'. -This input method is based on the russian-computer, and is intended -for the Chuvash language written in the Cyrillic script. - - -* 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