]> git.eshelyaron.com Git - emacs.git/commitdiff
; Move etc/NEWS to etc/NEWS.30
authorEli Zaretskii <eliz@gnu.org>
Sun, 23 Jun 2024 10:53:28 +0000 (06:53 -0400)
committerEshel Yaron <me@eshelyaron.com>
Mon, 24 Jun 2024 07:11:07 +0000 (09:11 +0200)
(cherry picked from commit 23e08245c3f807f0da4f9b92eee9bb897533c088)

etc/NEWS [deleted file]
etc/NEWS.30 [new file with mode: 0644]

diff --git a/etc/NEWS b/etc/NEWS
deleted file mode 100644 (file)
index 5048072..0000000
--- a/etc/NEWS
+++ /dev/null
@@ -1,3194 +0,0 @@
-GNU Emacs NEWS -- history of user-visible changes.
-
-Copyright (C) 2022-2024 Free Software Foundation, Inc.
-See the end of the file for license conditions.
-
-Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
-If possible, use 'M-x report-emacs-bug'.
-
-This file is about changes in Emacs version 30.
-
-See file HISTORY for a list of GNU Emacs versions and release dates.
-See files NEWS.29, NEWS.28, ..., NEWS.18, and NEWS.1-17 for changes
-in older Emacs versions.
-
-You can narrow news to a specific version by calling 'view-emacs-news'
-with a prefix argument or by typing 'C-u C-h C-n'.
-
-Temporary note:
-+++ indicates that all relevant manuals in doc/ have been updated.
---- means no change in the manuals is needed.
-When you add a new item, use the appropriate mark if you are sure it
-applies, and please also update docstrings as needed.
-
-\f
-* Installation Changes in Emacs 30.1
-
-+++
-** Emacs has been ported to the Android operating system.
-This requires Emacs to be compiled on another computer.  The Android
-NDK, SDK, and a suitable Java compiler must also be installed.
-
-See the file 'java/INSTALL' for more details.
-
----
-** Native compilation is now enabled by default.
-'configure' will enable the Emacs Lisp native compiler, so long as
-libgccjit is present and functional on the system.  To disable native
-compilation, configure Emacs with the option:
-
-    ./configure --with-native-compilation=no
-
----
-** Emacs now defaults to ossaudio library for sound on NetBSD and OpenBSD.
-Previously configure used ALSA libraries if installed on the
-system when configured '--with-sound=yes' (which is the default), with
-fallback to libossaudio.  The libossaudio library included with the
-base system is now used even if ALSA is found to avoid relying on
-external packages and to resolve potential incompatibilities between
-Linux and BSD versions of ALSA.  Use '--with-sound=alsa' to build with
-ALSA on these operating systems instead.
-
----
-** Native JSON support is now always available; libjansson is no longer used.
-No external library is required.  The '--with-json' configure option has
-been removed.  'json-available-p' now always returns non-nil and is only
-kept for compatibility.
-
-\f
-* Startup Changes in Emacs 30.1
-
-** On GNU/Linux, Emacs is now the default application for 'org-protocol'.
-Org mode provides a way to quickly capture bookmarks, notes, and links
-using 'emacsclient':
-
-    emacsclient "org-protocol://store-link?url=URL&title=TITLE"
-
-Previously, users had to manually configure their GNU/Linux desktop
-environment to open 'org-protocol' links in Emacs.  These links should
-now open in Emacs automatically, as the "emacsclient.desktop" file now
-arranges for Emacs to be the default application for the 'org-protocol'
-URI scheme.  See the Org mode manual, Info node "(org) Protocols" for
-more details.
-
-\f
-* Incompatible Changes in Emacs 30.1
-
-** Mouse wheel events should now always be 'wheel-up/down/left/right'.
-At those places where the old 'mouse-4/5/6/7' events could still occur
-(i.e., X11 input in the absence of XInput2, and 'xterm-mouse-mode'),
-we remap them to the corresponding 'wheel-up/down/left/right' event,
-according to the new variable 'mouse-wheel-buttons'.
-The old variables 'mouse-wheel-up-event', 'mouse-wheel-down-event',
-'mouse-wheel-left-event', and 'mouse-wheel-right-event' are thereby
-obsolete.
-
-** Tree-Sitter modes are now declared as submodes of the non-TS modes.
-In order to help the use of those Tree-Sitter modes, they are now
-declared to have the corresponding non-Tree-Sitter mode as an
-additional parent.
-This way, things like ".dir-locals.el" settings, and YASnippet
-collections of snippets automatically apply to the new Tree-Sitter modes.
-
-Note that those modes still do not inherit from the non-TS mode, so
-configuration settings installed via mode hooks are not affected.
-
-+++
-** URL now never sends user email addresses in HTTP requests.
-Emacs never sent email addresses by default, but it used to be
-possible to customize 'url-privacy-level' so that the users email
-address was sent along in HTTP requests.  This feature has now been
-removed, as it was considered more dangerous than useful.  RFC 9110
-(§ 10.1.2) also recommends against it.  The user option
-'url-personal-mail-address' is now also obsolete.
-
-To send an email address in the header of individual HTTP requests,
-see the variable 'url-request-extra-headers'.
-
-** The default process filter was rewritten in native code.
-The round-trip through the Lisp function
-'internal-default-process-filter' is skipped when the process filter is
-the default one.  It's reimplemented in native code, reducing GC churn.
-
-To undo the change, set 'fast-read-process-output' to nil.
-
-\f
-* Changes in Emacs 30.1
-
-** 'describe-function' now shows the type of the function object.
-The text used to say things like "car is is a built-in function"
-whereas it now says "car is a primitive-function" where "primitive-function"
-is the symbol returned by 'cl-type-of' and you can click on it to get
-information about that type.
-
-** 'advice-remove' is now an interactive command.
-When called interactively, 'advice-remove' now prompts for an advised
-function to the advice to remove.
-
-** Emacs now supports Unicode Standard version 15.1.
-
-** New pre-defined values for 'electric-quote-chars'.
-The available customization options for 'electric-quote-chars' have been
-updated with common pairs of quotation characters, including "‘", "’",
-"“", "”", "«", "»", "‹", "›", "‚", "„", "「", "」", "『", and "』".
-The default is unchanged.
-
-** Network Security Manager
-
-+++
-*** The Network Security Manager now warns about 3DES by default.
-This cypher is no longer recommended owing to a major vulnerability
-disclosed in 2016, and its small 112 bit key size.  Emacs now warns
-about its use also when 'network-security-level' is set to 'medium'
-(the default).  See 'network-security-protocol-checks'.
-
----
-*** The Network Security Manager now warns about <2048 bits in DH key exchange.
-Emacs used to warn for Diffie-Hellman key exchanges with prime numbers
-smaller than 1024 bits.  Since more servers now support it, this
-number has been bumped to 2048 bits.
-
-** Help
-
-*** 'describe-function' shows function inferred type when available.
-For native compiled Lisp functions 'describe-function' prints (after
-the signature) the automatically inferred function type as well.
-
----
-*** New user option 'describe-bindings-outline-rules'.
-This user option controls outline visibility in the output buffer of
-'describe-bindings' when 'describe-bindings-outline' is non-nil.
-
----
-*** 'C-h m' ('describe-mode') uses outlining by default.
-Set 'describe-mode-outline' to nil to get back the old behavior.
-
-*** 'C-h k' ('describe-key') shows Unicode name.
-For keybindings which produce single characters via translation or input
-methods, 'C-h k' now shows the Unicode name of the produced character in
-addition to the character itself, e.g.
-
-'C-h k C-x 8 E' =>
-
-    € 'EURO SIGN' (translated from C-x 8 E)
-
-*** 'C-h b' ('describe-bindings') shows Unicode names.
-For keybindings which produce single characters via translation (such as
-those using the 'C-x 8' or 'A-' prefix, or 'dead-acute', 'dead-grave',
-etc), the Unicode names will now be shown in addition to the character
-itself, i.e.
-
-    A-!                        ¡      INVERTED EXCLAMATION MARK
-    A-$                        ¤      CURRENCY SIGN
-
-and so on.
-
-** Emacs now comes with Org v9.7.
-See the file "etc/ORG-NEWS" for user-visible changes in Org.
-
-** Outline mode
-
-*** New commands to show/hide outlines by regexp.
-'/ h' ('outline-hide-by-heading-regexp') asks for a regexp and then
-hides the body lines of all outlines whose heading lines match the
-regexp.  '/ s' ('outline-show-by-heading-regexp') does the same but
-shows the matched outlines.
-
-+++
-*** 'outline-minor-mode' is supported in tree-sitter major modes.
-It can be used in all tree-sitter major modes that set either the
-variable 'treesit-simple-imenu-settings' or 'treesit-outline-predicate'.
-
-** 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.
-
-** Emacs now updates invisible frames that are made visible by a compositor.
-If an invisible or an iconified frame is shown to the user by the
-compositing manager, Emacs will now redisplay such a frame even though
-'frame-visible-p' returns nil or 'icon' for it.  This can happen, for
-example, as part of preview for iconified frames.
-
----
-** New user option 'menu-bar-close-window'.
-When non-nil, selecting "Close" from the "File" menu or clicking
-"Close" in the tool bar will result in the current window being
-closed, if possible.
-
-+++
-** 'write-region-inhibit-fsync' now defaults to t in interactive mode,
-as it has in batch mode since Emacs 24.
-
-+++
-** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
-When non-nil, this option suppresses moving remote files to the local
-trash when deleting.  Default is nil.
-
----
-** New user option 'remote-file-name-inhibit-auto-save'.
-If this user option is non-nil, 'auto-save-mode' will not auto-save
-remote buffers.  The default is nil.
-
-+++
-** New user option 'remote-file-name-access-timeout'.
-When a positive number, this option limits the call of 'access-file'
-for remote files to this number of seconds.  Default is nil.
-
-+++
-** New user option 'yes-or-no-prompt'.
-This allows the user to customize the prompt that is appended by
-'yes-or-no-p' when asking questions.  The default value is
-"(yes or no) ".
-
----
-** New face 'display-time-date-and-time'.
-This is used for displaying the time and date components of
-'display-time-mode'.
-
----
-** New icon images for general use.
-Several symbolic icons are added to "etc/images/symbols", including
-plus, minus, check-mark, star, etc.
-
-+++
-** Tool bars can now be placed on the bottom on more systems.
-The 'tool-bar-position' frame parameter can be set to 'bottom' on all
-window systems other than Nextstep.
-
-+++
-** New global minor mode 'modifier-bar-mode'.
-When this minor mode is enabled, buttons representing modifier keys
-are displayed along the tool bar.
-
-+++
-** New user option 'tool-bar-always-show-default'.
-When non-nil, the tool bar at the top of a frame does not show buffer
-local customization of the tool bar.  The default value is nil.
-
-+++
-** "d" in the mode line now indicates that the window is dedicated.
-Windows have always been able to be dedicated to a specific buffer;
-see 'window-dedicated-p'.  Now the mode line indicates the dedicated
-status of a window, with "d" appearing in the mode line if a window is
-dedicated and "D" if the window is strongly dedicated.  This indicator
-appears before the buffer name, and after the buffer modification and
-remote buffer indicators (usually "---" together).
-
-+++
-** New command 'toggle-window-dedicated'.
-This makes it easy to interactively mark a specific window as
-dedicated, so it won't be reused by 'display-buffer'.  This can be
-useful for complicated window setups.  It is bound to 'C-x w d'
-globally.
-
----
-** New user option 'uniquify-dirname-transform'.
-This can be used to customize how buffer names are uniquified, by
-making arbitrary transforms on the buffer's directory name (whose
-components are used to uniquify buffer names when they clash).  You
-can use this to distinguish between buffers visiting files with the
-same base name that belong to different projects by using the provided
-transform function 'project-uniquify-dirname-transform'.
-
-** 'insert-directory-program' is now a user option.
-On *BSD and macOS systems, this user option now defaults to the "gls"
-executable, if it exists.  This should remove the need to change its
-value when installing GNU coreutils using something like ports or
-Homebrew.
-
-+++
-** CL Print
-
-+++
-*** You can expand the "..." truncation everywhere.
-The code that allowed "..." to be expanded in the "*Backtrace*" buffer
-should now work anywhere the data is generated by 'cl-print'.
-
-+++
-*** The 'backtrace-ellipsis' button is replaced by 'cl-print-ellipsis'.
-
-+++
-*** hash-tables' contents can be expanded via the ellipsis.
-
-+++
-*** Modes can control the expansion via 'cl-print-expand-ellipsis-function'.
-
-+++
-*** New setting 'raw' for 'cl-print-compiled'.
-This setting causes byte-compiled functions to be printed in full by
-'prin1'.  A button on this output can be activated to disassemble the
-function.
-
-+++
-*** There is a new chapter in the CL manual documenting cl-print.el.
-See the Info node "(cl) Printing".
-
-** Modeline elements can now be right-aligned.
-Anything following the symbol 'mode-line-format-right-align' in
-'mode-line-format' will be right-aligned.  Exactly where it is
-right-aligned to is controlled by the new user option
-'mode-line-right-align-edge'.
-
-** Windows
-
-+++
-*** New action alist entry 'some-window' for 'display-buffer'.
-It specifies which window 'display-buffer-use-some-window' should prefer.
-For example, when 'display-buffer-base-action' is customized to
-'(nil . ((some-window . mru)))', then a buffer will be displayed
-in the same most recently used window from consecutive calls of
-'display-buffer' (in a configuration with more than two windows).
-
-+++
-*** New action alist entry 'category' for 'display-buffer'.
-If the caller of 'display-buffer' passes '(category . symbol)'
-in its 'action' argument, you can match the displayed buffer
-by adding '(category . symbol)' to the condition part of
-'display-buffer-alist' entries.
-
-+++
-*** New action alist entry 'post-command-select-window' for 'display-buffer'.
-It specifies whether the window of the displayed buffer should be
-selected or deselected at the end of executing the current command.
-
----
-*** User option 'display-comint-buffer-action' is now obsolete.
-You can use a '(category . comint)' condition in 'display-buffer-alist'
-to match buffers displayed by comint-related commands.  Another
-user option 'display-tex-shell-buffer-action' is obsolete too
-for which you can use '(category . tex-shell)'.
-
-+++
-*** New variable 'window-restore-killed-buffer-windows'.
-It specifies how 'set-window-configuration' and 'window-state-put'
-should proceed with windows whose buffer was killed after the
-corresponding configuration or state was recorded.
-
-*** New variable 'window-point-context-set-function'.
-It can be used to set a context for window point in all windows by
-'window-point-context-set' before calling 'current-window-configuration'
-and 'window-state-get'.  Then later another new variable
-'window-point-context-use-function' can be used by
-'window-point-context-use' after 'set-window-configuration' and
-'window-state-put' to restore positions of window points
-according to the context stored in a window parameter.
-
-+++
-*** New functions 'set-window-cursor-type' and 'window-cursor-type'.
-'set-window-cursor-type' sets a per-window cursor type, and
-'window-cursor-type' queries this setting for a given window.  Windows
-are always created with a 'window-cursor-type' of t, which means to
-consult the variable 'cursor-type' as before.
-
-** Tab Bars and Tab Lines
-
----
-*** New user option 'tab-bar-select-restore-context'.
-It uses 'window-point-context-set' to save contexts where
-window points were located before switching away from the tab,
-and 'window-point-context-use' to restore positions of window
-points after switching back to that tab.
-
----
-*** New user option 'tab-bar-select-restore-windows'.
-It defines what to do with windows whose buffer was killed since the tab
-was last selected.  By default it displays a placeholder buffer
-with the name " *Old buffer <name>*" that provides information about
-the name of the killed buffer that was displayed in that window.
-
----
-*** New user option 'tab-bar-tab-name-format-functions'.
-It can be used to add, remove and reorder functions that change the
-appearance of every tab on the tab bar.
-
----
-*** New hook 'tab-bar-tab-post-select-functions'.
-
----
-*** New keymap 'tab-bar-mode-map'.
-By default it contains a keybinding 'C-TAB' to switch tabs, but only
-when 'C-TAB' is not bound globally.  You can unbind it if it conflicts
-with 'C-TAB' in other modes.
-
----
-*** New keymap 'tab-line-mode-map'.
-By default it contains keybindings for switching tabs: 'C-x <left>',
-'C-x <right>', 'C-x C-<left>', 'C-x C-<right>'.  You can unbind them if
-you want to use these keys for the commands 'previous-buffer' and
-'next-buffer'.
-
----
-*** Default list of tabs is changed to support a fixed order.
-This means that 'tab-line-tabs-fixed-window-buffers', the new default
-tabs function, is like the previous 'tab-line-tabs-window-buffers' where
-both of them show only buffers that were previously displayed in the
-window.  But the difference is that the new function always keeps the
-original order of buffers on the tab line, even after switching between
-these buffers.  You can drag the tabs and release at a new position
-to manually reorder the buffers on the tab line.
-
----
-*** New user option 'tab-line-tabs-buffer-group-function'.
-It provides two choices to group tab buffers by major mode and by
-project name.
-
----
-*** Buffers on group tabs are now sorted alphabetically.
-This will keep the fixed order of tabs, even after switching between
-them.
-
-+++
-** New optional argument for modifying directory-local variables.
-The commands 'add-dir-local-variable', 'delete-dir-local-variable' and
-'copy-file-locals-to-dir-locals' now take an optional prefix argument,
-to enter the file name you want to modify.
-
-** Emacs Server and Client
-
----
-*** 'server-eval-args-left' can be used to pop and eval subsequent args.
-When '--eval' is passed to emacsclient and Emacs is evaluating each
-argument, this variable is set to those arguments not yet evaluated.
-It can be used to 'pop' arguments and process them by the function
-called in the '--eval' expression, which is useful when those
-arguments contain arbitrary characters that otherwise might require
-elaborate and error-prone escaping (to protect them from the shell).
-
-** Registers
-
-+++
-*** New user option 'register-confirm-overwrite'.
-Emacs now defaults to asking for confirmation before overwriting
-registers with existing contents.  To disable such confirmation,
-customize this option to nil.
-
-+++
-*** Commands that use register contents now preview only relevant registers.
-For example, 'jump-to-register' now only shows registers that you can
-actually jump to in the *Register Preview* buffer.
-
-+++
-** 'recover-file' can show diffs between auto save file and current file.
-When answering the prompt with "diff" or "=", it now shows the diffs
-between the auto save file and the current file.
-
----
-** 'ffap-lax-url' now defaults to nil.
-Previously, it was set to t but this broke remote file name detection.
-
-+++
-** Multi-character key echo now ends with a suggestion to use Help.
-Customize 'echo-keystrokes-help' to nil to prevent that.
-
-+++
-** 'read-passwd' can toggle the visibility of passwords.
-Use 'TAB' in the minibuffer to show or hide the password.  Likewise,
-there is an icon on the mode-line, which toggles the visibility of the
-password when clicking with 'mouse-1'.
-
-+++
-** Support for styled underline face attributes.
-These are implemented as new values of the 'style' attribute in a face
-underline specification, 'double-line', 'dots', and 'dashes', and are
-available on GUI systems.  If your terminal's termcap or terminfo
-database entry defines the 'Su' or 'Smulx' capability, Emacs will also
-emit the prescribed escape sequence to render faces with such styles on
-TTY frames.
-
----
-** Support for underline colors on TTY frames.
-Colors specified in face underlines will now also be displayed in TTY
-frames with the previously mentioned capabilities.
-
-** Miscellaneous
-
----
-*** New face 'appt-notification' for 'appt-display-mode-line'.
-It can be used to customize the look of the appointment notification
-displayed on the mode line when 'appt-display-mode-line' is non-nil.
-
----
-*** Emacs now recognizes shebang lines that pass '-S'/'--split-string' to 'env'.
-When visiting a script that invokes 'env -S INTERPRETER ARGS...' in
-its shebang line, Emacs will now skip over 'env -S' and deduce the
-major mode based on the interpreter after 'env -S'.
-
-+++
-** New function 'sqlite-execute-batch'.
-This function lets the user execute multiple SQL statements in one go.
-It is useful, for example, when a Lisp program needs to evaluate an
-entire SQL file.
-
-** The default value of 'read-process-output-max' was increased to 65536.
-\f
-* Editing Changes in Emacs 30.1
-
-+++
-** New minor mode 'visual-wrap-prefix-mode'.
-When enabled, continuation lines displayed for a wrapped long line
-will receive a 'wrap-prefix' automatically computed from the line's
-surrounding context, such that continuation lines are indented on
-display as if they were filled with 'M-q' or similar.  Unlike 'M-q',
-the indentation only happens on display, and doesn't change the buffer
-text in any way.  The global minor mode
-'global-visual-wrap-prefix-mode' enables this minor mode in all
-buffers.
-
-(This minor mode is the 'adaptive-wrap' ELPA package renamed and
-lightly edited for inclusion in Emacs.)
-
-+++
-** New user option 'gud-highlight-current-line'.
-When enabled, Gud will visually emphasize the line being executed upon
-pauses in the debugee's execution, such as those occasioned by
-breakpoints being hit.
-
----
-** New global minor mode 'kill-ring-deindent-mode'.
-When enabled, text being saved to the kill ring will be de-indented by
-the column number at its start.  For example, saving the entire
-function call within:
-
-foo ()
-{
-  long_function_with_several_arguments (argument_1_compute (),
-                                       argument_2_compute (),
-                                       argument_3_compute ());
-}
-
-will save:
-
-long_function_with_several_arguments (argument_1_compute (),
-                                     argument_2_compute (),
-                                     argument_3_compute ())
-
-to the kill ring, omitting the two columns of extra indentation that
-would otherwise be present in the second and third lines of the
-function call.
-
-+++
-** Emacs now has better support for touchscreen devices.
-On systems that understand them (at present X, Android, PGTK, and
-MS-Windows), many touch screen gestures are now implemented and
-translated into mouse or gesture events, and support for tapping tool
-bar buttons and opening menus has been written.  Countless packages,
-such as Dired and Custom have been adjusted to better understand touch
-screen input.
-
----
-** On X, Emacs now supports input methods which perform "string conversion".
-This means an input method can now ask Emacs to delete text
-surrounding point and replace it with something else, as well as query
-Emacs for surrounding text.  If your input method allows you to "undo"
-mistaken compositions, this will now work as well.
-
----
-** New command 'kill-matching-buffers-no-ask'.
-This works like 'kill-matching-buffers', but without asking for
-confirmation.
-
----
-** New user option 'duplicate-region-final-position'.
-It controls the placement of point and the region after duplicating a
-region with 'duplicate-dwim'.
-
-+++
-** New user option 'mouse-prefer-closest-glyph'.
-When enabled, clicking or dragging with the mouse will put the point
-or start the drag in front of the buffer position corresponding to the
-glyph with the closest X coordinate to the click or start of the drag.
-In other words, if the mouse pointer is in the right half of a glyph,
-point will be put after the buffer position corresponding to that glyph,
-whereas if the mouse pointer is in the left half of a glyph, point
-will be put in front the buffer position corresponding to that glyph.
-By default this is disabled.
-
-** Internationalization
-
----
-*** Users in CJK locales can control width of some non-CJK characters.
-Some characters are considered by Unicode as "ambiguous" with respect
-to their display width: either "full-width" (i.e., taking 2 columns on
-display) or "narrow" (taking 1 column).  The actual width depends on
-the fonts used for these characters by Emacs or (for text-mode frames)
-by the terminal emulator.  Traditionally, font sets in CJK locales
-were set up so as to display these characters as full-width, and thus
-Emacs modified the char-width table in those locales to follow suit.
-Lately, the tendency is to display these characters as narrow.  The
-new user option 'cjk-ambiguous-chars-are-wide' allows users to control
-whether Emacs considers these characters as full-width (the default)
-or narrow (if the variable is customized to the nil value).
-
-This setting affects the results of 'string-width' and similar
-functions in CJK locales.
-
----
-*** New input methods for the Urdu, Pashto, and Sindhi languages.
-These languages are spoken in Pakistan and Afghanistan.
-
----
-*** New input method "english-colemak".
-This input method supports the Colemak keyboard layout.
-
-*** Additional 'C-x 8' key translations for "æ" and "Æ".
-These characters can now be input with 'C-x 8 a e' and 'C-x 8 A E',
-respectively, in addition to the existing translations 'C-x 8 / e' and
-'C-x 8 / E'.
-
-*** New 'C-x 8' key translations for "low" quotes "„", and "‚".
-These can now be entered with 'C-x , "' and 'C-x , ''.
-
-*** New German language 'C-x 8' key translations for quotation marks.
-The characters "„", "“", and "”" can now be entered with 'C-x 8 v',
-'C-x 8 b' and 'C-x 8 n'.  The single versions "‚", "‘", and "’" can now
-be entered with 'C-x 8 V', 'C-x 8 B' and 'C-x 8 N'.  These characters
-are used for the official German quoting style.  Using them requires
-activating German language support via 'iso-transl-set-language'.
-
-*** "latin-prefix" and "latin-postfix" quotation marks additions.
-These input methods can now produce single, double and "low" left and
-right quotation marks:
-
-    "‘", "’", "“", "”", "„", and "‚"
-
-by using "[", "]", and "," for "left", "right", and "low" respectively
-to modify "'" and """.
-
-*** "latin-prefix" and "latin-postfix" guillemets support.
-These input methods can now produce single guillemets "‹" and "›".  For
-"latin-prefix" use "~~<" and "~~>", for "latin-postfix" use "<~" and
-">~".  Double guillemets ("«" and "»") were already supported.
-
-*** New French language 'C-x 8' key translations for "‹" and "›".
-These characters can now be entered using 'C-x 8 ~ <' and 'C-x 8 ~ >'
-respectively, after activating French language support via
-'iso-transl-set-language'.  Double guillemets were already supported via
-'C-x 8 <' and 'C-x 8 >'
-
-*** Additional 'C-x 8' key translation for Euro "€" currency symbol.
-This can now be entered using 'C-x 8 E' in addition to the existing
-'C-x 8 * E' translation.
-
-\f
-* Changes in Specialized Modes and Packages in Emacs 30.1
-
----
-** Titdic-cnv
-Most of the variables and functions in the file have been renamed to
-make sure they all use a 'tit-' namespace prefix.
-
----
-** Trace
-In batch mode, tracing now sends the trace to stdout.
-
-+++
-** Mwheel
-The 'wheel-up/down/left/right' events are now bound unconditionally,
-and the 'mouse-wheel-up/down/left/right-event' variables are thus used
-only to specify the 'mouse-4/5/6/7' events that might still
-happen to be generated by some old packages (or if 'mouse-wheel-buttons'
-has been set to nil).
-
-** Xterm Mouse mode
-This mode now emits 'wheel-up/down/right/left' events instead of
-'mouse-4/5/6/7' events for the mouse wheel.
-It uses the new variable 'mouse-wheel-buttons' to decide which button
-maps to which wheel event (if any).
-
-** Xref
-
-+++
-*** You can now bookmark (and later restore) "*xref*" buffers.
-
-** Info
-
----
-*** New user option 'Info-url-alist'.
-This user option associates manual names with URLs.  It affects the
-'Info-goto-node-web' command.  By default, associations for all
-Emacs-included manuals are set.  Further associations can be added for
-arbitrary Info manuals.
-
-*** Emacs can now display Info manuals compressed with 'lzip'.
-This requires the 'lzip' program to be installed on your system.
-
-+++
-** New command 'lldb'.
-Run the LLDB debugger, analogous to the 'gud-gdb' command.
-
-** GDB MI
-
----
-*** Variable order and truncation can now be configured in 'gdb-many-windows'.
-The new user option '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'.
-
-By default, this user option 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'.
-
-If you want to get back the old behavior, set the user option to the value
-
-    (setopt gdb-locals-table-row-config
-            `((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
-
----
-*** New user option 'gdb-display-io-buffer'.
-If this is nil, 'M-x gdb' will neither create nor display a separate
-buffer for the I/O of the program being debugged, but will instead
-redirect the program's interaction to the GDB execution buffer.  The
-default is t, to preserve previous behavior.
-
-** Grep
-
-*** New user option 'grep-use-headings'.
-When non-nil, the output of Grep is split into sections, one for each
-file, instead of having file names prefixed to each line.  It is
-equivalent to the "--heading" option of some tools such as 'git grep'
-and 'rg'.  The headings are displayed using the new 'grep-heading'
-face.
-
-** Compilation mode
-
----
-*** The 'omake' matching rule is now disabled by default.
-This is because it partly acts by modifying other rules which may
-occasionally be surprising.  It can be re-enabled by adding 'omake' to
-'compilation-error-regexp-alist'.
-
-*** Lua errors and stack traces are now recognized.
-Compilation mode now recognizes Lua language errors and stack traces.
-Every Lua error is recognized as a compilation error, and every Lua
-stack frame is recognized as a compilation info.
-
-** Project
-
-+++
-*** New user option 'project-mode-line'.
-When non-nil, display the name of the current project on the mode
-line.  Clicking 'mouse-1' on the project name pops up the project
-menu.  The default value is nil.
-
-*** New user option 'project-file-history-behavior'.
-Customizing it to 'relativize' makes commands like 'project-find-file'
-and 'project-find-dir' display previous history entries relative to
-the current project.
-
-*** New user option 'project-key-prompt-style'.
-The look of the key prompt in the project switcher has been changed
-slightly.  To get the previous one, set this option to 'brackets'.
-
-*** 'project-try-vc' tries harder to find the responsible VCS.
-When 'project-vc-extra-root-markers' is non-nil, and causes a
-subdirectory project to be detected which is not a VCS root, we now
-additionally traverse the parent directories until a VCS root is found
-(if any), so that the ignore rules for that repository are used, and
-the file listing's performance is still optimized.
-
-*** New commands 'project-any-command' and 'project-prefix-or-any-command'.
-The former is now bound to 'C-x p o' by default.
-The latter is designed primarily for use as a value of
-'project-switch-commands'.  If instead of a short menu you prefer to
-have access to all keys defined inside 'project-prefix-map', as well
-as global bindings (to run other commands inside the project root),
-you can add this to your init script:
-
-    (setopt project-switch-commands #'project-prefix-or-any-command)
-
----
-*** New variable 'project-files-relative-names'.
-If it's non-nil, 'project-files' can return file names relative to the
-project root.  Project backends can use this to improve the performance
-of their 'project-files' implementation.
-
-** VC
-
----
-*** Log-Edit buffers now display a tool bar.
-This tool bar contains items for committing log entries and editing or
-generating log entries, among other editing operations.
-
----
-*** 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.
-
----
-*** New value 'no-backend' for user option 'vc-display-status'.
-With this value only the revision number is displayed on the mode-line.
-
----
-*** Obsolete command 'vc-switch-backend' re-added as 'vc-change-backend'.
-The command was previously obsoleted and unbound in Emacs 28.
-
-*** Support for viewing VC change history across renames.
-When a fileset's VC change history ('C-x v l') ends at a rename, we
-now print the old name(s) and a button which jumps to their history.
-Git and Hg are supported.  Naturally, 'vc-git-print-log-follow' should
-be nil for this to work (or '--follow' should not be in
-'vc-hg-print-log-switches', in Hg's case).  Unlike when the '--follow'
-switch is used, commands to see the diff of the old revision ('d'),
-check out an old file version ('f') or annotate it right away ('a'),
-also work on revisions which precede renames.
-
----
-*** 'vc-annotate' now abbreviates the Git revision in the buffer name.
-When using the Git backend, 'vc-annotate' will use an abbreviated
-revision identifier in its buffer name.  To restore the previous
-behavior, set 'vc-annotate-use-short-revision' to nil.
-
-*** New option 'vc-git-file-name-changes-switches'.
-It allows tweaking the thresholds for rename and copy detection.
-
-** Diff mode
-
----
-*** New user option 'diff-refine-nonmodified'.
-When this is non-nil, 'diff-refine' will highlight lines that were added
-or removed in their entirety (as opposed to modified lines, where some
-parts of the line were modified), using the same faces as for
-highlighting the words added and removed within modified lines.  The
-default value is nil.
-
-+++
-*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks.
-When called with a non-nil prefix argument,
-'diff-ignore-whitespace-hunk' now iterates over all the hunks in the
-current diff, regenerating them without whitespace changes.
-
-+++
-*** New user option 'diff-ignore-whitespace-switches'.
-This allows changing which type of whitespace changes are ignored when
-regenerating hunks with 'diff-ignore-whitespace-hunk'.  Defaults to
-the previously hard-coded "-b".
-
-*** New command 'diff-apply-buffer' bound to 'C-c RET a'.
-It applies the diff in the entire diff buffer and
-saves all modified file buffers.
-
-** Isearch and Replace
-
-*** New command 'replace-regexp-as-diff'.
-It reads a regexp to search for and a string to replace with, then
-displays a buffer with replacements as diffs.  After reviewing the
-changes in the output buffer you can apply the replacements as
-a patch to the current file buffer.  There are also new commands
-'multi-file-replace-regexp-as-diff' that shows as diffs replacements
-in a list of specified files, and 'dired-do-replace-regexp-as-diff'
-that shows as diffs replacements in the marked files in Dired.
-
-** Dired
-
----
-*** New user option 'dired-movement-style'.
-When non-nil, make 'dired-next-line', 'dired-previous-line',
-'dired-next-dirline', 'dired-prev-dirline' skip empty lines.
-It also controls how to move point when encountering a boundary
-(e.g., if every line is visible, invoking 'dired-next-line' at
-the last line will move to the first line).  The default is nil.
-
-*** New user option 'dired-filename-display-length'.
-It is an integer representing the maximum display length of filenames.
-The middle part of a filename whose length exceeds the restriction is
-hidden and an ellipsis is displayed instead.  A value of 'window'
-means using the right edge of window as the display restriction.  The
-default is nil.
-
-*** New user option 'shell-command-guess-functions'.
-It defines how to populate a list of commands available
-for 'M-!', 'M-&', '!', '&' and the context menu "Open With"
-based on marked files in Dired.  Possible backends are
-'dired-guess-default', MIME types, XDG configuration
-and a universal command such as "open" or "start"
-that delegates to the OS.
-
-*** New command 'dired-do-open'.
-This command is bound to 'E' (mnemonics "External").  Also it can be
-used by clicking "Open" in the context menu; it "opens" the marked or
-clicked on files according to the OS conventions.  For example, on
-systems supporting XDG, this runs 'xdg-open' on the files.
-
-*** New variable 'dired-guess-shell-alist-optional'.
-It contains commands for external viewers and players for various media
-formats, moved to this list from 'dired-guess-shell-alist-default'.
-
-*** The default value of 'dired-omit-size-limit' was increased.
-After performance improvements to omitting in large directories, the new
-default value is 300k, up from 100k.  This means 'dired-omit-mode' will
-omit files in directories whose directory listing is up to 300 kilobytes
-in size.
-
-+++
-*** 'dired-listing-switches' handles connection-local values if exist.
-This allows to customize different switches for different remote machines.
-
-** Ediff
-
----
-*** New user option 'ediff-floating-control-frame'.
-If non-nil, try making the control frame be floating rather than tiled.
-
-Many X tiling window managers make the Ediff control frame a tiled
-window equal in size to the main Emacs frame, which works poorly.
-This option is useful to set if you use such a window manager.
-
-** Buffer Selection
-
----
-*** 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
-
-+++
-*** You can now run Eshell scripts in batch mode.
-By adding the following interpreter directive to an Eshell script, you
-can make it executable like other shell scripts:
-
-    #!/usr/bin/env -S emacs --batch -f eshell-batch-file
-
-+++
-*** New builtin Eshell command 'compile'.
-This command runs another command, sending its output to a compilation
-buffer when the command would output interactively.  This can be useful
-when defining aliases so that they produce a compilation buffer when
-appropriate, but still allow piping the output elsewhere if desired.
-For more information, see the "(eshell) Built-ins" node in the Eshell
-manual.
-
-+++
-*** Eshell's 'env' command now supports running commands.
-Like in many other shells, Eshell's 'env' command now lets you run a
-command passed as arguments to 'env'.  If you pass any initial
-arguments of the form 'VAR=VALUE', 'env' will first set 'VAR' to
-'VALUE' before running the command.
-
----
-*** Eshell's 'umask' command now supports setting the mask symbolically.
-Now, you can pass an argument like "u+w,o-r" to Eshell's 'umask'
-command, which will give write permission for owners of newly-created
-files and deny read permission for users who are not members of the
-file's group.  See the Info node "(coreutils) File permissions" for
-more information on this notation.
-
----
-*** Performance improvements for interactive output in Eshell.
-Interactive output in Eshell should now be significantly faster,
-especially for commands that can print large amounts of output
-(e.g. "cat").  For external commands, Eshell saves time by only looking
-for password prompts in the last 256 characters of each block of output.
-To restore the previous behavior when checking for password prompts, set
-'eshell-password-prompt-max-length' to 'most-positive-fixnum'.
-
----
-*** Eshell built-in commands can now display progress.
-Eshell built-in commands like "cat" and "ls" now update the display
-periodically while running to show their progress.
-
-+++
-*** New special reference type '#<marker POSITION BUFFER>'.
-This special reference type returns a marker at 'POSITION' in
-'BUFFER'.  You can insert it by typing or using the new interactive
-command 'eshell-insert-marker'.  You can also insert special
-references of any type using the new interactive command
-'eshell-insert-special-reference'.  See the "(eshell) Arguments" node
-in the Eshell manual for more details.
-
-+++
-*** 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.
-
-+++
-*** You can now splice Eshell globs in-place into argument lists.
-By setting 'eshell-glob-splice-results' to a non-nil value, Eshell
-will expand glob results in-place as if you had typed each matching
-file name individually.  For more information, see the "(eshell)
-Globbing" node in the Eshell manual.
-
-+++
-*** Eshell now supports negative numbers and ranges for indices.
-Now, you can retrieve the last element of a list with '$my-list[-1]'
-or get a sublist of elements 2 through 4 with '$my-list[2..5]'.  For
-more information, see the "(eshell) Dollars Expansion" node in the
-Eshell manual.
-
-+++
-*** Eshell commands can now be explicitly-remote (or local).
-By prefixing a command name in Eshell with a remote identifier, like
-"/ssh:user@remote:whoami", you can now run commands on a particular
-host no matter your current directory.  Likewise, you can run a
-command on your local system no matter your current directory via
-"/local:whoami".  For more information, see the "(eshell) Remote Access"
-node in the Eshell manual.
-
-+++
-*** Eshell's '$UID' and '$GID' variables are now connection-aware.
-Now, when expanding '$UID' or '$GID' in a remote directory, the value
-is the user or group ID associated with the remote connection.
-
----
-*** Eshell now uses 'field' properties in its output.
-In particular, this means that pressing the '<home>' key moves the
-point to the beginning of your input, not the beginning of the whole
-line.  If you want to go back to the old behavior, add something like
-this to your configuration:
-
-    (keymap-set eshell-mode-map "<home>" #'eshell-bol-ignoring-prompt)
-
-This also means you no longer need to adjust 'eshell-prompt-regexp'
-when customizing your Eshell prompt.
-
----
-*** You can now properly unload Eshell.
-Calling '(unload-feature 'eshell)' no longer signals an error, and now
-correctly unloads Eshell and all of its modules.
-
-+++
-*** 'eshell-read-aliases-list' is now an interactive command.
-After manually editing 'eshell-aliases-file', you can use this command
-to load the edited aliases.
-
-+++
-*** 'rgrep' is now a builtin command.
-Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
-calling external rgrep.
-
-+++
-*** If a command exits abnormally, the Eshell prompt now shows its exit code.
-
-+++
-*** New user option 'eshell-history-append'.
-If non-nil, each Eshell session will save history by appending new
-entries of that session to the history file rather than overwriting
-the file with the whole history of the session.  The default is nil.
-
-** Minibuffer and Completions
-
-+++
-*** 'SPC' in the minibuffer now inserts a space.
-'SPC' no longer completes by word in the minibuffer.  To have 'SPC'
-perform minibuffer completion, add the following form to your init file:
-
-  (keymap-set minibuffer-local-completion-map "SPC" #'minibuffer-complete)
-
-+++
-*** Highlight the part of your input that prevents matching any completion.
-When completion fails, Emacs now momentarily highlights the part of your
-minibuffer input that prevents it from matching any of the possible
-completion candidates.  You can customize the new user option
-'minibuffer-pulse-failing-completion' to control this behavior.
-
-*** New commands 'previous-line-completion' and 'next-line-completion'.
-Bound to '<up>' and '<down>' arrow keys, respectively, they navigate
-the "*Completions*" buffer vertically by lines, wrapping at the
-top/bottom when 'completion-auto-wrap' is non-nil.
-
-*** New command 'minibuffer-apply'.
-This command, bound to 'C-j' in the minibuffer during completion, acts
-on the current input without exiting the minibuffer.  The action that
-this command performs mirrors what the command that initiated the
-minibuffer does.
-
-+++
-*** New value 'historical' for user option 'completions-sort'.
-When 'completions-sort' is set to 'historical', completion candidates
-will be first sorted alphabetically, and then re-sorted by their order
-in the minibuffer history, with more recent candidates appearing first.
-
-+++
-*** New commands for narrowing (restricting) minibuffer completions list.
-You can now use 'C-x n n' ('minibuffer-narrow-completions-to-current')
-in the minibuffer to restrict the list of possible completions to only
-include candidates matching the current minibuffer input.  New command
-'C-x n m' ('minibuffer-narrow-completions') is similar, but uses an
-alternative restriction method that depends on the relevant completion
-candidates.  For example, commands that read an Elisp symbol let you
-restrict the completions list with 'C-x n m' to only include symbols
-with a given property.  Similarly, commands that read a bookmark name
-let you restrict the completions list to only include bookmarks of a
-given type.  See the new Info node "(emacs) Narrow Completions" for
-more information.
-
-+++
-*** New command for reordering the minibuffer completions list.
-You can now use 'C-x C-v' ('minibuffer-sort-completions') in the
-minibuffer to change the sort order of the completions list.  If you
-invoke this command with a negative prefix argument ('C-- C-x C-v'),
-it reverses the current order.
-
-+++
-*** New command 'minibuffer-cycle-completion'.
-This command, bound to 'C-o' in the minibuffer, expands the current
-minibuffer contents to the first matching completion, and cycles among
-all matching candidates if you call it repeatedly.  This is similar to
-'minibuffer-complete' ('TAB' in the minibuffer) with non-nil
-'completion-cycle-threshold', except that
-'minibuffer-cycle-completion' always cycles, regardless of the value
-of 'completion-cycle-threshold' and the number of completion
-candidates.
-
-+++
-*** New command 'minibuffer-restore-completion-input'.
-This command, bound to 'C-l' in the minibuffer, restores the (partial)
-input that you last used for completion in the current minibuffer.
-
-+++
-*** New command 'minibuffer-toggle-completion-ignore-case'.
-This command, bound to 'C-A' in the minibuffer, toggles completion
-case-sensitivity for the current minibuffer.
-
-*** New minor mode 'completions-auto-update-mode'.
-This global minor mode automatically updates the *Completions* buffer
-as you type in the minibuffer.
-
-+++
-*** New command 'crm-change-separator'.
-This command lets you change the separator that
-'completing-read-multiple' uses to split your input to multiple
-strings.  'completing-read-multiple' binds 'C-x ,' to
-'crm-change-separator' in the minibuffer.
-
-+++
-*** New command 'crm-complete-and-insert-separator'.
-This command, bound to 'C-,' in 'completing-read-multiple'
-minibuffers, completes partial inputs that are already in the
-minibuffer, and inserts a new separator at the end of the minibuffer
-for you to insert a another input.
-
-+++
-*** Highlight 'completing-read-multiple' separators in the minibuffer.
-Emacs now highlights input separators when you provide multiple inputs
-in the minibuffer for 'completing-read-multiple'.  This highlighting
-uses the new 'crm-separator' face.
-
-+++
-*** 'completion-category-overrides' supports more metadata.
-The new supported completion properties are 'cycle-sort-function',
-'display-sort-function', 'annotation-function', 'affixation-function',
-and 'group-function'.  You can now customize them for any category in
-'completion-category-overrides' that will override the properties
-defined in completion metadata.
-
-+++
-*** File name completions can now provide detailed candidate annotations.
-With non-nil user option 'completions-detailed', Emacs now displays
-extra details about file name completion candidates in the
-"*Completions*" buffer as completion annotations.  This affects
-commands that read a file name with completion, such as 'C-x C-f'.
-
-+++
-*** Buffer name completions can now provide detailed candidate annotations.
-With non-nil user option 'completions-detailed', Emacs now displays
-extra details about buffer name completion candidates in the
-"*Completions*" buffer as completion annotations.  This affects
-commands that read a buffer name with completion, such as 'C-x b'.
-
----
-*** 'M-x' completions can now show a short description next to each candidate.
-Emacs now displays short descriptions next to command name completion
-candidates when user option 'completions-detailed' in non-nil.
-
-+++
-*** New command 'minibuffer-set-completion-styles'.
-This command, bound to 'C-x /' in the minibuffer, lets you set the
-completion styles for the current minibuffer.  See Info node
-"(emacs)Completion Styles" for more information about this new
-command, and completion styles in general.
-
-+++
-*** 'completion-extra-properties' supports more metadata.
-The new supported completion properties are 'category',
-'group-function', 'display-sort-function', and 'cycle-sort-function'.
-
-+++
-*** The completions heading line now displays more information.
-In particular, the heading line now mentions the completions category,
-which you can use to customize completion behavior via
-'completion-category-overrides'.  As is Emacs 29, user option
-'completions-header-format' controls the format of the heading line,
-and you can now customize the face 'completions-heading' to control
-its appearance.
-
-+++
-*** Highlight previous minibuffer inputs in the completions list.
-Emacs now highlights completion candidates that appear in the
-minibuffer history with face 'completions-previous-input' in the
-"*Completions*" buffer.  You can disable this highlighting by
-customizing 'completions-highlight-previous-inputs' to nil.
-
-** Pcomplete
-
----
-*** New user option 'pcomplete-remote-file-ignore'.
-When this option is non-nil, remote file names are not completed by
-Pcomplete.  Packages, like 'shell-mode', could set this in order to
-suppress remote file name completion at all.
-
----
-*** Completion for the 'doas' command has been added.
-Command completion for 'doas' in Eshell and Shell mode will now work.
-
-** Shell mode
-
-+++
-*** New user option 'shell-get-old-input-include-continuation-lines'.
-When this user option is non-nil, 'shell-get-old-input' ('C-RET')
-includes multiple shell "\" continuation lines from command output.
-Default is nil.
-
-+++
-*** New user option 'shell-history-file-name'.
-When this user option is set to t, 'shell-mode' does not read the shell
-history file.  Setting this user option to a string specifies the name
-of the shell history file to be read.  A nil value triggers reading the
-environment variable 'HISTFILE'.
-
-In a 'shell' buffer, this user option is connection-local.
-
----
-*** Performance improvements for interactive output.
-Interactive output in Shell mode now scans more selectively for password
-prompts by only examining the last 256 characters of each block of
-output, reducing the time spent when printing large amounts of output.
-To restore the old behavior, set 'comint-password-prompt-max-length' to
-'most-positive-fixnum'.
-
-** Make mode
-
-*** The Makefile browser is now obsolete.
-The command 'makefile-switch-to-browser' command is now obsolete,
-together with related commands used in the "*Macros and Targets*"
-buffer.  We recommend using an alternative like 'imenu' instead.
-
-** Prog mode
-
-+++
-*** New command 'prog-fill-reindent-defun'.
-This command either fills a single paragraph in a defun, such as a
-docstring, 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.
-
-** Imenu
-
-+++
-*** New user option 'imenu-flatten'.
-It controls  whether to flatten the list of sections in an imenu, and
-how to display the sections in the flattened list.
-
-+++
-*** The sort order of Imenu completions can now be customized.
-You can customize the option 'completion-category-overrides'
-and set 'display-sort-function' for the category 'imenu'.
-
-** Which Function mode
-
-+++
-*** Which Function mode can now display function names on the header line.
-The new user option 'which-func-display' allows choosing where the
-function name is displayed.  The default is 'mode' to display in the
-mode line.  'header' will display in the header line;
-'mode-and-header' displays in both the header line and mode line.
-
-+++
-*** New user option 'which-func-update-delay'.
-This replaces the user option 'idle-update-delay', which was previously
-used to control the delay before 'which-function-mode' updated its
-display.  The user option 'idle-update-delay', which was only used by
-Which Function mode, is now obsolete.
-
-** Tramp
-
-+++
-*** Tramp methods can be optional.
-An optional connection method is not enabled by default.  The user must
-enable it explicitly by the 'tramp-enable-method' command.  The existing
-methods "fcp", "krlogin", " ksu" and "nc" are optional now.
-
-+++
-*** New optional connection method "androidsu".
-This provides access to system files with elevated privileges granted by
-the idiosyncratic 'su' implementations and system utilities customary on
-Android.
-
-+++
-*** New optional connection method "run0".
-This connection method is similar to "sudo", but it uses the
-'systemd-run' program internally.
-
-+++
-*** New connection methods "dockercp" and "podmancp".
-These are the external methods counterparts of "docker" and "podman".
-
-+++
-*** New optional connection methods for containers.
-There are new optional connection methods "toolbox", "distrobox",
-"flatpak", "apptainer" and "nspawn".  They allow accessing system
-containers provided by Toolbox or Distrobox, sandboxes provided by
-Flatpak, instances managed by Apptainer, or accessing systemd-based
-light-weight containers..
-
-+++
-*** Connection method "kubernetes" supports now optional container name.
-The host name for Kubernetes connections can be of kind [CONTAINER.]POD,
-in order to specify a dedicated container.  If there is just the pod
-name, the first container in the pod is taken.  The new user options
-'tramp-kubernetes-context' and 'tramp-kubernetes-namespace' allow
-accessing pods with different context or namespace but the default one.
-
-+++
-*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'.
-The old name still exists as obsolete variable alias.  This user
-option controls now connection sharing for both ssh-based and
-plink-based methods.  It allows the values t, nil, and 'suppress'.
-The latter suppresses also "ControlMaster" settings in the user's
-"~/.ssh/config" file, or connection share configuration in PuTTY
-sessions, respectively.
-
-+++
-*** New command 'tramp-cleanup-some-buffers'.
-It kills only a subset of opened remote buffers, subject to the user
-option 'tramp-cleanup-some-buffers-hook'.
-
-+++
-*** New command 'inhibit-remote-files'.
-This command disables the handling of file names with the special
-remote file name syntax.  It should be applied only when remote files
-won't be used in this Emacs instance.  It provides a slightly improved
-performance of file name handling in Emacs.
-
-+++
-*** New macro 'without-remote-files'.
-This macro could wrap code which handles local files only.  Due to the
-temporary deactivation of remote files, it results in a slightly
-improved performance of file name handling in Emacs.
-
-+++
-*** New user option 'tramp-completion-multi-hop-methods'.
-It contains a list of connection methods for which completion should
-be attempted at the end of a multi-hop chain.  This allows completion
-candidates to include a list of, for example, containers running on a
-remote docker host.
-
-+++
-*** New command 'tramp-revert-buffer-with-sudo'.
-It reverts the current buffer to visit with "sudo" permissions.  The
-buffer must either visit a file, or it must run 'dired-mode'.  Another
-method but "sudo" can be configured with user option
-'tramp-file-name-with-method'.
-
-+++
-*** Direct asynchronous processes are indicated by a connection-local variable.
-If direct asynchronous processes shall be used, set the connection-local
-variable 'tramp-direct-async-process' to a non-nil value.  This has been
-changed, in previous Emacs versions this was indicated by the now
-deprecated connection property "direct-async-process".  See the Tramp
-manual "(tramp) Improving performance of asynchronous remote processes".
-
----
-*** Direct asynchronous processes use 'tramp-remote-path'.
-When a direct asynchronous process is invoked, it uses 'tramp-remote-path'
-for setting the remote 'PATH' environment variable.
-
-** File Notifications
-
-+++
-*** All backends except w32notify detect unmounting of a watched filesystem now.
-
-** EWW
-
----
-*** New mouse bindings in EWW buffers.
-Certain form elements that were displayed as buttons, yet could only be
-activated by keyboard input, are now operable using 'mouse-2'.  With
-"Submit" buttons, this triggers submission of the form, while clicks on
-other classes of buttons either toggle their values or prompt for user
-input, as the case may be.
-
----
-*** EWW text input fields and areas are now fields.
-In consequence, movement commands and OS input method features now
-recognize and confine their activities to the text input field around
-point.  See also the Info node "(elisp) Fields".
-
-+++
-*** 'eww-open-file' can now display the file in a new buffer.
-By default, the command reuses the "*eww*" buffer, but if called with
-the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
-Interactively, invoke 'eww-open-file' with a prefix argument to
-activate this behavior.
-
----
-*** 'eww' URL or keyword prompt now has tab completion.
-The interactive minibuffer prompt when invoking 'eww' now has support
-for tab completion.
-
-+++
-*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
-The interactive minibuffer prompt when invoking 'eww' now provides
-completions from 'eww-suggest-uris'.  'eww-suggest-uris' now includes
-bookmark URIs.
-
-+++
-*** New command 'eww-copy-alternate-url'.
-It copies an alternate link on the page currently visited in EWW into
-the kill ring.  Alternate links are optional metadata that HTML pages
-use for linking to their alternative representations, such as
-translated versions or associated RSS feeds.
-
-+++
-*** 'eww-open-in-new-buffer' supports the prefix argument.
-When invoked with the prefix argument ('C-u'),
-'eww-open-in-new-buffer' will not make the new buffer the current one.
-This is useful for continuing reading the URL in the current buffer
-when the new URL is fetched.
-
----
-*** History navigation in EWW now behaves as in other browsers.
-Previously, when navigating back and forward through page history, EWW
-would add a duplicate entry to the end of the history list each time.
-This made it impossible to navigate to the "end" of the history list.
-Now, navigating through history in EWW simply changes your position in
-the history list, allowing you to reach the end as expected.  In
-addition, when browsing to a new page from a "historical" one (i.e., a
-page loaded by navigating back through history), EWW deletes the history
-entries newer than the current page.  To change the behavior when
-browsing from "historical" pages, you can customize
-'eww-before-browse-history-function'.
-
-+++
-*** 'eww-readable' now toggles display of the readable parts of a web page.
-When called interactively, 'eww-readable' toggles whether to display
-only the readable parts of a page or the full page.  With a positive
-prefix argument, it always displays the readable parts, and with a zero
-or negative prefix, it always displays the full page.
-
-+++
-*** New option 'eww-readable-urls'.
-This is a list of regular expressions matching the URLs where EWW should
-display only the readable parts by default.  For more details, see
-"(eww) Basics" in the EWW manual.
-
----
-*** New option 'eww-readable-adds-to-history'.
-When non-nil (the default), calling 'eww-readable' adds a new entry to
-the EWW page history.
-
-** Go-ts mode
-
-+++
-*** New command 'go-ts-mode-docstring'.
-This command adds a docstring comment to the current defun.  If a
-comment already exists, point is only moved to the comment.  It is
-bound to 'C-c C-d' in 'go-ts-mode'.
-
-** Man mode
-
-+++
-*** New user option 'Man-prefer-synchronous-call'.
-When this is non-nil, run the 'man' command synchronously rather than
-asynchronously (which is the default behavior).
-
-+++
-*** New user option 'Man-support-remote-systems'.
-This option controls whether the man page is formatted on the remote
-system when the current buffer's default-directory is remote.  You can
-invoke the 'man' command with a prefix argument to countermand the
-value of this option for the current invocation of 'man'.
-
-** DocView
-
----
-*** New face 'doc-view-svg-face'.
-This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'.
-If you don't like the colors produced by the default definition of
-this new face when DocView displays documents, customize this face to
-restore the colors you were used to, or to get colors more to your
-liking.
-
----
-*** DocView buffers now display a new tool bar.
-This tool bar contains options for searching and navigating within the
-document, replacing the incompatible items for incremental search and
-editing within the default tool bar displayed in the past.
-
-** Shortdoc
-
-+++
-*** New function 'shortdoc-function-examples'.
-This function returns examples of use of a given Emacs Lisp function
-from the available shortdoc information.
-
-+++
-*** New function 'shortdoc-help-fns-examples-function'.
-This function inserts into the current buffer examples of use of a
-given Emacs Lisp function, which it gleans from the shortdoc
-information.  If you want 'describe-function' ('C-h f') to insert
-examples of using the function into regular "*Help*" buffers, add the
-following to your init file:
-
-    (add-hook 'help-fns-describe-function-functions
-              #'shortdoc-help-fns-examples-function)
-
-** Package
-
----
-*** New user option 'package-vc-register-as-project'.
-When non-nil, it will automatically register every package as a
-project, that you can quickly select using 'project-switch-project'
-('C-x p p').
-
----
-*** New user option 'package-vc-allow-build-commands'.
-Controls for which packages Emacs runs extra build commands when
-installing directly from the package VCS repository.
-
----
-*** New command 'package-vc-log-incoming'.
-This commands displays incoming changes for a VC package without
-modifying the current checkout.
-
----
-*** New command to start an inferior Emacs loading only specific packages.
-The new command 'package-isolate' will start a new Emacs process, as
-a sub-process of Emacs where you invoke the command, in a way that
-causes the new process to load only some of the installed packages.
-The command prompts for the packages to activate in this
-sub-process, and is intended for testing Emacs and/or the packages
-in a clean environment.
-
-** Flymake
-
-+++
-*** New user option 'flymake-indicator-type'.
-This user option controls which error indicator type Flymake should use
-in current buffer.  Depending on your preference, this can either use
-fringes or margins for indicating errors.
-
-+++
-*** New user option 'flymake-margin-indicators-string'.
-It controls, for each error type, the string and its face to display as
-the margin indicator.
-
-+++
-*** New user option 'flymake-autoresize-margins'.
-If non-nil, Flymake will resize the margins when 'flymake-mode' is
-turned on or off.
-Only relevant if 'flymake-indicator-type' is set to 'margins'.
-
-+++
-*** New user option 'flymake-margin-indicator-position'.
-It controls which margin (left or right) is used for margin
-indicators.
-
-+++
-*** New user option 'flymake-show-diagnostics-at-end-of-line'.
-When non-nil, Flymake shows summarized descriptions of diagnostics at
-the end of the line.  Depending on your preference, this can either be
-distracting and easily confused with actual code, or a significant
-early aid that relieves you from moving the buffer or reaching for the
-mouse to consult an error message.
-
-** Flyspell
-
-*** New user option 'flyspell-check-changes'.
-When non-nil, Flyspell mode spell-checks only words that you edited; it
-does not check unedited words just because you move point across them.
-
-** JS mode.
-The binding 'M-.' has been removed from the major mode keymaps in
-'js-mode' and 'js-ts-mode', having it default to the global binding
-which calls 'xref-find-definitions'.  If the previous one worked
-better for you, use 'define-key' in your init script to bind
-'js-find-symbol' to that combination again.
-
-** Json mode.
-'js-json-mode' does not derive from 'js-mode' any more so as not
-to confuse tools like Eglot or YASnippet into thinking that those
-buffers contain Javascript code.
-
-** Python mode
-
----
-*** New user option 'python-indent-block-paren-deeper'.
-If non-nil, increase the indentation of the lines inside parens in a
-header of a block when they are indented to the same level as the body
-of the block:
-
-    if (some_expression
-            and another_expression):
-        do_something()
-
-instead of:
-
-    if (some_expression
-        and another_expression):
-        do_something()
-
-*** New user option 'python-interpreter-args'.
-This allows the user to specify command line arguments to the non
-interactive Python interpreter specified by 'python-interpreter'.
-
-*** New function 'python-shell-send-block'.
-It sends the python block delimited by 'python-nav-beginning-of-block'
-and 'python-nav-end-of-block' to the inferior Python process.
-
-** Inferior Python mode
-
----
-*** Default value of 'python-shell-compilation-regexp-alist' is changed.
-Support for Python's ExceptionGroup has been added, so in the Python
-shell, the line indicating the source of error in the error messages
-from ExceptionGroup will be recognized as well.
-
-** Scheme mode
-Scheme mode now handles regular expression literal '#/regexp/' that is
-available in some Scheme implementations.
-Also, it should now handle nested sexp-comments.
-
-** Use package
-
-+++
-*** New ':vc' keyword.
-This keyword enables the user to install packages using 'package-vc'.
-
-+++
-*** New user option 'use-package-vc-prefer-newest'.
-This allows the user to always install the newest commit of a package
-when using the ':vc' keyword.
-
-** Gnus
-
-+++
-*** New backend 'nnfeed'.
-This allows backend developers to easily create new backends for web
-feeds, as inheriting backends of 'nnfeed'.
-
-+++
-*** New backend 'nnatom'.
-This allow users to add Atom Syndication Format feeds to Gnus as
-servers.
-
-*** The 'nnweb-type' option 'gmane' has been removed.
-The gmane.org website is, sadly, down since a number of years with no
-prospect of it coming back.  Therefore, it is no longer valid to set
-the user option 'nnweb-type' to 'gmane'.
-
----
-*** New user option 'gnus-mode-line-logo'.
-This allows the user to either disable the display of any logo or
-specify which logo will be displayed as part of the
-buffer-identification in the mode-line of Gnus buffers.
-
-** Rmail
-
----
-*** New commands for reading mailing lists.
-The new Rmail commands 'rmail-mailing-list-post',
-'rmail-mailing-list-unsubscribe', 'rmail-mailing-list-help', and
-'rmail-mailing-list-archive' allow, respectively, posting to,
-unsubscribing from, requesting help about, and browsing the archives
-of, the mailing list from which the current email message was
-delivered.
-
-** Dictionary
-
----
-*** New user option 'dictionary-search-interface'.
-Controls how the 'dictionary-search' command prompts for and displays
-dictionary definitions.  Customize this user option to 'help' to have
-'dictionary-search' display definitions in a "*Help*" buffer and
-provide dictionary-based minibuffer completion for word selection.
-
----
-*** New user option 'dictionary-read-word-prompt'.
-This allows the user to customize the prompt that is used by
-'dictionary-search' when asking for a word to search in the
-dictionary.
-
----
-*** New user option 'dictionary-display-definition-function'.
-This allows the user to customize the way in which 'dictionary-search'
-displays word definitions.  If non-nil, this user option should be set
-to a function that displays a word definition obtained from a
-dictionary server.  The new function
-'dictionary-display-definition-in-help-buffer' can be used to display
-the definition in a "*Help*" buffer, instead of the default
-"*Dictionary*" buffer.
-
----
-*** New user option 'dictionary-read-word-function'.
-This allows the user to customize the way in which 'dictionary-search'
-prompts for a word to search in the dictionary.  This user option
-should be set to a function that lets the user select a word and
-returns it as a string.  The new function
-'dictionary-completing-read-word' can be used to prompt with
-completion based on dictionary matches.
-
----
-*** New user option 'dictionary-read-dictionary-function'.
-This allows the user to customize the way in which 'dictionary-search'
-prompts for a dictionary to search in.  This user option should be set
-to a function that lets the user select a dictionary and returns its
-name as a string.  The new function
-'dictionary-completing-read-dictionary' can be used to prompt with
-completion based on dictionaries that the server supports.
-
----
-*** The default value of 'dictionary-tooltip-dictionary' has changed.
-The new default value is t, which means use the same dictionary as the
-value of 'dictionary-default-dictionary'.  The previous default value
-was nil, which effectively disabled 'dictionary-tooltip-mode', even if
-the mode was turned on.
-
-** Pp
-
-*** New 'pp-default-function' user option replaces 'pp-use-max-width'.
-
-*** New default pretty printing function, which tries to obey 'fill-column'.
-
-*** 'pp-to-string' takes an additional PP-FUNCTION argument.
-This argument specifies the prettifying algorithm to use.
-
-** Emacs Lisp mode
-
----
-*** ',@' now has 'prefix' syntax.
-Previously, the '@' character, which normally has 'symbol' syntax,
-would combine with a following Lisp symbol and interfere with symbol
-searching.
-
----
-*** 'emacs-lisp-docstring-fill-column' now defaults to 72.
-It was previously 65.  The new default formats documentation strings to
-fit on fewer lines without negatively impacting readability.
-
-** CPerl mode
-
----
-*** Subroutine signatures are now supported.
-CPerl mode fontifies subroutine signatures like variable declarations
-which makes them visually distinct from subroutine prototypes.
-
-*** Syntax of Perl up to version 5.40 is supported.
-CPerl mode supports the new keywords for exception handling and the
-object oriented syntax which were added in Perl 5.36, 5.38 and 5.40.
-
-*** New user option 'cperl-fontify-trailer'.
-This user option takes the values 'perl-code' or 'comment' and treats
-text after an "__END__" or "__DATA__" token accordingly.  The default
-value of 'perl-code' is useful for trailing POD and for AutoSplit
-modules, the value 'comment' makes CPerl mode treat trailers as
-comment, like Perl mode does.
-
-*** New command 'cperl-file-style'.
-This command sets the indentation style for the current buffer.  To
-change the default style, either use the user option with the same name
-or use the command 'cperl-set-style'.
-
-*** New minor mode cperl-extra-paired-delimiters-mode
-Perl 5.36 and newer allows using more than 200 non-ASCII paired
-delimiters for quote-like constructs, eg. "q«text»".  Use this minor
-mode in buffers where this feature is activated.
-
-*** Commands using the Perl info page are obsolete.
-The Perl documentation in info format is no longer distributed with
-Perl or on CPAN since more than 10 years.  Perl documentation can be
-read with 'cperl-perldoc' instead.
-
-*** Highlighting trailing whitespace has been removed.
-The user option 'cperl-invalid-face' is now obsolete, and does
-nothing.  See the user option 'show-trailing-whitespace' instead.
-
-** Emacs Sessions (Desktop)
-
-+++
-*** Restoring buffers visiting remote files can now time out.
-When a buffer is restored which visits a remote file, the restoration
-of the session could hang if the remote host is off-line or slow to
-respond.  Setting the user option 'remote-file-name-access-timeout' to
-a positive number will abandon the attempt to restore such buffers
-after a timeout of that many seconds, thus allowing the rest of
-desktop restoration to continue.
-
-** Recentf
-
-+++
-*** Checking recent remote files can now time out.
-Similarly to buffer restoration by Desktop, 'recentf-mode' checking
-of the accessibility of remote files can now time out if
-'remote-file-name-access-timeout' is set to a positive number.
-
----
-*** 'M-x recentf' completion candidates now sorted by recency.
-Emacs now sorts file names in 'M-x recentf' completion by recency,
-with the file you've accessed most recently first.
-
-
-** Notifications
-
-+++
-*** Allow using Icon Naming Specification for ':app-icon'.
-You can use a symbol as the value for ':app-icon' to provide icon name
-without specifying a file, like this:
-
-    (notifications-notify
-      :title "I am playing music" :app-icon 'multimedia-player)
-
-** Image
-
-+++
-*** Image ':map' property is now recomputed when image is transformed.
-Now images with clickable maps work as expected after you run commands
-such as 'image-increase-size', 'image-decrease-size', 'image-rotate',
-'image-flip-horizontally', and 'image-flip-vertically'.
-
-+++
-*** New user option 'image-recompute-map-p'.
-Set this option to nil to prevent Emacs from recomputing image maps.
-
-** Image Dired
-
-*** New user option 'image-dired-thumb-naming'.
-You can now configure how a thumbnail is named using this option.
-
-** ERT
-
-+++
-*** New macro 'skip-when' to skip 'ert-deftest' tests.
-This can help avoid some awkward skip conditions.  For example
-'(skip-unless (not noninteractive))' can be changed to the easier
-to read '(skip-when noninteractive)'.
-
-+++
-*** Syntax highlighting unit testing support.
-An ERT extension ('ert-font-lock') now provides support for face
-assignment unit testing.  For more information, see the "(ert) Syntax
-Highlighting Tests" node in the ERT manual.
-
-** URL
-
-+++
-*** 'url-gateway-broken-resolution' is now obsolete.
-This option was intended for use on SunOS 4.x and Ultrix systems,
-neither of which have been supported by Emacs since version 23.1.
-The user option 'url-gateway-nslookup-program' and the function
-'url-gateway-nslookup-host' are consequently also obsolete.
-
-** Socks
-
-+++
-*** Socks supports version 4a.
-The 'socks-server' user option accepts '4a' as a value for its version
-field.
-
-** Edmacro
-
-+++
-*** New command 'edmacro-set-macro-to-region-lines'.
-Bound to 'C-c C-r', this command replaces the macro text with the
-lines of the region.  If needed, the region is extended to include
-whole lines.  If the region ends at the beginning of a line, that last
-line is excluded.
-
-+++
-*** New user option 'edmacro-reverse-macro-lines'.
-When this is non-nil, the lines of key sequences are displayed with
-the most recent line first.  This is can be useful when working with
-macros with many lines, such as from 'kmacro-edit-lossage'.
-
-** Proced
-
----
-*** More control on automatic update of Proced buffers.
-The user option 'proced-auto-update-flag' can now be set to 2 additional
-values, which control automatic updates of Proced buffers that are not
-displayed in some window.
-
-** Kmacro
-
-+++
-*** New Advanced Macro Counter functions.
-New commands have been added to implement advanced macro counter
-functions.
-
-The commands 'C-x C-k C-r l' and 'C-x C-k C-r s' load and save the
-macro counter from and to a number register, respectively.
-
-The commands 'C-x C-k C-r a =', 'C-x C-k C-r a <', and
-'C-x C-k C-r a >' compare the macro counter with the contents of a
-number register and increment the counter by an optional prefix if the
-comparison succeeds.
-
-The commands 'C-x C-k C-q =', 'C-x C-k C-q <', and 'C-x C-k C-q >'
-compare the macro counter with an optional prefix and terminate the
-macro if the comparison succeeds.
-
-** Kmacro Menu mode
-
-+++
-*** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'.
-The new command 'list-keyboard-macros' is the keyboard-macro version
-of commands like 'list-buffers' and 'list-processes', creating a listing
-of the currently existing keyboards macros using the new mode
-'kmacro-menu-mode'.  It allows rearranging the macros in the ring,
-duplicating them, deleting them, and editing their counters, formats,
-and keys.
-
-** Customize
-
-+++
-*** New command 'customize-dirlocals'.
-This command pops up a buffer to edit the settings in ".dir-locals.el".
-
----
-** New command 'customize-toggle-option'.
-This command toggles the value of a boolean (nil/non-nil) option.
-
-** Calc
-
-+++
-*** Calc parses fractions written using U+2044 FRACTION SLASH.
-Fractions of the form "123⁄456" are handled as if written "123:456".
-Note in particular the difference in behavior from U+2215 DIVISION SLASH
-and U+002F SOLIDUS, which result in division rather than a rational
-fraction.  You may also be interested to know that precomposed fraction
-characters, such as ½ (U+00BD VULGAR FRACTION ONE HALF), are also
-recognized as rational fractions.  They have been since 2004, but it
-looks like it was never mentioned in the NEWS, or even the manual.
-
-** IELM
-
----
-*** IELM now remembers input history between sessions.
-The new user option 'ielm-history-file-name' is the name of the file
-where IELM input history will be saved.  Customize it to nil to revert
-to the old behavior of not remembering input history between sessions.
-
-** Xwidget Webkit
-
-+++
-*** New user option 'xwidget-webkit-disable-javascript'.
-This allows disabling JavaScript in xwidget Webkit sessions.
-
-** Ls Lisp
-
----
-*** 'ls-lisp--insert-directory' supports more long options of 'ls'.
-'ls-lisp--insert-directory', the ls-lisp implementation of
-'insert-directory', now supports the '--time=TIME' and '--sort=time'
-options of GNU 'ls'.
-
-** Widget
-
-+++
-*** New user option 'widget-skip-inactive'.
-If non-nil, moving point forward or backward between widgets by typing
-'TAB' or 'S-TAB' skips over inactive widgets.  The default value is nil.
-
-** Ruby mode
-
-*** New user option 'ruby-rubocop-use-bundler'.
-By default it retains the previous behavior: read the contents of
-Gemfile and act accordingly.  But you can also set it to t or nil to
-skip the check.
-
-** Thingatpt
-
----
-*** New variables for providing custom thingatpt implementations.
-The new variables 'bounds-of-thing-at-point-provider-alist' and
-'forward-thing-provider-alist' now allow defining custom implementations
-of 'bounds-of-thing-at-point' and 'forward-thing', respectively.
-
----
-*** New helper functions for text property-based thingatpt providers.
-The new helper functions 'thing-at-point-for-char-property',
-'bounds-of-thing-at-point-for-char-property', and
-'forward-thing-for-char-property' can help to help implement custom
-thingatpt providers for "things" that are defined by a text property.
-
----
-*** 'bug-reference-mode' now supports 'thing-at-point'.
-Now, calling '(thing-at-point 'url)' when point is on a bug reference
-will return the URL for that bug.
-
-** Miscellaneous
-
----
-*** Webjump now assumes URIs are HTTPS instead of HTTP.
-For links in 'webjump-sites' without an explicit URI scheme, it was
-previously assumed that they should be prefixed with "http://".  Such
-URIs are now prefixed with "https://" instead.
-
-+++
-*** New user option 'rcirc-log-time-format'.
-This allows for rcirc logs to use a custom timestamp format, than the
-chat buffers use by default.
-
-+++
-*** New user option 'read-face-name-sample-text'.
-This user option lets you customize the sample text that
-'read-face-name' and commands that invoke 'read-face-name', such as
-'M-x describe-face', use to visually demonstrate faces in the
-"*Completions*" buffer.  By default this is set to the string
-"SAMPLE", which retains compatibility with Emacs 29.
-
----
-*** New user option 'Buffer-menu-group-by'.
-It controls how buffers are divided into groups that are displayed with
-headings using Outline minor mode.  Using commands that mark buffers
-on the outline heading line will mark all buffers in the outline.
-
-+++
-*** New command 'Buffer-menu-toggle-internal'.
-This command toggles the display of internal buffers in Buffer Menu mode;
-that is, buffers not visiting a file and whose names start with a space.
-Previously, such buffers were never shown.  This command is bound to 'I'
-in Buffer Menu mode.
-
----
-*** nXML Mode now comes with schemas for Mono/.NET development.
-The following new XML schemas are now supported:
-- MSBuild project files
-- Dotnet package properties files
-- Dotnet resource extension files
-- Dotnet Application config files
-- Nuget config file
-- Nuget package specification file
-- Nuget packages config file
-
-** color.el now supports the Oklab color representation.
-
----
-** 'M-x ping' can now give "ping" additional flags.
-Typing 'C-u M-x ping' prompts first for the host, and then for the flags
-to give to "ping".
-
-\f
-* New Modes and Packages in Emacs 30.1
-
-** New package EditorConfig.
-This package provides support for the EditorConfig standard,
-an editor-neutral way to provide directory local (project-wide) settings.
-It is enabled via a new global minor mode 'editorconfig-mode'
-which makes Emacs obey the '.editorconfig' files.
-There is also a new major mode 'editorconfig-conf-mode'
-to edit those configuration files.
-
-+++
-** New package Track-Changes.
-This library is a layer of abstraction above 'before-change-functions'
-and 'after-change-functions' which provides a superset of
-the functionality of 'after-change-functions':
-- It provides the actual previous text rather than only its length.
-- It takes care of accumulating and bundling changes until a time when
-  its client finds it convenient to react to them.
-- It detects most cases where some changes were not properly
-  reported (calls to 'before/after-change-functions' that are
-  incorrectly paired, missing, etc...) and reports them adequately.
-
-** New major modes based on the tree-sitter library
-
-+++
-*** New major mode 'html-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-HTML files.
-
-+++
-*** New major mode 'heex-ts-mode'.
-A major mode based on the tree-sitter library for editing HEEx files.
-
-+++
-*** New major mode 'elixir-ts-mode'.
-A major mode based on the tree-sitter library for editing Elixir files.
-
-+++
-*** New major mode 'lua-ts-mode'.
-A major mode based on the tree-sitter library for editing Lua files.
-
-+++
-*** New major mode 'php-ts-mode'.
-A major mode based on the tree-sitter library for editing PHP files.
-
-
-** Minibuffer and Completions
-
-+++
-*** New global minor mode 'minibuffer-regexp-mode'.
-This is a minor mode for editing regular expressions in the minibuffer.
-It highlights parens via ‘show-paren-mode’ and ‘blink-matching-paren’ in
-a user-friendly way, avoids reporting alleged paren mismatches and makes
-sexp navigation more intuitive.
-
-+++
-*** New minor mode 'completion-preview-mode'.
-This minor mode shows you symbol completion suggestions as you type,
-using an inline preview.  New user options in the 'completion-preview'
-customization group control exactly when Emacs displays this preview.
-'completion-preview-mode' is buffer-local, to enable it globally use
-'global-completion-preview-mode'.
-
-+++
-*** New user option 'extended-command-dim-hyphens'.
-Set this to non-nil to have Emacs dim hyphens in 'M-x' completions.
-
----
-** The highly accessible Modus themes collection has eight items.
-The 'modus-operandi' and 'modus-vivendi' are the main themes that have
-been part of Emacs since version 28.  The former is light, the latter
-dark.  In addition to these, we now have 'modus-operandi-tinted' and
-'modus-vivendi-tinted' for easier legibility, as well as
-'modus-operandi-deuteranopia', 'modus-vivendi-deuteranopia',
-'modus-operandi-tritanopia', and 'modus-vivendi-tritanopia' to cover
-the needs of users with red-green or blue-yellow color deficiency.
-The Info manual "(modus-themes) Top" describes the details and
-showcases all their customization options.
-
-+++
-** New global minor mode 'etags-regen-mode'.
-This minor mode generates the tags table automatically based on the
-current project configuration, and later updates it as you edit the
-files and save the changes.
-
-+++
-** New package Compat.
-Emacs now comes with a stub implementation of the
-forwards-compatibility Compat package from GNU ELPA.  This allows
-built-in packages to use the library more effectively, and helps
-preventing the installation of Compat if unnecessary.
-
-+++
-** New package PEG.
-Emacs now includes a library for writing Parsing Expression
-Grammars (PEG), an approach to text parsing that provides more structure
-than regular expressions, but less complexity than context-free
-grammars.  The Info manual "(elisp) Parsing Expression Grammars" has
-documentation and examples.
-
-** New major mode 'shell-command-mode'.
-This mode is used by default for the output of asynchronous 'shell-command'.
-To revert to the previous behavior, set the (also new) variable
-'async-shell-command-mode' to 'shell-mode'.  Any hooks or mode-specific
-variables used should be adapted appropriately.
-
-+++
-** New package Window-Tool-Bar.
-This provides a new minor mode, 'window-tool-bar-mode'.  When this minor
-mode is enabled, a tool bar is displayed at the top of a window.  To
-conserve space, no tool bar is shown if 'tool-bar-map' is nil.  The
-global minor mode 'global-window-tool-bar-mode' enables this minor mode
-in all buffers.
-
-+++
-** New package Which-Key
-The 'which-key' package from GNU ELPA is now included in Emacs.  It
-implements the 'which-key-mode' that displays a table of key bindings
-upon entering a partial key chord and waiting for a moment.
-
-\f
-* Incompatible Lisp Changes in Emacs 30.1
-
----
-** 'subr-native-elisp-p' is renamed to 'native-comp-function-p'.
-The previous name still exists but is marked as obsolete.
-
-+++
-** Evaluating a 'lambda' returns an object of type 'interpreted-function'.
-Instead of representing interpreted functions as lists that start with
-either 'lambda' or 'closure', Emacs now represents them as objects
-of their own 'interpreted-function' type, which is very similar
-to 'byte-code-function' objects (the argument list, docstring, and
-interactive forms are placed in the same slots).
-Lists that start with 'lambda' are now used only for non-evaluated
-functions (in other words, for source code), but for backward compatibility
-reasons, 'functionp' still recognizes them as functions and you can
-still call them as before.
-Thus code that attempts to "dig" into the internal structure of an
-interpreted function's object with the likes of 'car' or 'cdr' will
-no longer work and will need to use 'aref' instead to extract its
-various subparts (when 'interactive-form', 'documentation', and
-'help-function-arglist' aren't adequate).
-
-+++
-** 'define-globalized-minor-mode' requires that modes use 'run-mode-hooks'.
-Minor modes defined with 'define-globalized-minor-mode', such as
-'global-font-lock-mode', will not be enabled any more in those buffers
-whose major modes fail to use 'run-mode-hooks'.  Major modes defined
-with 'define-derived-mode' are not affected.  'run-mode-hooks' has been the
-recommended way to run major mode hooks since Emacs 22.
-
----
-** Old derived.el functions removed.
-The following functions have been deleted because they were only used
-by code compiled with Emacs<21:
-'derived-mode-init-mode-variables', 'derived-mode-merge-abbrev-tables',
-'derived-mode-merge-keymaps', 'derived-mode-merge-syntax-tables',
-'derived-mode-run-hooks', 'derived-mode-set-abbrev-table',
-'derived-mode-set-keymap', 'derived-mode-set-syntax-table',
-'derived-mode-setup-function-name'.
-
-+++
-** 'M-TAB' now invokes 'completion-at-point' also in Text mode.
-By default, Text mode no longer binds 'M-TAB' to
-'ispell-complete-word'.  Instead, this mode arranges for
-'completion-at-point', globally bound to 'M-TAB', to perform word
-completion as well.  You can have Text mode bind 'M-TAB' to
-'ispell-complete-word' as it did in previous Emacs versions, or
-disable Ispell word completion in Text mode altogether, by customizing
-the new user option 'text-mode-ispell-word-completion'.
-
-** 'pp' and 'pp-to-string' now always include a terminating newline.
-In the past they included a terminating newline in most cases but not all.
-
-** 'buffer-match-p' and 'match-buffers' take '&rest args'.
-They used to take a single '&optional arg' and were documented to use
-an unreliable hack to try and support condition predicates that
-don't accept this optional arg.
-The new semantics makes no such accommodation, but the code still
-supports it (with a warning) for backward compatibility.
-
-** 'post-gc-hook' runs after updating 'gcs-done' and 'gcs-elapsed'.
-
----
-** The escape sequence '\x' not followed by hex digits is now an error.
-Previously, '\x' without at least one hex digit denoted character code
-zero (NUL) but as this was neither intended nor documented or even
-known by anyone, it is now treated as an error by the Lisp reader.
-
----
-** Connection-local variables are applied in buffers visiting a remote file.
-This overrides possible directory-local or file-local variables with
-the same name.
-
----
-** User option 'tramp-completion-reread-directory-timeout' has been removed.
-This user option has been obsoleted in Emacs 27, use
-'remote-file-name-inhibit-cache' instead.
-
----
-** User options 'eshell-NAME-unload-hook' are now obsolete.
-These hooks were named incorrectly, and so they never actually ran
-when unloading the corresponding feature.  Instead, you should use
-hooks named after the feature name, like 'esh-mode-unload-hook'.
-
-+++
-** 'copy-tree' now copies records when its optional 2nd argument is non-nil.
-
-+++
-** Regexp zero-width assertions followed by operators are better defined.
-Previously, regexps such as "xy\\B*" would have ill-defined behavior.
-Now any operator following a zero-width assertion applies to that
-assertion only (which is useless).  For historical compatibility, an
-operator character following '^' or '\`' becomes literal, but we
-advise against relying on this.
-
----
-** Mode-line mnemonics for some coding-systems have changed.
-The mode-line mnemonic for 'utf-7' is now the lowercase 'u', to be
-consistent with the other encodings of this family.
-
-The mode-line mnemonic for 'koi8-u' is now 'У', U+0423 CYRILLIC
-CAPITAL LETTER U, to distinguish between this encoding and the
-UTF-8/UTF-16 family.
-
-If your terminal cannot display 'У', or if you want to get the old
-behavior back for any other reason, you can do that using the
-'coding-system-put' function.  For example, the following restores the
-previous behavior of showing 'U' in the mode line for 'koi8-u':
-
-    (coding-system-put 'koi8-u :mnemonic ?U)
-
----
-** 'vietnamese-tcvn' is now a coding system alias for 'vietnamese-vscii'.
-VSCII-1 and TCVN-5712 are different names for the same character
-encoding.  Therefore, the duplicate coding system definition has been
-dropped in favor of an alias.
-
-The mode-line mnemonic for 'vietnamese-vscii' and its aliases is the
-lowercase letter 'v'.
-
-+++
-** Infinities and NaNs no longer act as symbols on non-IEEE platforms.
-On old platforms like the VAX that do not support IEEE floating-point,
-tokens like 0.0e+NaN and 1.0e+INF are no longer read as symbols.
-Instead, the Lisp reader approximates an infinity with the nearest
-finite value, and a NaN with some other non-numeric object that
-provokes an error if used numerically.
-
-+++
-** X color support compatibility aliases are now marked obsolete.
-The compatibility aliases 'x-defined-colors', 'x-color-defined-p',
-'x-color-values', and 'x-display-color-p' are now obsolete.
-
-+++
-** 'easy-mmode-define-{minor,global}-mode' aliases are now obsolete.
-Use 'define-minor-mode' and 'define-globalized-minor-mode' instead.
-
-** The obsolete calling convention of 'sit-for' has been removed.
-That convention was: '(sit-for SECONDS MILLISEC &optional NODISP)'.
-
-** The 'millisec' argument of 'sleep-for' has been declared obsolete.
-Use a float value for the first argument instead.
-
-** 'eshell-process-wait-{seconds,milliseconds}' options are now obsolete.
-Instead, use 'eshell-process-wait-time', which supports floating-point
-values.
-
----
-** Bookmark commands no longer extend minibuffer history when called non-interactively
-Commands that read a bookmark name when called interactively, such as
-'bookmark-jump', used to add their bookmark name argument to the
-'bookmark-history' minibuffer history variable even when called
-non-interactively.  This special behavior is removed in this version
-of Emacs, for consistency with the common Emacs behavior where
-minibuffer history is reserved for past minibuffer inputs.
-
-+++
-** Conversion of strings to and from byte-arrays works with multibyte strings.
-The functions 'dbus-string-to-byte-array' and
-'dbus-byte-array-to-string' now accept and return multibyte Lisp
-strings, encoding to UTF-8 and decoding from UTF-8 internally.  This
-means that the argument to 'dbus-byte-array-to-string' must be a valid
-UTF-8 byte sequence, and the optional parameter MULTIBYTE of
-'dbus-byte-array-to-string' is now obsolete and unused.  The argument of
-'dbus-string-to-byte-array' should be a regular Lisp string, not a
-unibyte string.
-
-\f
-* Lisp Changes in Emacs 30.1
-
-+++
-** New hook 'hack-dir-local-get-variables-functions'.
-This can be used to provide support for other directory-local settings
-beside '.dir-locals.el'.
-
-+++
-** 'auto-coding-functions' can know the name of the file.
-The functions on this hook can now find the name of the file to
-which the text belongs by consulting the variable 'auto-coding-file-name'.
-
-+++
-** New user option 'compilation-safety' to control safety of native code.
-It's now possible to control how safe is the code generated by native
-compilation, by customizing this user option.  It is also possible to
-control this at function granularity by using the new 'safety' parameter
-in the function's 'declare' form.
-
----
-** New variable 'read-buffer-to-switch-current-buffer'.
-'read-buffer-to-switch' let-binds this variable to the current buffer
-from which you are switching.  You can check for this variable in your
-'read-buffer-function' to determine if the caller intends to switch to
-the buffer that this function reads.
-
----
-** New 'display-completion-list' optional argument for grouping completions.
-'display-completion-list' now takes an optional argument GROUP-FUN that
-controls grouping of displayed completions.
-
-+++
-** New buffer-local variable 'undo-inhibit-region'.
-Lisp code can set this to non-nil to tell the next 'undo' command to
-ignore an active region.  This allows functions to select a region
-without restricting a subsequent 'undo'.  For commands that activate
-the region and never want to restrict 'undo' to that region, it is
-preferable to use the existing 'undo-inhibit-region' symbol property
-instead of this variable.
-
-** New types 'closure' and 'interpreted-function'.
-'interpreted-function' is the new type used for interpreted functions,
-and 'closure' is the common parent type of 'interpreted-function'
-and 'byte-code-function'.
-
-Those new types come with the associated new predicates 'closurep' and
-'interpreted-function-p' as well as a new constructor
-'make-interpreted-closure'.
-
-** New function 'help-fns-function-name'.
-For named functions, it just returns the name and otherwise
-it returns a short "unique" string that identifies the function.
-In either case, the string is propertized so clicking on it gives
-further details.
-
-+++
-** New function 'char-to-name'.
-This is a convenience function to return the Unicode name of a char (if
-it has one).
-
-** New function 'cl-type-of'.
-This function is like 'type-of' except that it sometimes returns
-a more precise type.  For example, for nil and t it returns 'null'
-and 'boolean' respectively, instead of just 'symbol'.
-
-** New functions 'primitive-function-p' and 'cl-functionp'.
-'primitive-function-p' is like 'subr-primitive-p' except that it returns
-t only if the argument is a function rather than a special-form,
-and 'cl-functionp' is like 'functionp' except it returns nil
-for lists and symbols.
-
-** Built-in types have now corresponding classes.
-At the Lisp level, this means that things like '(cl-find-class 'integer)'
-will now return a class object, and at the UI level it means that
-things like 'C-h o integer RET' will show some information about that type.
-
-** New variable 'major-mode-remap-defaults' and function 'major-mode-remap'.
-The first is like Emacs-29's 'major-mode-remap-alist' but to be set by
-packages (instead of users).  The second looks up those two variables.
-
-+++
-** Pcase's functions (in 'pred' and 'app') can specify the argument position.
-For example, instead of '(pred (< 5))' you can write '(pred (> _ 5))'.
-
-+++
-** 'define-advice' now sets the new advice's 'name' property to NAME.
-Named advices defined with 'define-advice' can now be removed with
-'(advice-remove SYMBOL NAME)' in addition to '(advice-remove SYMBOL
-SYMBOL@NAME)'.
-
-+++
-** New function 'require-with-check' to detect new versions shadowing.
-This is like 'require', but it checks whether the argument 'feature'
-is already loaded, in which case it either signals an error or
-forcibly reloads the file that defines the feature.
-
-+++
-** New variable 'lisp-eval-depth-reserve'.
-It puts a limit to the amount by which Emacs can temporarily increase
-'max-lisp-eval-depth' when handling signals.
-
-+++
-** New special form 'handler-bind'.
-It provides a functionality similar to 'condition-case' except it runs
-the handler code without unwinding the stack, such that we can record
-the backtrace and other dynamic state at the point of the error.  See
-the Info node "(elisp) Handling Errors".
-
-+++
-** Tooltips on fringes.
-It is now possible to provide tooltips on fringes by adding special text
-properties 'left-fringe-help' and 'right-fringe-help'.  See the "(elisp)
-Special Properties" Info node in the Emacs Lisp Reference Manual for
-more details.
-
-+++
-** New 'pop-up-frames' action alist entry for 'display-buffer'.
-This has the same effect as the variable of the same name and takes
-precedence over the variable when present.
-
-** New function 'merge-ordered-lists'.
-Mostly used internally to do a kind of topological sort of
-inheritance hierarchies.
-
-+++
-** 'drop' is now an alias for the function 'nthcdr'.
-
-+++
-** New polymorphic comparison function 'value<'.
-This function returns non-nil if the first argument is less than the
-second.  It works for any two values of the same type with reasonable
-ordering for numbers, strings, symbols, bool-vectors, markers, buffers
-and processes.  Conses, lists, vectors and records are ordered
-lexicographically.
-It is intended as a convenient ordering predicate for sorting, and is
-likely to be faster than hand-written Lisp functions.
-
-+++
-** New 'sort' arguments and features.
-The 'sort' function can now be called using the signature
-
-    (sort SEQ &rest KEYWORD-ARGUMENTS)
-
-where arguments after the first are keyword/value pairs, all optional:
-':key' specifies a function that produces the sorting key from an element,
-':lessp' specifies the ordering predicate, defaulting to 'value<',
-':reverse' is used to reverse the sorting order,
-':in-place is used for in-place sorting, as the default is now to
-sort a copy of the input.
-
-The new signature is less error-prone and reduces the need to write
-ordering predicates by hand.  We recommend that you use the ':key'
-argument instead of ':lessp' unless a suitable ordering predicate is
-already available.  This can also be used for multi-key sorting:
-
-    (sort seq :key (lambda (x) (list (age x) (size x) (cost x))))
-
-sorts by the return value of 'age', then by 'size', then by 'cost'.
-
-The old signature, '(sort SEQ PREDICATE)', can still be used and sorts
-its input in-place as before.
-
-** New API for 'derived-mode-p' and control of the graph of major modes.
-
-*** 'derived-mode-p' now takes the list of modes as a single argument.
-The same holds for 'provided-mode-derived-p'.
-The old calling convention where multiple modes are passed as
-separate arguments is deprecated.
-
-*** New functions to access the graph of major modes.
-While 'define-derived-mode' still only supports single inheritance,
-modes can declare additional parents (for tests like 'derived-mode-p')
-with 'derived-mode-add-parents'.
-Accessing the 'derived-mode-parent' property directly is now
-deprecated in favor of the new functions 'derived-mode-set-parent'
-and 'derived-mode-all-parents'.
-
-+++
-** Drag-and-drop functions can now be called once for compound drops.
-It is now possible for drag-and-drop handler functions to respond to
-drops incorporating more than one URL.  Functions capable of this must
-set their 'dnd-multiple-handler' symbol properties to a non-nil value.
-See the Info node "(elisp) Drag and Drop".
-
-Incident to this change, the function 'dnd-handle-one-url' has been
-made obsolete, for it cannot take these new handlers into account.
-
-** New function 're-disassemble' to see the innards of a regexp.
-If you compiled with '--enable-checking', you can use this to help debug
-either your regexp performance problems or the regexp engine.
-
-+++
-** XLFDs are no longer restricted to 255 characters.
-'font-xlfd-name' now returns an XLFD even if it is greater than 255
-characters in length, provided that the LONG_XLFDs argument is true.
-
-Other features in Emacs which employ XLFDs have been modified to
-produce and understand XLFDs larger than 255 characters.
-
-** 'defadvice' is marked as obsolete.
-See the "(elisp) Porting Old Advice" Info node for help converting
-them to use 'advice-add' or 'define-advice' instead.
-
-** 'cl-old-struct-compat-mode' is marked as obsolete.
-You may need to recompile our code if it was compiled with Emacs < 24.3.
-
-+++
-** New macro 'static-if' for conditional evaluation of code.
-This macro hides a form from the evaluator or byte-compiler based on a
-compile-time condition.  This is handy for avoiding byte-compilation
-warnings about code that will never actually run under some
-conditions.
-
-+++
-** Desktop notifications are now supported on the Haiku operating system.
-The new function 'haiku-notifications-notify' provides a subset of the
-capabilities of the 'notifications-notify' function in a manner
-analogous to 'w32-notification-notify'.
-
-** New variable 'haiku-pass-control-tab-to-system'.
-This sets whether Emacs should pass 'C-TAB' on to the system instead of
-handling it, fixing a problem where window switching would not activate
-if an Emacs frame had focus on the Haiku operation system.
-
-+++
-** New value 'if-regular' for the REPLACE argument to 'insert-file-contents'.
-It results in 'insert-file-contents' erasing the buffer instead of
-preserving markers if the file being inserted is not a regular file,
-rather than signaling an error.
-
-+++
-** New variable 'current-key-remap-sequence'.
-It is bound to the key sequence that caused a call to a function bound
-within 'function-key-map' or 'input-decode-map' around those calls.
-
-+++
-** The function 'key-translate' can now remove translations.
-If the second argument TO is nil, the existing key translation is
-removed.
-
-+++
-** New variables describing the names of built in programs.
-The new variables 'ctags-program-name', 'ebrowse-program-name',
-'etags-program-name', 'hexl-program-name', 'emacsclient-program-name'
-'movemail-program-name', and 'rcs2log-program-name' should be used
-instead of "ctags", "ebrowse", "etags", "hexl", "emacsclient", and
-"rcs2log", when starting one of these built in programs in a
-subprocess.
-
-+++
-** New variable 'case-symbols-as-words' affects case operations for symbols.
-If non-nil, then case operations such as 'upcase-initials' or
-'replace-match' (with nil FIXEDCASE) will treat the entire symbol name
-as a single word.  This is useful for programming languages and styles
-where only the first letter of a symbol's name is ever capitalized.
-The default value of this variable is nil.
-
-+++
-** 'x-popup-menu' now understands touch screen events.
-When a 'touchscreen-begin' or 'touchscreen-end' event is passed as the
-POSITION argument, it will behave as if that event was a mouse event.
-
-+++
-** New functions for handling touch screen events.
-The new functions 'touch-screen-track-tap' and
-'touch-screen-track-drag' handle tracking common touch screen gestures
-from within a command.
-
-** New user option 'safe-local-variable-directories'.
-This user option names directories in which Emacs will treat all
-directory-local variables as safe.
-
-+++
-** New parameter to 'touchscreen-end' events.
-CANCEL non-nil establishes that the touch sequence has been
-intercepted by programs such as window managers and should be ignored
-with Emacs.
-
-** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
-
-+++
-** New variable 'secondary-tool-bar-map'.
-If non-nil, this variable contains a keymap of menu items that are
-displayed along tool bar items inside 'tool-bar-map'.
-
-** New variable 'completion-lazy-hilit'.
-Lisp programs that present completion candidates may bind this
-variable non-nil around calls to functions such as
-'completion-all-completions'.  This tells the underlying completion
-styles to skip eager fontification of completion candidates, which
-improves performance.  Such a Lisp program can then use the
-'completion-lazy-hilit' function to fontify candidates just in time.
-
----
-** New function 'completion-table-with-metadata'.
-This function returns a completion table with additional metadata.
-
-** New Xref generic functions for recording and restoring context.
-Xref backends can now implement the generic function
-'xref-backend-context' to change how Xref records the context used for
-fetching cross-references when bookmarking Xref results for later use.
-In addition, the new generic function 'xref-backend-restore' lets
-backends change how Xref then restores this context.
-
-** New primitive 'buffer-last-name'.
-It returns the name of a buffer before the last time it was renamed or
-killed.
-
-** New primitive 'marker-last-position'.
-It returns the last position of a marker in its buffer even if that
-buffer has been killed.  ('marker-position' would return nil in that
-case.)
-
-** Functions and variables to transpose sexps
-
-+++
-*** New helper variable 'transpose-sexps-function'.
-Emacs now can set this variable to customize the behavior of the
-'transpose-sexps' function.
-
-+++
-*** New function 'transpose-sexps-default-function'.
-The previous implementation is moved into its own function, to be
-bound by 'transpose-sexps-function'.
-
-*** New function 'treesit-transpose-sexps'.
-Tree-sitter now unconditionally sets 'transpose-sexps-function' for all
-tree-sitter enabled modes.  This functionality utilizes the new
-'transpose-sexps-function'.
-
-** Functions and variables to move by program statements
-
-*** New variable 'forward-sentence-function'.
-Major modes can now set this variable to customize the behavior of the
-'forward-sentence' command.
-
-*** New function 'forward-sentence-default-function'.
-The previous implementation of 'forward-sentence' is moved into its
-own function, to be bound by 'forward-sentence-function'.
-
-*** New function 'treesit-forward-sentence'.
-All tree-sitter enabled modes that define 'sentence' in
-'treesit-thing-settings' now set 'forward-sentence-function' to call
-'treesit-forward-sentence'.
-
-** Functions and variables to move by program sexps
-
-*** New function 'treesit-forward-sexp'.
-Tree-sitter conditionally sets 'forward-sexp-function' for major modes
-that have defined 'sexp' in 'treesit-thing-settings' to enable
-sexp-related motion commands.
-
-+++
-** Returned strings are never docstrings.
-Functions and macros whose bodies consist of a single string literal now
-only return that string; it is not used as a docstring.  Example:
-
-    (defun sing-a-song ()
-      "Sing a song.")
-
-The above function returns the string '"Sing a song."' but has no
-docstring.  Previously, that string was used as both a docstring and
-return value, which was never what the programmer wanted.  If you want
-the string to be a docstring, add an explicit return value.
-
-This change applies to 'defun', 'defsubst', 'defmacro' and 'lambda'
-forms; other defining forms such as 'cl-defun' already worked this way.
-
-** New or changed byte-compilation warnings
-
----
-*** Warn about missing 'lexical-binding' directive.
-The compiler now warns if an Elisp file lacks the standard
-'-*- lexical-binding: ... -*-' cookie on the first line.
-This line typically looks something like
-
-    ;;; My little pony mode  -*- lexical-binding: t -*-
-
-It is needed to inform the compiler about which dialect of ELisp
-your code is using: the modern dialect with lexical binding or
-the old dialect with only dynamic binding.
-
-Lexical binding avoids some name conflicts and allows the compiler to
-detect more mistakes and generate more efficient code, so it is
-recommended.  For how to adapt your code to lexical binding, see the
-manual section "(elisp) Converting to Lexical Binding".
-
-If your code cannot be converted to lexical binding, you can insert
-the line
-
-    ;;; -*- lexical-binding: nil -*-
-
-first in the file to declare that it uses the old dialect.
-
----
-*** Warn about empty bodies for more special forms and macros.
-The compiler now warns about an empty body argument to 'when',
-'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
-the existing warnings for 'let' and 'let*'.  Example:
-
-    (when (> x 2))
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'empty-body'.
-
----
-*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
-The compiler now warns about quoted condition (error) names
-in 'condition-case' and 'ignore-error'.  Example:
-
-    (condition-case nil
-        (/ x y)
-      ('arith-error "division by zero"))
-
-Quoting them adds the error name 'quote' to those handled or ignored
-respectively, which was probably not intended.
-
----
-*** Warn about comparison with literal constants without defined identity.
-The compiler now warns about comparisons by identity with a literal
-string, cons, vector, record, function, large integer or float as this
-may not match any value at all.  Example:
-
-    (eq x "hello")
-
-Only literals for symbols and small integers (fixnums), including
-characters, are guaranteed to have a consistent (unique) identity.
-This warning applies to 'eq', 'eql', 'memq', 'memql', 'assq', 'rassq',
-'remq' and 'delq'.
-
-To compare by (structural) value, use 'equal', 'member', 'assoc',
-'rassoc', 'remove' or 'delete' instead.  Floats and bignums can also
-be compared using 'eql', '=' and 'memql'.  Function literals cannot be
-compared reliably at all.
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'suspicious'.
-
----
-*** Warn about 'condition-case' without handlers.
-The compiler now warns when the 'condition-case' form is used without
-any actual handlers, as in
-
-    (condition-case nil (read buffer))
-
-because it has no effect other than the execution of the body form.
-In particular, no errors are caught or suppressed.  If the intention
-was to catch all errors, add an explicit handler for 'error', or use
-'ignore-error' or 'ignore-errors'.
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'suspicious'.
-
----
-*** Warn about 'unwind-protect' without unwind forms.
-The compiler now warns when the 'unwind-protect' form is used without
-any unwind forms, as in
-
-    (unwind-protect (read buffer))
-
-because the behavior is identical to that of the argument; there is
-no protection of any kind.  Perhaps the intended unwind forms have
-been misplaced or forgotten, or the use of 'unwind-protect' could be
-simplified away.
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'suspicious'.
-
----
-*** Warn about useless trailing 'cond' clauses.
-The compiler now warns when a 'cond' form contains clauses following a
-default (unconditional) clause.  Example:
-
-    (cond ((= x 0) (say "none"))
-          (t (say "some"))
-          (say "goodbye"))
-
-Such a clause will never be executed but is likely to be a mistake,
-perhaps due to misplaced brackets.
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'suspicious'.
-
----
-*** Warn about mutation of constant values.
-The compiler now warns about code that modifies program constants in
-some obvious cases.  Examples:
-
-    (setcar '(1 2) 7)
-    (aset [3 4] 0 8)
-    (aset "abc" 1 ?d)
-
-Such code may have unpredictable behavior because the constants are
-part of the program, not data structures generated afresh during
-execution, and the compiler does not expect them to change.
-
-To avoid the warning, operate on an object created by the program
-(maybe a copy of the constant), or use a non-destructive operation
-instead.
-
-This warning can be suppressed using 'with-suppressed-warnings' with
-the warning name 'mutate-constant'.
-
----
-*** Warn about more ignored function return values.
-The compiler now warns when the return value from certain functions is
-implicitly ignored.  Example:
-
-    (progn (nreverse my-list) my-list)
-
-will elicit a warning because it is usually pointless to call
-'nreverse' on a list without using the returned value.
-
-To silence the warning, make use of the value in some way, such as
-assigning it to a variable.  You can also wrap the function call in
-'(ignore ...)', or use 'with-suppressed-warnings' with the warning
-name 'ignored-return-value'.
-
-The warning will only be issued for calls to functions declared
-'important-return-value' or 'side-effect-free' (but not 'error-free').
-
----
-*** Warn about docstrings that contain control characters.
-The compiler now warns about docstrings with control characters other
-than newline and tab.  This is often a result of improper escaping.
-Example:
-
-    (defun my-fun ()
-      "Uses c:\remote\dir\files and the key \C-x."
-      ...)
-
-where the docstring contains the four control characters 'CR', 'DEL',
-'FF' and 'C-x'.
-
-The warning name is 'docstrings-control-chars'.
-
----
-*** The warning about wide docstrings can now be disabled separately.
-Its warning name is 'docstrings-wide'.
-
----
-** New user option 'native-comp-async-warnings-errors-kind'.
-It allows control of what kinds of warnings and errors from asynchronous
-native compilation are reported to the parent Emacs process.  The
-default is to report all errors and only important warnings.  If you
-were used to customizing 'native-comp-async-report-warnings-errors' to
-nil or 'silent', we suggest that you now leave it at its default value,
-and see if you get only warnings that matter.
-
-** Function 'declare' forms
-
-+++
-*** New 'ftype' function declaration.
-The declaration '(ftype TYPE)' specifies the type of a function.
-Example:
-
-    (defun hello (x y)
-      (declare (ftype (function (integer boolean) string)))
-      ...)
-
-specifies that the function takes two arguments, an integer and a
-boolean, and returns a string.  If the compilation happens with
-'compilation-safety' set to zero, this information can be used by the
-native compiler to produce better code, but specifying an incorrect type
-may lead to Emacs crashing.  See the Info node "(elisp) Declare Form"
-for further information.
-
-+++
-*** New 'important-return-value' function declaration and property.
-The declaration '(important-return-value t)' sets the
-'important-return-value' property which indicates that the function
-return value should probably not be thrown away implicitly.
-
-** Bytecode is now always loaded eagerly.
-Bytecode compiled with older Emacs versions for lazy loading using
-'byte-compile-dynamic' is now loaded all at once.
-As a consequence, 'fetch-bytecode' has no use, does nothing, and is
-now obsolete.  The variable 'byte-compile-dynamic' has no effect any
-more; compilation will always yield bytecode for eager loading.
-
-+++
-** New functions 'file-user-uid' and 'file-group-gid'.
-These functions are like 'user-uid' and 'group-gid', respectively, but
-are aware of file name handlers, so they will return the remote UID or
-GID for remote files (or -1 if the connection has no associated user).
-
-+++
-** New function 'file-name-completion-annotation'.
-This function takes a file name and returns a string with details
-about that file, which 'read-file-name' uses as completion annotations
-for completion candidates.  File name handlers can modify the behavior
-of this function.
-
-+++
-** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
-Previously, 'fset', 'defalias' and 'defvaralias' could be made to
-build circular function and variable indirection chains as in
-
-    (defalias 'able 'baker)
-    (defalias 'baker 'able)
-
-but trying to use them would sometimes make Emacs hang.  Now, an attempt
-to create such a loop results in an error.
-
-Since circular alias chains now cannot occur, 'function-alias-p',
-'indirect-function' and 'indirect-variable' will never signal an error.
-Their 'noerror' arguments have no effect and are therefore obsolete.
-
-+++
-** 'treesit-font-lock-rules' now accepts additional global keywords.
-When supplied with ':default-language LANGUAGE', rules after it will
-default to use 'LANGUAGE'.
-
----
-** New optional argument to 'modify-dir-local-variable'.
-A 5th argument, optional, has been added to
-'modify-dir-local-variable'.  It can be used to specify which
-dir-locals file to modify.
-
-** Connection local variables
-
-+++
-*** New macros 'connection-local-p' and 'connection-local-value'.
-The former macro returns non-nil if a variable has a connection-local
-binding.  The latter macro returns the connection-local value of a
-variable if any, or its current value.
-
-** Hash tables
-
-+++
-*** ':rehash-size' and ':rehash-threshold' args no longer have any effect.
-These keyword arguments are now ignored by 'make-hash-table'.  Emacs
-manages the memory for all hash table objects in the same way.
-The functions 'hash-table-rehash-size' and 'hash-table-rehash-threshold'
-remain for compatibility but now always return the old default values.
-
-+++
-*** The printed representation has been shrunk and simplified.
-The 'test' parameter is omitted if it is 'eql' (the default), as is
-'data' if empty.  'rehash-size', 'rehash-threshold' and 'size' are
-always omitted, and ignored if present when the object is read back in.
-
-** Obarrays
-
-+++
-*** New obarray type.
-Obarrays are now represented by an opaque type instead of using vectors.
-They are created by 'obarray-make' and manage their internal storage
-automatically, which means that the size parameter to 'obarray-make' can
-safely be omitted.  That is, they do not become slower as they fill up.
-
-The old vector representation is still accepted by functions operating
-on obarrays, but 'obarrayp' only returns t for obarray objects.
-'type-of' now returns 'obarray' for obarray objects.
-
-Old code which (incorrectly) created "obarrays" as Lisp vectors filled
-with something other than 0, as in '(make-vector N nil)', will no longer
-work, and should be rewritten to use 'obarray-make'.  Alternatively, you
-can fill the vector with 0.
-
-+++
-*** New function 'obarray-clear' removes all symbols from an obarray.
-
----
-*** 'obarray-size' and 'obarray-default-size' are now obsolete.
-They pertained to the internal storage size which is now irrelevant.
-
-+++
-** 'treesit-install-language-grammar' can handle local directory instead of URL.
-It is now possible to pass a directory of a local repository as URL
-inside 'treesit-language-source-alist', so that calling
-'treesit-install-language-grammar' would avoid cloning the repository.
-It may be useful, for example, for the purposes of bisecting a
-treesitter grammar.
-
-+++
-** New buffer-local variable 'tabulated-list-groups'.
-It controls display and separate sorting of groups of entries.
-
-+++
-** New variable 'revert-buffer-restore-functions'.
-It helps to preserve various states after reverting the buffer.
-
----
-** New text property 'context-menu-functions'.
-Like the variable with the same name, it adds menus from the list that
-is the value of the property to context menus shown when clicking on the
-text which as this property.
-
----
-** Detecting the end of an iteration of a keyboard macro.
-'read-event', 'read-char', and 'read-char-exclusive' no longer return -1
-when called at the end of an iteration of the execution of a keyboard
-macro.  Instead, they will transparently continue reading available input
-(e.g., from the keyboard).  If you need to detect the end of a macro
-iteration, check the following condition before calling one of the
-aforementioned functions:
-
-    (and (arrayp executing-kbd-macro)
-         (>= executing-kbd-macro-index (length executing-kbd-macro)))
-
-+++
-** 'vtable-update-object' updates an existing object with just two arguments.
-It is now possible to update the representation of an object in a vtable
-by calling 'vtable-update-object' with just the vtable and the object as
-arguments.  (Previously the 'old-object' argument was required which, in
-this case, would mean repeating the object in the argument list.)  When
-replacing an object with a different one, passing both the new and old
-objects is still necessary.
-
-** 'vtable-insert-object' can insert "before" or at an index.
-The signature of 'vtable-insert-object' has changed and is now:
-
-    (vtable-insert-object TABLE OBJECT &optional LOCATION BEFORE)
-
-LOCATION corresponds to the old AFTER-OBJECT argument; if BEFORE is
-non-nil, the new object is inserted before the LOCATION object, making
-it possible to insert a new object at the top of the table.  (Before,
-this was not possible.)  In addition, LOCATION can be an integer, a
-(zero-based) index into the table at which the new object is inserted
-(BEFORE is ignored in this case).
-
-** JSON
-
----
-*** The parser keeps duplicated object keys in alist and plist output.
-A JSON object such as '{"a":1,"a":2}' will now be translated into the
-Lisp values '((a . 1) (a . 2))' or '(:a 1 :a 2)' if alist or plist
-object types are requested.
-
----
-*** The parser sometimes signals different types of errors.
-It will now signal 'json-utf8-decode-error' for inputs that are not
-correctly UTF-8 encoded.
-
----
-*** The parser and encoder now accept arbitrarily large integers.
-Previously, they were limited to the range of signed 64-bit integers.
-
-** New tree-sitter functions and variables for defining and using "things"
-
-+++
-*** New variable 'treesit-thing-settings'.
-It allows modes to define "things" like 'defun', 'text', 'sexp', and
-'sentence' for navigation commands and tree-traversal functions.
-
-+++
-*** New functions for navigating "things".
-There are new navigation functions 'treesit-thing-prev',
-'treesit-thing-next', 'treesit-navigate-thing',
-'treesit-beginning-of-thing', and 'treesit-end-of-thing'.
-
-+++
-*** New functions 'treesit-thing-at', 'treesit-thing-at-point'.
-
-+++
-*** Tree-traversing functions.
-The functions 'treesit-search-subtree', 'treesit-search-forward',
-'treesit-search-forward-goto', and 'treesit-induce-sparse-tree' now
-accept more kinds of predicates.  Lisp programs can now use thing
-symbols (defined in 'treesit-thing-settings') and any thing definitions
-for the predicate argument.
-
-** Other tree-sitter function and variable changes
-
-+++
-*** 'treesit-parser-list' now takes additional optional arguments.
-The additional arguments are LANGUAGE and TAG.  If LANGUAGE is given,
-only return parsers for that language.  If TAG is given, only return
-parsers with that tag.  Note that passing nil as tag doesn't mean return
-all parsers, but rather "all parsers with no tags".
-
-+++
-*** New variable 'treesit-primary-parser'.
-This variable should be set by multi-langauge major modes before calling
-'treesit-major-mode-setup', in order for tree-sitter integration
-functionalities to operate correctly.
-
-\f
-* Changes in Emacs 30.1 on Non-Free Operating Systems
-
-** MS-Windows
-
-+++
-*** You can now opt out of following the system's Dark mode.
-By default, Emacs on MS-Windows follows the system's Dark mode for its
-title bars' and scroll bars' appearance.  If the new user option
-'w32-follow-system-dark-mode' is customized to the nil value, Emacs
-will disregard the system's Dark mode and will always use the default
-Light mode.
-
----
-*** You can now use Image-Dired even if 'convert' command is not installed.
-If you don't have GraphicsMagick or ImageMagick installed, and thus the
-'gm convert'/'convert' command is not available, Emacs on MS-Windows
-will now use its own function 'w32image-create-thumbnail' to create
-thumbnail images and show them in the thumbnail buffer.  Unlike with
-using 'convert', this fallback method is synchronous, so Emacs will wait
-until all the thumbnails are created and displayed, before showing them.
-
----
-*** Emacs on MS-Windows now supports the ':stipple' face attribute.
-
-\f
-----------------------------------------------------------------------
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
-
-\f
-Local variables:
-coding: utf-8
-mode: outline
-mode: emacs-news
-paragraph-separate: "[  \f]"
-end:
diff --git a/etc/NEWS.30 b/etc/NEWS.30
new file mode 100644 (file)
index 0000000..5048072
--- /dev/null
@@ -0,0 +1,3194 @@
+GNU Emacs NEWS -- history of user-visible changes.
+
+Copyright (C) 2022-2024 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
+If possible, use 'M-x report-emacs-bug'.
+
+This file is about changes in Emacs version 30.
+
+See file HISTORY for a list of GNU Emacs versions and release dates.
+See files NEWS.29, NEWS.28, ..., NEWS.18, and NEWS.1-17 for changes
+in older Emacs versions.
+
+You can narrow news to a specific version by calling 'view-emacs-news'
+with a prefix argument or by typing 'C-u C-h C-n'.
+
+Temporary note:
++++ indicates that all relevant manuals in doc/ have been updated.
+--- means no change in the manuals is needed.
+When you add a new item, use the appropriate mark if you are sure it
+applies, and please also update docstrings as needed.
+
+\f
+* Installation Changes in Emacs 30.1
+
++++
+** Emacs has been ported to the Android operating system.
+This requires Emacs to be compiled on another computer.  The Android
+NDK, SDK, and a suitable Java compiler must also be installed.
+
+See the file 'java/INSTALL' for more details.
+
+---
+** Native compilation is now enabled by default.
+'configure' will enable the Emacs Lisp native compiler, so long as
+libgccjit is present and functional on the system.  To disable native
+compilation, configure Emacs with the option:
+
+    ./configure --with-native-compilation=no
+
+---
+** Emacs now defaults to ossaudio library for sound on NetBSD and OpenBSD.
+Previously configure used ALSA libraries if installed on the
+system when configured '--with-sound=yes' (which is the default), with
+fallback to libossaudio.  The libossaudio library included with the
+base system is now used even if ALSA is found to avoid relying on
+external packages and to resolve potential incompatibilities between
+Linux and BSD versions of ALSA.  Use '--with-sound=alsa' to build with
+ALSA on these operating systems instead.
+
+---
+** Native JSON support is now always available; libjansson is no longer used.
+No external library is required.  The '--with-json' configure option has
+been removed.  'json-available-p' now always returns non-nil and is only
+kept for compatibility.
+
+\f
+* Startup Changes in Emacs 30.1
+
+** On GNU/Linux, Emacs is now the default application for 'org-protocol'.
+Org mode provides a way to quickly capture bookmarks, notes, and links
+using 'emacsclient':
+
+    emacsclient "org-protocol://store-link?url=URL&title=TITLE"
+
+Previously, users had to manually configure their GNU/Linux desktop
+environment to open 'org-protocol' links in Emacs.  These links should
+now open in Emacs automatically, as the "emacsclient.desktop" file now
+arranges for Emacs to be the default application for the 'org-protocol'
+URI scheme.  See the Org mode manual, Info node "(org) Protocols" for
+more details.
+
+\f
+* Incompatible Changes in Emacs 30.1
+
+** Mouse wheel events should now always be 'wheel-up/down/left/right'.
+At those places where the old 'mouse-4/5/6/7' events could still occur
+(i.e., X11 input in the absence of XInput2, and 'xterm-mouse-mode'),
+we remap them to the corresponding 'wheel-up/down/left/right' event,
+according to the new variable 'mouse-wheel-buttons'.
+The old variables 'mouse-wheel-up-event', 'mouse-wheel-down-event',
+'mouse-wheel-left-event', and 'mouse-wheel-right-event' are thereby
+obsolete.
+
+** Tree-Sitter modes are now declared as submodes of the non-TS modes.
+In order to help the use of those Tree-Sitter modes, they are now
+declared to have the corresponding non-Tree-Sitter mode as an
+additional parent.
+This way, things like ".dir-locals.el" settings, and YASnippet
+collections of snippets automatically apply to the new Tree-Sitter modes.
+
+Note that those modes still do not inherit from the non-TS mode, so
+configuration settings installed via mode hooks are not affected.
+
++++
+** URL now never sends user email addresses in HTTP requests.
+Emacs never sent email addresses by default, but it used to be
+possible to customize 'url-privacy-level' so that the users email
+address was sent along in HTTP requests.  This feature has now been
+removed, as it was considered more dangerous than useful.  RFC 9110
+(§ 10.1.2) also recommends against it.  The user option
+'url-personal-mail-address' is now also obsolete.
+
+To send an email address in the header of individual HTTP requests,
+see the variable 'url-request-extra-headers'.
+
+** The default process filter was rewritten in native code.
+The round-trip through the Lisp function
+'internal-default-process-filter' is skipped when the process filter is
+the default one.  It's reimplemented in native code, reducing GC churn.
+
+To undo the change, set 'fast-read-process-output' to nil.
+
+\f
+* Changes in Emacs 30.1
+
+** 'describe-function' now shows the type of the function object.
+The text used to say things like "car is is a built-in function"
+whereas it now says "car is a primitive-function" where "primitive-function"
+is the symbol returned by 'cl-type-of' and you can click on it to get
+information about that type.
+
+** 'advice-remove' is now an interactive command.
+When called interactively, 'advice-remove' now prompts for an advised
+function to the advice to remove.
+
+** Emacs now supports Unicode Standard version 15.1.
+
+** New pre-defined values for 'electric-quote-chars'.
+The available customization options for 'electric-quote-chars' have been
+updated with common pairs of quotation characters, including "‘", "’",
+"“", "”", "«", "»", "‹", "›", "‚", "„", "「", "」", "『", and "』".
+The default is unchanged.
+
+** Network Security Manager
+
++++
+*** The Network Security Manager now warns about 3DES by default.
+This cypher is no longer recommended owing to a major vulnerability
+disclosed in 2016, and its small 112 bit key size.  Emacs now warns
+about its use also when 'network-security-level' is set to 'medium'
+(the default).  See 'network-security-protocol-checks'.
+
+---
+*** The Network Security Manager now warns about <2048 bits in DH key exchange.
+Emacs used to warn for Diffie-Hellman key exchanges with prime numbers
+smaller than 1024 bits.  Since more servers now support it, this
+number has been bumped to 2048 bits.
+
+** Help
+
+*** 'describe-function' shows function inferred type when available.
+For native compiled Lisp functions 'describe-function' prints (after
+the signature) the automatically inferred function type as well.
+
+---
+*** New user option 'describe-bindings-outline-rules'.
+This user option controls outline visibility in the output buffer of
+'describe-bindings' when 'describe-bindings-outline' is non-nil.
+
+---
+*** 'C-h m' ('describe-mode') uses outlining by default.
+Set 'describe-mode-outline' to nil to get back the old behavior.
+
+*** 'C-h k' ('describe-key') shows Unicode name.
+For keybindings which produce single characters via translation or input
+methods, 'C-h k' now shows the Unicode name of the produced character in
+addition to the character itself, e.g.
+
+'C-h k C-x 8 E' =>
+
+    € 'EURO SIGN' (translated from C-x 8 E)
+
+*** 'C-h b' ('describe-bindings') shows Unicode names.
+For keybindings which produce single characters via translation (such as
+those using the 'C-x 8' or 'A-' prefix, or 'dead-acute', 'dead-grave',
+etc), the Unicode names will now be shown in addition to the character
+itself, i.e.
+
+    A-!                        ¡      INVERTED EXCLAMATION MARK
+    A-$                        ¤      CURRENCY SIGN
+
+and so on.
+
+** Emacs now comes with Org v9.7.
+See the file "etc/ORG-NEWS" for user-visible changes in Org.
+
+** Outline mode
+
+*** New commands to show/hide outlines by regexp.
+'/ h' ('outline-hide-by-heading-regexp') asks for a regexp and then
+hides the body lines of all outlines whose heading lines match the
+regexp.  '/ s' ('outline-show-by-heading-regexp') does the same but
+shows the matched outlines.
+
++++
+*** 'outline-minor-mode' is supported in tree-sitter major modes.
+It can be used in all tree-sitter major modes that set either the
+variable 'treesit-simple-imenu-settings' or 'treesit-outline-predicate'.
+
+** 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.
+
+** Emacs now updates invisible frames that are made visible by a compositor.
+If an invisible or an iconified frame is shown to the user by the
+compositing manager, Emacs will now redisplay such a frame even though
+'frame-visible-p' returns nil or 'icon' for it.  This can happen, for
+example, as part of preview for iconified frames.
+
+---
+** New user option 'menu-bar-close-window'.
+When non-nil, selecting "Close" from the "File" menu or clicking
+"Close" in the tool bar will result in the current window being
+closed, if possible.
+
++++
+** 'write-region-inhibit-fsync' now defaults to t in interactive mode,
+as it has in batch mode since Emacs 24.
+
++++
+** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
+When non-nil, this option suppresses moving remote files to the local
+trash when deleting.  Default is nil.
+
+---
+** New user option 'remote-file-name-inhibit-auto-save'.
+If this user option is non-nil, 'auto-save-mode' will not auto-save
+remote buffers.  The default is nil.
+
++++
+** New user option 'remote-file-name-access-timeout'.
+When a positive number, this option limits the call of 'access-file'
+for remote files to this number of seconds.  Default is nil.
+
++++
+** New user option 'yes-or-no-prompt'.
+This allows the user to customize the prompt that is appended by
+'yes-or-no-p' when asking questions.  The default value is
+"(yes or no) ".
+
+---
+** New face 'display-time-date-and-time'.
+This is used for displaying the time and date components of
+'display-time-mode'.
+
+---
+** New icon images for general use.
+Several symbolic icons are added to "etc/images/symbols", including
+plus, minus, check-mark, star, etc.
+
++++
+** Tool bars can now be placed on the bottom on more systems.
+The 'tool-bar-position' frame parameter can be set to 'bottom' on all
+window systems other than Nextstep.
+
++++
+** New global minor mode 'modifier-bar-mode'.
+When this minor mode is enabled, buttons representing modifier keys
+are displayed along the tool bar.
+
++++
+** New user option 'tool-bar-always-show-default'.
+When non-nil, the tool bar at the top of a frame does not show buffer
+local customization of the tool bar.  The default value is nil.
+
++++
+** "d" in the mode line now indicates that the window is dedicated.
+Windows have always been able to be dedicated to a specific buffer;
+see 'window-dedicated-p'.  Now the mode line indicates the dedicated
+status of a window, with "d" appearing in the mode line if a window is
+dedicated and "D" if the window is strongly dedicated.  This indicator
+appears before the buffer name, and after the buffer modification and
+remote buffer indicators (usually "---" together).
+
++++
+** New command 'toggle-window-dedicated'.
+This makes it easy to interactively mark a specific window as
+dedicated, so it won't be reused by 'display-buffer'.  This can be
+useful for complicated window setups.  It is bound to 'C-x w d'
+globally.
+
+---
+** New user option 'uniquify-dirname-transform'.
+This can be used to customize how buffer names are uniquified, by
+making arbitrary transforms on the buffer's directory name (whose
+components are used to uniquify buffer names when they clash).  You
+can use this to distinguish between buffers visiting files with the
+same base name that belong to different projects by using the provided
+transform function 'project-uniquify-dirname-transform'.
+
+** 'insert-directory-program' is now a user option.
+On *BSD and macOS systems, this user option now defaults to the "gls"
+executable, if it exists.  This should remove the need to change its
+value when installing GNU coreutils using something like ports or
+Homebrew.
+
++++
+** CL Print
+
++++
+*** You can expand the "..." truncation everywhere.
+The code that allowed "..." to be expanded in the "*Backtrace*" buffer
+should now work anywhere the data is generated by 'cl-print'.
+
++++
+*** The 'backtrace-ellipsis' button is replaced by 'cl-print-ellipsis'.
+
++++
+*** hash-tables' contents can be expanded via the ellipsis.
+
++++
+*** Modes can control the expansion via 'cl-print-expand-ellipsis-function'.
+
++++
+*** New setting 'raw' for 'cl-print-compiled'.
+This setting causes byte-compiled functions to be printed in full by
+'prin1'.  A button on this output can be activated to disassemble the
+function.
+
++++
+*** There is a new chapter in the CL manual documenting cl-print.el.
+See the Info node "(cl) Printing".
+
+** Modeline elements can now be right-aligned.
+Anything following the symbol 'mode-line-format-right-align' in
+'mode-line-format' will be right-aligned.  Exactly where it is
+right-aligned to is controlled by the new user option
+'mode-line-right-align-edge'.
+
+** Windows
+
++++
+*** New action alist entry 'some-window' for 'display-buffer'.
+It specifies which window 'display-buffer-use-some-window' should prefer.
+For example, when 'display-buffer-base-action' is customized to
+'(nil . ((some-window . mru)))', then a buffer will be displayed
+in the same most recently used window from consecutive calls of
+'display-buffer' (in a configuration with more than two windows).
+
++++
+*** New action alist entry 'category' for 'display-buffer'.
+If the caller of 'display-buffer' passes '(category . symbol)'
+in its 'action' argument, you can match the displayed buffer
+by adding '(category . symbol)' to the condition part of
+'display-buffer-alist' entries.
+
++++
+*** New action alist entry 'post-command-select-window' for 'display-buffer'.
+It specifies whether the window of the displayed buffer should be
+selected or deselected at the end of executing the current command.
+
+---
+*** User option 'display-comint-buffer-action' is now obsolete.
+You can use a '(category . comint)' condition in 'display-buffer-alist'
+to match buffers displayed by comint-related commands.  Another
+user option 'display-tex-shell-buffer-action' is obsolete too
+for which you can use '(category . tex-shell)'.
+
++++
+*** New variable 'window-restore-killed-buffer-windows'.
+It specifies how 'set-window-configuration' and 'window-state-put'
+should proceed with windows whose buffer was killed after the
+corresponding configuration or state was recorded.
+
+*** New variable 'window-point-context-set-function'.
+It can be used to set a context for window point in all windows by
+'window-point-context-set' before calling 'current-window-configuration'
+and 'window-state-get'.  Then later another new variable
+'window-point-context-use-function' can be used by
+'window-point-context-use' after 'set-window-configuration' and
+'window-state-put' to restore positions of window points
+according to the context stored in a window parameter.
+
++++
+*** New functions 'set-window-cursor-type' and 'window-cursor-type'.
+'set-window-cursor-type' sets a per-window cursor type, and
+'window-cursor-type' queries this setting for a given window.  Windows
+are always created with a 'window-cursor-type' of t, which means to
+consult the variable 'cursor-type' as before.
+
+** Tab Bars and Tab Lines
+
+---
+*** New user option 'tab-bar-select-restore-context'.
+It uses 'window-point-context-set' to save contexts where
+window points were located before switching away from the tab,
+and 'window-point-context-use' to restore positions of window
+points after switching back to that tab.
+
+---
+*** New user option 'tab-bar-select-restore-windows'.
+It defines what to do with windows whose buffer was killed since the tab
+was last selected.  By default it displays a placeholder buffer
+with the name " *Old buffer <name>*" that provides information about
+the name of the killed buffer that was displayed in that window.
+
+---
+*** New user option 'tab-bar-tab-name-format-functions'.
+It can be used to add, remove and reorder functions that change the
+appearance of every tab on the tab bar.
+
+---
+*** New hook 'tab-bar-tab-post-select-functions'.
+
+---
+*** New keymap 'tab-bar-mode-map'.
+By default it contains a keybinding 'C-TAB' to switch tabs, but only
+when 'C-TAB' is not bound globally.  You can unbind it if it conflicts
+with 'C-TAB' in other modes.
+
+---
+*** New keymap 'tab-line-mode-map'.
+By default it contains keybindings for switching tabs: 'C-x <left>',
+'C-x <right>', 'C-x C-<left>', 'C-x C-<right>'.  You can unbind them if
+you want to use these keys for the commands 'previous-buffer' and
+'next-buffer'.
+
+---
+*** Default list of tabs is changed to support a fixed order.
+This means that 'tab-line-tabs-fixed-window-buffers', the new default
+tabs function, is like the previous 'tab-line-tabs-window-buffers' where
+both of them show only buffers that were previously displayed in the
+window.  But the difference is that the new function always keeps the
+original order of buffers on the tab line, even after switching between
+these buffers.  You can drag the tabs and release at a new position
+to manually reorder the buffers on the tab line.
+
+---
+*** New user option 'tab-line-tabs-buffer-group-function'.
+It provides two choices to group tab buffers by major mode and by
+project name.
+
+---
+*** Buffers on group tabs are now sorted alphabetically.
+This will keep the fixed order of tabs, even after switching between
+them.
+
++++
+** New optional argument for modifying directory-local variables.
+The commands 'add-dir-local-variable', 'delete-dir-local-variable' and
+'copy-file-locals-to-dir-locals' now take an optional prefix argument,
+to enter the file name you want to modify.
+
+** Emacs Server and Client
+
+---
+*** 'server-eval-args-left' can be used to pop and eval subsequent args.
+When '--eval' is passed to emacsclient and Emacs is evaluating each
+argument, this variable is set to those arguments not yet evaluated.
+It can be used to 'pop' arguments and process them by the function
+called in the '--eval' expression, which is useful when those
+arguments contain arbitrary characters that otherwise might require
+elaborate and error-prone escaping (to protect them from the shell).
+
+** Registers
+
++++
+*** New user option 'register-confirm-overwrite'.
+Emacs now defaults to asking for confirmation before overwriting
+registers with existing contents.  To disable such confirmation,
+customize this option to nil.
+
++++
+*** Commands that use register contents now preview only relevant registers.
+For example, 'jump-to-register' now only shows registers that you can
+actually jump to in the *Register Preview* buffer.
+
++++
+** 'recover-file' can show diffs between auto save file and current file.
+When answering the prompt with "diff" or "=", it now shows the diffs
+between the auto save file and the current file.
+
+---
+** 'ffap-lax-url' now defaults to nil.
+Previously, it was set to t but this broke remote file name detection.
+
++++
+** Multi-character key echo now ends with a suggestion to use Help.
+Customize 'echo-keystrokes-help' to nil to prevent that.
+
++++
+** 'read-passwd' can toggle the visibility of passwords.
+Use 'TAB' in the minibuffer to show or hide the password.  Likewise,
+there is an icon on the mode-line, which toggles the visibility of the
+password when clicking with 'mouse-1'.
+
++++
+** Support for styled underline face attributes.
+These are implemented as new values of the 'style' attribute in a face
+underline specification, 'double-line', 'dots', and 'dashes', and are
+available on GUI systems.  If your terminal's termcap or terminfo
+database entry defines the 'Su' or 'Smulx' capability, Emacs will also
+emit the prescribed escape sequence to render faces with such styles on
+TTY frames.
+
+---
+** Support for underline colors on TTY frames.
+Colors specified in face underlines will now also be displayed in TTY
+frames with the previously mentioned capabilities.
+
+** Miscellaneous
+
+---
+*** New face 'appt-notification' for 'appt-display-mode-line'.
+It can be used to customize the look of the appointment notification
+displayed on the mode line when 'appt-display-mode-line' is non-nil.
+
+---
+*** Emacs now recognizes shebang lines that pass '-S'/'--split-string' to 'env'.
+When visiting a script that invokes 'env -S INTERPRETER ARGS...' in
+its shebang line, Emacs will now skip over 'env -S' and deduce the
+major mode based on the interpreter after 'env -S'.
+
++++
+** New function 'sqlite-execute-batch'.
+This function lets the user execute multiple SQL statements in one go.
+It is useful, for example, when a Lisp program needs to evaluate an
+entire SQL file.
+
+** The default value of 'read-process-output-max' was increased to 65536.
+\f
+* Editing Changes in Emacs 30.1
+
++++
+** New minor mode 'visual-wrap-prefix-mode'.
+When enabled, continuation lines displayed for a wrapped long line
+will receive a 'wrap-prefix' automatically computed from the line's
+surrounding context, such that continuation lines are indented on
+display as if they were filled with 'M-q' or similar.  Unlike 'M-q',
+the indentation only happens on display, and doesn't change the buffer
+text in any way.  The global minor mode
+'global-visual-wrap-prefix-mode' enables this minor mode in all
+buffers.
+
+(This minor mode is the 'adaptive-wrap' ELPA package renamed and
+lightly edited for inclusion in Emacs.)
+
++++
+** New user option 'gud-highlight-current-line'.
+When enabled, Gud will visually emphasize the line being executed upon
+pauses in the debugee's execution, such as those occasioned by
+breakpoints being hit.
+
+---
+** New global minor mode 'kill-ring-deindent-mode'.
+When enabled, text being saved to the kill ring will be de-indented by
+the column number at its start.  For example, saving the entire
+function call within:
+
+foo ()
+{
+  long_function_with_several_arguments (argument_1_compute (),
+                                       argument_2_compute (),
+                                       argument_3_compute ());
+}
+
+will save:
+
+long_function_with_several_arguments (argument_1_compute (),
+                                     argument_2_compute (),
+                                     argument_3_compute ())
+
+to the kill ring, omitting the two columns of extra indentation that
+would otherwise be present in the second and third lines of the
+function call.
+
++++
+** Emacs now has better support for touchscreen devices.
+On systems that understand them (at present X, Android, PGTK, and
+MS-Windows), many touch screen gestures are now implemented and
+translated into mouse or gesture events, and support for tapping tool
+bar buttons and opening menus has been written.  Countless packages,
+such as Dired and Custom have been adjusted to better understand touch
+screen input.
+
+---
+** On X, Emacs now supports input methods which perform "string conversion".
+This means an input method can now ask Emacs to delete text
+surrounding point and replace it with something else, as well as query
+Emacs for surrounding text.  If your input method allows you to "undo"
+mistaken compositions, this will now work as well.
+
+---
+** New command 'kill-matching-buffers-no-ask'.
+This works like 'kill-matching-buffers', but without asking for
+confirmation.
+
+---
+** New user option 'duplicate-region-final-position'.
+It controls the placement of point and the region after duplicating a
+region with 'duplicate-dwim'.
+
++++
+** New user option 'mouse-prefer-closest-glyph'.
+When enabled, clicking or dragging with the mouse will put the point
+or start the drag in front of the buffer position corresponding to the
+glyph with the closest X coordinate to the click or start of the drag.
+In other words, if the mouse pointer is in the right half of a glyph,
+point will be put after the buffer position corresponding to that glyph,
+whereas if the mouse pointer is in the left half of a glyph, point
+will be put in front the buffer position corresponding to that glyph.
+By default this is disabled.
+
+** Internationalization
+
+---
+*** Users in CJK locales can control width of some non-CJK characters.
+Some characters are considered by Unicode as "ambiguous" with respect
+to their display width: either "full-width" (i.e., taking 2 columns on
+display) or "narrow" (taking 1 column).  The actual width depends on
+the fonts used for these characters by Emacs or (for text-mode frames)
+by the terminal emulator.  Traditionally, font sets in CJK locales
+were set up so as to display these characters as full-width, and thus
+Emacs modified the char-width table in those locales to follow suit.
+Lately, the tendency is to display these characters as narrow.  The
+new user option 'cjk-ambiguous-chars-are-wide' allows users to control
+whether Emacs considers these characters as full-width (the default)
+or narrow (if the variable is customized to the nil value).
+
+This setting affects the results of 'string-width' and similar
+functions in CJK locales.
+
+---
+*** New input methods for the Urdu, Pashto, and Sindhi languages.
+These languages are spoken in Pakistan and Afghanistan.
+
+---
+*** New input method "english-colemak".
+This input method supports the Colemak keyboard layout.
+
+*** Additional 'C-x 8' key translations for "æ" and "Æ".
+These characters can now be input with 'C-x 8 a e' and 'C-x 8 A E',
+respectively, in addition to the existing translations 'C-x 8 / e' and
+'C-x 8 / E'.
+
+*** New 'C-x 8' key translations for "low" quotes "„", and "‚".
+These can now be entered with 'C-x , "' and 'C-x , ''.
+
+*** New German language 'C-x 8' key translations for quotation marks.
+The characters "„", "“", and "”" can now be entered with 'C-x 8 v',
+'C-x 8 b' and 'C-x 8 n'.  The single versions "‚", "‘", and "’" can now
+be entered with 'C-x 8 V', 'C-x 8 B' and 'C-x 8 N'.  These characters
+are used for the official German quoting style.  Using them requires
+activating German language support via 'iso-transl-set-language'.
+
+*** "latin-prefix" and "latin-postfix" quotation marks additions.
+These input methods can now produce single, double and "low" left and
+right quotation marks:
+
+    "‘", "’", "“", "”", "„", and "‚"
+
+by using "[", "]", and "," for "left", "right", and "low" respectively
+to modify "'" and """.
+
+*** "latin-prefix" and "latin-postfix" guillemets support.
+These input methods can now produce single guillemets "‹" and "›".  For
+"latin-prefix" use "~~<" and "~~>", for "latin-postfix" use "<~" and
+">~".  Double guillemets ("«" and "»") were already supported.
+
+*** New French language 'C-x 8' key translations for "‹" and "›".
+These characters can now be entered using 'C-x 8 ~ <' and 'C-x 8 ~ >'
+respectively, after activating French language support via
+'iso-transl-set-language'.  Double guillemets were already supported via
+'C-x 8 <' and 'C-x 8 >'
+
+*** Additional 'C-x 8' key translation for Euro "€" currency symbol.
+This can now be entered using 'C-x 8 E' in addition to the existing
+'C-x 8 * E' translation.
+
+\f
+* Changes in Specialized Modes and Packages in Emacs 30.1
+
+---
+** Titdic-cnv
+Most of the variables and functions in the file have been renamed to
+make sure they all use a 'tit-' namespace prefix.
+
+---
+** Trace
+In batch mode, tracing now sends the trace to stdout.
+
++++
+** Mwheel
+The 'wheel-up/down/left/right' events are now bound unconditionally,
+and the 'mouse-wheel-up/down/left/right-event' variables are thus used
+only to specify the 'mouse-4/5/6/7' events that might still
+happen to be generated by some old packages (or if 'mouse-wheel-buttons'
+has been set to nil).
+
+** Xterm Mouse mode
+This mode now emits 'wheel-up/down/right/left' events instead of
+'mouse-4/5/6/7' events for the mouse wheel.
+It uses the new variable 'mouse-wheel-buttons' to decide which button
+maps to which wheel event (if any).
+
+** Xref
+
++++
+*** You can now bookmark (and later restore) "*xref*" buffers.
+
+** Info
+
+---
+*** New user option 'Info-url-alist'.
+This user option associates manual names with URLs.  It affects the
+'Info-goto-node-web' command.  By default, associations for all
+Emacs-included manuals are set.  Further associations can be added for
+arbitrary Info manuals.
+
+*** Emacs can now display Info manuals compressed with 'lzip'.
+This requires the 'lzip' program to be installed on your system.
+
++++
+** New command 'lldb'.
+Run the LLDB debugger, analogous to the 'gud-gdb' command.
+
+** GDB MI
+
+---
+*** Variable order and truncation can now be configured in 'gdb-many-windows'.
+The new user option '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'.
+
+By default, this user option 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'.
+
+If you want to get back the old behavior, set the user option to the value
+
+    (setopt gdb-locals-table-row-config
+            `((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
+
+---
+*** New user option 'gdb-display-io-buffer'.
+If this is nil, 'M-x gdb' will neither create nor display a separate
+buffer for the I/O of the program being debugged, but will instead
+redirect the program's interaction to the GDB execution buffer.  The
+default is t, to preserve previous behavior.
+
+** Grep
+
+*** New user option 'grep-use-headings'.
+When non-nil, the output of Grep is split into sections, one for each
+file, instead of having file names prefixed to each line.  It is
+equivalent to the "--heading" option of some tools such as 'git grep'
+and 'rg'.  The headings are displayed using the new 'grep-heading'
+face.
+
+** Compilation mode
+
+---
+*** The 'omake' matching rule is now disabled by default.
+This is because it partly acts by modifying other rules which may
+occasionally be surprising.  It can be re-enabled by adding 'omake' to
+'compilation-error-regexp-alist'.
+
+*** Lua errors and stack traces are now recognized.
+Compilation mode now recognizes Lua language errors and stack traces.
+Every Lua error is recognized as a compilation error, and every Lua
+stack frame is recognized as a compilation info.
+
+** Project
+
++++
+*** New user option 'project-mode-line'.
+When non-nil, display the name of the current project on the mode
+line.  Clicking 'mouse-1' on the project name pops up the project
+menu.  The default value is nil.
+
+*** New user option 'project-file-history-behavior'.
+Customizing it to 'relativize' makes commands like 'project-find-file'
+and 'project-find-dir' display previous history entries relative to
+the current project.
+
+*** New user option 'project-key-prompt-style'.
+The look of the key prompt in the project switcher has been changed
+slightly.  To get the previous one, set this option to 'brackets'.
+
+*** 'project-try-vc' tries harder to find the responsible VCS.
+When 'project-vc-extra-root-markers' is non-nil, and causes a
+subdirectory project to be detected which is not a VCS root, we now
+additionally traverse the parent directories until a VCS root is found
+(if any), so that the ignore rules for that repository are used, and
+the file listing's performance is still optimized.
+
+*** New commands 'project-any-command' and 'project-prefix-or-any-command'.
+The former is now bound to 'C-x p o' by default.
+The latter is designed primarily for use as a value of
+'project-switch-commands'.  If instead of a short menu you prefer to
+have access to all keys defined inside 'project-prefix-map', as well
+as global bindings (to run other commands inside the project root),
+you can add this to your init script:
+
+    (setopt project-switch-commands #'project-prefix-or-any-command)
+
+---
+*** New variable 'project-files-relative-names'.
+If it's non-nil, 'project-files' can return file names relative to the
+project root.  Project backends can use this to improve the performance
+of their 'project-files' implementation.
+
+** VC
+
+---
+*** Log-Edit buffers now display a tool bar.
+This tool bar contains items for committing log entries and editing or
+generating log entries, among other editing operations.
+
+---
+*** 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.
+
+---
+*** New value 'no-backend' for user option 'vc-display-status'.
+With this value only the revision number is displayed on the mode-line.
+
+---
+*** Obsolete command 'vc-switch-backend' re-added as 'vc-change-backend'.
+The command was previously obsoleted and unbound in Emacs 28.
+
+*** Support for viewing VC change history across renames.
+When a fileset's VC change history ('C-x v l') ends at a rename, we
+now print the old name(s) and a button which jumps to their history.
+Git and Hg are supported.  Naturally, 'vc-git-print-log-follow' should
+be nil for this to work (or '--follow' should not be in
+'vc-hg-print-log-switches', in Hg's case).  Unlike when the '--follow'
+switch is used, commands to see the diff of the old revision ('d'),
+check out an old file version ('f') or annotate it right away ('a'),
+also work on revisions which precede renames.
+
+---
+*** 'vc-annotate' now abbreviates the Git revision in the buffer name.
+When using the Git backend, 'vc-annotate' will use an abbreviated
+revision identifier in its buffer name.  To restore the previous
+behavior, set 'vc-annotate-use-short-revision' to nil.
+
+*** New option 'vc-git-file-name-changes-switches'.
+It allows tweaking the thresholds for rename and copy detection.
+
+** Diff mode
+
+---
+*** New user option 'diff-refine-nonmodified'.
+When this is non-nil, 'diff-refine' will highlight lines that were added
+or removed in their entirety (as opposed to modified lines, where some
+parts of the line were modified), using the same faces as for
+highlighting the words added and removed within modified lines.  The
+default value is nil.
+
++++
+*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks.
+When called with a non-nil prefix argument,
+'diff-ignore-whitespace-hunk' now iterates over all the hunks in the
+current diff, regenerating them without whitespace changes.
+
++++
+*** New user option 'diff-ignore-whitespace-switches'.
+This allows changing which type of whitespace changes are ignored when
+regenerating hunks with 'diff-ignore-whitespace-hunk'.  Defaults to
+the previously hard-coded "-b".
+
+*** New command 'diff-apply-buffer' bound to 'C-c RET a'.
+It applies the diff in the entire diff buffer and
+saves all modified file buffers.
+
+** Isearch and Replace
+
+*** New command 'replace-regexp-as-diff'.
+It reads a regexp to search for and a string to replace with, then
+displays a buffer with replacements as diffs.  After reviewing the
+changes in the output buffer you can apply the replacements as
+a patch to the current file buffer.  There are also new commands
+'multi-file-replace-regexp-as-diff' that shows as diffs replacements
+in a list of specified files, and 'dired-do-replace-regexp-as-diff'
+that shows as diffs replacements in the marked files in Dired.
+
+** Dired
+
+---
+*** New user option 'dired-movement-style'.
+When non-nil, make 'dired-next-line', 'dired-previous-line',
+'dired-next-dirline', 'dired-prev-dirline' skip empty lines.
+It also controls how to move point when encountering a boundary
+(e.g., if every line is visible, invoking 'dired-next-line' at
+the last line will move to the first line).  The default is nil.
+
+*** New user option 'dired-filename-display-length'.
+It is an integer representing the maximum display length of filenames.
+The middle part of a filename whose length exceeds the restriction is
+hidden and an ellipsis is displayed instead.  A value of 'window'
+means using the right edge of window as the display restriction.  The
+default is nil.
+
+*** New user option 'shell-command-guess-functions'.
+It defines how to populate a list of commands available
+for 'M-!', 'M-&', '!', '&' and the context menu "Open With"
+based on marked files in Dired.  Possible backends are
+'dired-guess-default', MIME types, XDG configuration
+and a universal command such as "open" or "start"
+that delegates to the OS.
+
+*** New command 'dired-do-open'.
+This command is bound to 'E' (mnemonics "External").  Also it can be
+used by clicking "Open" in the context menu; it "opens" the marked or
+clicked on files according to the OS conventions.  For example, on
+systems supporting XDG, this runs 'xdg-open' on the files.
+
+*** New variable 'dired-guess-shell-alist-optional'.
+It contains commands for external viewers and players for various media
+formats, moved to this list from 'dired-guess-shell-alist-default'.
+
+*** The default value of 'dired-omit-size-limit' was increased.
+After performance improvements to omitting in large directories, the new
+default value is 300k, up from 100k.  This means 'dired-omit-mode' will
+omit files in directories whose directory listing is up to 300 kilobytes
+in size.
+
++++
+*** 'dired-listing-switches' handles connection-local values if exist.
+This allows to customize different switches for different remote machines.
+
+** Ediff
+
+---
+*** New user option 'ediff-floating-control-frame'.
+If non-nil, try making the control frame be floating rather than tiled.
+
+Many X tiling window managers make the Ediff control frame a tiled
+window equal in size to the main Emacs frame, which works poorly.
+This option is useful to set if you use such a window manager.
+
+** Buffer Selection
+
+---
+*** 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
+
++++
+*** You can now run Eshell scripts in batch mode.
+By adding the following interpreter directive to an Eshell script, you
+can make it executable like other shell scripts:
+
+    #!/usr/bin/env -S emacs --batch -f eshell-batch-file
+
++++
+*** New builtin Eshell command 'compile'.
+This command runs another command, sending its output to a compilation
+buffer when the command would output interactively.  This can be useful
+when defining aliases so that they produce a compilation buffer when
+appropriate, but still allow piping the output elsewhere if desired.
+For more information, see the "(eshell) Built-ins" node in the Eshell
+manual.
+
++++
+*** Eshell's 'env' command now supports running commands.
+Like in many other shells, Eshell's 'env' command now lets you run a
+command passed as arguments to 'env'.  If you pass any initial
+arguments of the form 'VAR=VALUE', 'env' will first set 'VAR' to
+'VALUE' before running the command.
+
+---
+*** Eshell's 'umask' command now supports setting the mask symbolically.
+Now, you can pass an argument like "u+w,o-r" to Eshell's 'umask'
+command, which will give write permission for owners of newly-created
+files and deny read permission for users who are not members of the
+file's group.  See the Info node "(coreutils) File permissions" for
+more information on this notation.
+
+---
+*** Performance improvements for interactive output in Eshell.
+Interactive output in Eshell should now be significantly faster,
+especially for commands that can print large amounts of output
+(e.g. "cat").  For external commands, Eshell saves time by only looking
+for password prompts in the last 256 characters of each block of output.
+To restore the previous behavior when checking for password prompts, set
+'eshell-password-prompt-max-length' to 'most-positive-fixnum'.
+
+---
+*** Eshell built-in commands can now display progress.
+Eshell built-in commands like "cat" and "ls" now update the display
+periodically while running to show their progress.
+
++++
+*** New special reference type '#<marker POSITION BUFFER>'.
+This special reference type returns a marker at 'POSITION' in
+'BUFFER'.  You can insert it by typing or using the new interactive
+command 'eshell-insert-marker'.  You can also insert special
+references of any type using the new interactive command
+'eshell-insert-special-reference'.  See the "(eshell) Arguments" node
+in the Eshell manual for more details.
+
++++
+*** 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.
+
++++
+*** You can now splice Eshell globs in-place into argument lists.
+By setting 'eshell-glob-splice-results' to a non-nil value, Eshell
+will expand glob results in-place as if you had typed each matching
+file name individually.  For more information, see the "(eshell)
+Globbing" node in the Eshell manual.
+
++++
+*** Eshell now supports negative numbers and ranges for indices.
+Now, you can retrieve the last element of a list with '$my-list[-1]'
+or get a sublist of elements 2 through 4 with '$my-list[2..5]'.  For
+more information, see the "(eshell) Dollars Expansion" node in the
+Eshell manual.
+
++++
+*** Eshell commands can now be explicitly-remote (or local).
+By prefixing a command name in Eshell with a remote identifier, like
+"/ssh:user@remote:whoami", you can now run commands on a particular
+host no matter your current directory.  Likewise, you can run a
+command on your local system no matter your current directory via
+"/local:whoami".  For more information, see the "(eshell) Remote Access"
+node in the Eshell manual.
+
++++
+*** Eshell's '$UID' and '$GID' variables are now connection-aware.
+Now, when expanding '$UID' or '$GID' in a remote directory, the value
+is the user or group ID associated with the remote connection.
+
+---
+*** Eshell now uses 'field' properties in its output.
+In particular, this means that pressing the '<home>' key moves the
+point to the beginning of your input, not the beginning of the whole
+line.  If you want to go back to the old behavior, add something like
+this to your configuration:
+
+    (keymap-set eshell-mode-map "<home>" #'eshell-bol-ignoring-prompt)
+
+This also means you no longer need to adjust 'eshell-prompt-regexp'
+when customizing your Eshell prompt.
+
+---
+*** You can now properly unload Eshell.
+Calling '(unload-feature 'eshell)' no longer signals an error, and now
+correctly unloads Eshell and all of its modules.
+
++++
+*** 'eshell-read-aliases-list' is now an interactive command.
+After manually editing 'eshell-aliases-file', you can use this command
+to load the edited aliases.
+
++++
+*** 'rgrep' is now a builtin command.
+Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
+calling external rgrep.
+
++++
+*** If a command exits abnormally, the Eshell prompt now shows its exit code.
+
++++
+*** New user option 'eshell-history-append'.
+If non-nil, each Eshell session will save history by appending new
+entries of that session to the history file rather than overwriting
+the file with the whole history of the session.  The default is nil.
+
+** Minibuffer and Completions
+
++++
+*** 'SPC' in the minibuffer now inserts a space.
+'SPC' no longer completes by word in the minibuffer.  To have 'SPC'
+perform minibuffer completion, add the following form to your init file:
+
+  (keymap-set minibuffer-local-completion-map "SPC" #'minibuffer-complete)
+
++++
+*** Highlight the part of your input that prevents matching any completion.
+When completion fails, Emacs now momentarily highlights the part of your
+minibuffer input that prevents it from matching any of the possible
+completion candidates.  You can customize the new user option
+'minibuffer-pulse-failing-completion' to control this behavior.
+
+*** New commands 'previous-line-completion' and 'next-line-completion'.
+Bound to '<up>' and '<down>' arrow keys, respectively, they navigate
+the "*Completions*" buffer vertically by lines, wrapping at the
+top/bottom when 'completion-auto-wrap' is non-nil.
+
+*** New command 'minibuffer-apply'.
+This command, bound to 'C-j' in the minibuffer during completion, acts
+on the current input without exiting the minibuffer.  The action that
+this command performs mirrors what the command that initiated the
+minibuffer does.
+
++++
+*** New value 'historical' for user option 'completions-sort'.
+When 'completions-sort' is set to 'historical', completion candidates
+will be first sorted alphabetically, and then re-sorted by their order
+in the minibuffer history, with more recent candidates appearing first.
+
++++
+*** New commands for narrowing (restricting) minibuffer completions list.
+You can now use 'C-x n n' ('minibuffer-narrow-completions-to-current')
+in the minibuffer to restrict the list of possible completions to only
+include candidates matching the current minibuffer input.  New command
+'C-x n m' ('minibuffer-narrow-completions') is similar, but uses an
+alternative restriction method that depends on the relevant completion
+candidates.  For example, commands that read an Elisp symbol let you
+restrict the completions list with 'C-x n m' to only include symbols
+with a given property.  Similarly, commands that read a bookmark name
+let you restrict the completions list to only include bookmarks of a
+given type.  See the new Info node "(emacs) Narrow Completions" for
+more information.
+
++++
+*** New command for reordering the minibuffer completions list.
+You can now use 'C-x C-v' ('minibuffer-sort-completions') in the
+minibuffer to change the sort order of the completions list.  If you
+invoke this command with a negative prefix argument ('C-- C-x C-v'),
+it reverses the current order.
+
++++
+*** New command 'minibuffer-cycle-completion'.
+This command, bound to 'C-o' in the minibuffer, expands the current
+minibuffer contents to the first matching completion, and cycles among
+all matching candidates if you call it repeatedly.  This is similar to
+'minibuffer-complete' ('TAB' in the minibuffer) with non-nil
+'completion-cycle-threshold', except that
+'minibuffer-cycle-completion' always cycles, regardless of the value
+of 'completion-cycle-threshold' and the number of completion
+candidates.
+
++++
+*** New command 'minibuffer-restore-completion-input'.
+This command, bound to 'C-l' in the minibuffer, restores the (partial)
+input that you last used for completion in the current minibuffer.
+
++++
+*** New command 'minibuffer-toggle-completion-ignore-case'.
+This command, bound to 'C-A' in the minibuffer, toggles completion
+case-sensitivity for the current minibuffer.
+
+*** New minor mode 'completions-auto-update-mode'.
+This global minor mode automatically updates the *Completions* buffer
+as you type in the minibuffer.
+
++++
+*** New command 'crm-change-separator'.
+This command lets you change the separator that
+'completing-read-multiple' uses to split your input to multiple
+strings.  'completing-read-multiple' binds 'C-x ,' to
+'crm-change-separator' in the minibuffer.
+
++++
+*** New command 'crm-complete-and-insert-separator'.
+This command, bound to 'C-,' in 'completing-read-multiple'
+minibuffers, completes partial inputs that are already in the
+minibuffer, and inserts a new separator at the end of the minibuffer
+for you to insert a another input.
+
++++
+*** Highlight 'completing-read-multiple' separators in the minibuffer.
+Emacs now highlights input separators when you provide multiple inputs
+in the minibuffer for 'completing-read-multiple'.  This highlighting
+uses the new 'crm-separator' face.
+
++++
+*** 'completion-category-overrides' supports more metadata.
+The new supported completion properties are 'cycle-sort-function',
+'display-sort-function', 'annotation-function', 'affixation-function',
+and 'group-function'.  You can now customize them for any category in
+'completion-category-overrides' that will override the properties
+defined in completion metadata.
+
++++
+*** File name completions can now provide detailed candidate annotations.
+With non-nil user option 'completions-detailed', Emacs now displays
+extra details about file name completion candidates in the
+"*Completions*" buffer as completion annotations.  This affects
+commands that read a file name with completion, such as 'C-x C-f'.
+
++++
+*** Buffer name completions can now provide detailed candidate annotations.
+With non-nil user option 'completions-detailed', Emacs now displays
+extra details about buffer name completion candidates in the
+"*Completions*" buffer as completion annotations.  This affects
+commands that read a buffer name with completion, such as 'C-x b'.
+
+---
+*** 'M-x' completions can now show a short description next to each candidate.
+Emacs now displays short descriptions next to command name completion
+candidates when user option 'completions-detailed' in non-nil.
+
++++
+*** New command 'minibuffer-set-completion-styles'.
+This command, bound to 'C-x /' in the minibuffer, lets you set the
+completion styles for the current minibuffer.  See Info node
+"(emacs)Completion Styles" for more information about this new
+command, and completion styles in general.
+
++++
+*** 'completion-extra-properties' supports more metadata.
+The new supported completion properties are 'category',
+'group-function', 'display-sort-function', and 'cycle-sort-function'.
+
++++
+*** The completions heading line now displays more information.
+In particular, the heading line now mentions the completions category,
+which you can use to customize completion behavior via
+'completion-category-overrides'.  As is Emacs 29, user option
+'completions-header-format' controls the format of the heading line,
+and you can now customize the face 'completions-heading' to control
+its appearance.
+
++++
+*** Highlight previous minibuffer inputs in the completions list.
+Emacs now highlights completion candidates that appear in the
+minibuffer history with face 'completions-previous-input' in the
+"*Completions*" buffer.  You can disable this highlighting by
+customizing 'completions-highlight-previous-inputs' to nil.
+
+** Pcomplete
+
+---
+*** New user option 'pcomplete-remote-file-ignore'.
+When this option is non-nil, remote file names are not completed by
+Pcomplete.  Packages, like 'shell-mode', could set this in order to
+suppress remote file name completion at all.
+
+---
+*** Completion for the 'doas' command has been added.
+Command completion for 'doas' in Eshell and Shell mode will now work.
+
+** Shell mode
+
++++
+*** New user option 'shell-get-old-input-include-continuation-lines'.
+When this user option is non-nil, 'shell-get-old-input' ('C-RET')
+includes multiple shell "\" continuation lines from command output.
+Default is nil.
+
++++
+*** New user option 'shell-history-file-name'.
+When this user option is set to t, 'shell-mode' does not read the shell
+history file.  Setting this user option to a string specifies the name
+of the shell history file to be read.  A nil value triggers reading the
+environment variable 'HISTFILE'.
+
+In a 'shell' buffer, this user option is connection-local.
+
+---
+*** Performance improvements for interactive output.
+Interactive output in Shell mode now scans more selectively for password
+prompts by only examining the last 256 characters of each block of
+output, reducing the time spent when printing large amounts of output.
+To restore the old behavior, set 'comint-password-prompt-max-length' to
+'most-positive-fixnum'.
+
+** Make mode
+
+*** The Makefile browser is now obsolete.
+The command 'makefile-switch-to-browser' command is now obsolete,
+together with related commands used in the "*Macros and Targets*"
+buffer.  We recommend using an alternative like 'imenu' instead.
+
+** Prog mode
+
++++
+*** New command 'prog-fill-reindent-defun'.
+This command either fills a single paragraph in a defun, such as a
+docstring, 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.
+
+** Imenu
+
++++
+*** New user option 'imenu-flatten'.
+It controls  whether to flatten the list of sections in an imenu, and
+how to display the sections in the flattened list.
+
++++
+*** The sort order of Imenu completions can now be customized.
+You can customize the option 'completion-category-overrides'
+and set 'display-sort-function' for the category 'imenu'.
+
+** Which Function mode
+
++++
+*** Which Function mode can now display function names on the header line.
+The new user option 'which-func-display' allows choosing where the
+function name is displayed.  The default is 'mode' to display in the
+mode line.  'header' will display in the header line;
+'mode-and-header' displays in both the header line and mode line.
+
++++
+*** New user option 'which-func-update-delay'.
+This replaces the user option 'idle-update-delay', which was previously
+used to control the delay before 'which-function-mode' updated its
+display.  The user option 'idle-update-delay', which was only used by
+Which Function mode, is now obsolete.
+
+** Tramp
+
++++
+*** Tramp methods can be optional.
+An optional connection method is not enabled by default.  The user must
+enable it explicitly by the 'tramp-enable-method' command.  The existing
+methods "fcp", "krlogin", " ksu" and "nc" are optional now.
+
++++
+*** New optional connection method "androidsu".
+This provides access to system files with elevated privileges granted by
+the idiosyncratic 'su' implementations and system utilities customary on
+Android.
+
++++
+*** New optional connection method "run0".
+This connection method is similar to "sudo", but it uses the
+'systemd-run' program internally.
+
++++
+*** New connection methods "dockercp" and "podmancp".
+These are the external methods counterparts of "docker" and "podman".
+
++++
+*** New optional connection methods for containers.
+There are new optional connection methods "toolbox", "distrobox",
+"flatpak", "apptainer" and "nspawn".  They allow accessing system
+containers provided by Toolbox or Distrobox, sandboxes provided by
+Flatpak, instances managed by Apptainer, or accessing systemd-based
+light-weight containers..
+
++++
+*** Connection method "kubernetes" supports now optional container name.
+The host name for Kubernetes connections can be of kind [CONTAINER.]POD,
+in order to specify a dedicated container.  If there is just the pod
+name, the first container in the pod is taken.  The new user options
+'tramp-kubernetes-context' and 'tramp-kubernetes-namespace' allow
+accessing pods with different context or namespace but the default one.
+
++++
+*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'.
+The old name still exists as obsolete variable alias.  This user
+option controls now connection sharing for both ssh-based and
+plink-based methods.  It allows the values t, nil, and 'suppress'.
+The latter suppresses also "ControlMaster" settings in the user's
+"~/.ssh/config" file, or connection share configuration in PuTTY
+sessions, respectively.
+
++++
+*** New command 'tramp-cleanup-some-buffers'.
+It kills only a subset of opened remote buffers, subject to the user
+option 'tramp-cleanup-some-buffers-hook'.
+
++++
+*** New command 'inhibit-remote-files'.
+This command disables the handling of file names with the special
+remote file name syntax.  It should be applied only when remote files
+won't be used in this Emacs instance.  It provides a slightly improved
+performance of file name handling in Emacs.
+
++++
+*** New macro 'without-remote-files'.
+This macro could wrap code which handles local files only.  Due to the
+temporary deactivation of remote files, it results in a slightly
+improved performance of file name handling in Emacs.
+
++++
+*** New user option 'tramp-completion-multi-hop-methods'.
+It contains a list of connection methods for which completion should
+be attempted at the end of a multi-hop chain.  This allows completion
+candidates to include a list of, for example, containers running on a
+remote docker host.
+
++++
+*** New command 'tramp-revert-buffer-with-sudo'.
+It reverts the current buffer to visit with "sudo" permissions.  The
+buffer must either visit a file, or it must run 'dired-mode'.  Another
+method but "sudo" can be configured with user option
+'tramp-file-name-with-method'.
+
++++
+*** Direct asynchronous processes are indicated by a connection-local variable.
+If direct asynchronous processes shall be used, set the connection-local
+variable 'tramp-direct-async-process' to a non-nil value.  This has been
+changed, in previous Emacs versions this was indicated by the now
+deprecated connection property "direct-async-process".  See the Tramp
+manual "(tramp) Improving performance of asynchronous remote processes".
+
+---
+*** Direct asynchronous processes use 'tramp-remote-path'.
+When a direct asynchronous process is invoked, it uses 'tramp-remote-path'
+for setting the remote 'PATH' environment variable.
+
+** File Notifications
+
++++
+*** All backends except w32notify detect unmounting of a watched filesystem now.
+
+** EWW
+
+---
+*** New mouse bindings in EWW buffers.
+Certain form elements that were displayed as buttons, yet could only be
+activated by keyboard input, are now operable using 'mouse-2'.  With
+"Submit" buttons, this triggers submission of the form, while clicks on
+other classes of buttons either toggle their values or prompt for user
+input, as the case may be.
+
+---
+*** EWW text input fields and areas are now fields.
+In consequence, movement commands and OS input method features now
+recognize and confine their activities to the text input field around
+point.  See also the Info node "(elisp) Fields".
+
++++
+*** 'eww-open-file' can now display the file in a new buffer.
+By default, the command reuses the "*eww*" buffer, but if called with
+the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
+Interactively, invoke 'eww-open-file' with a prefix argument to
+activate this behavior.
+
+---
+*** 'eww' URL or keyword prompt now has tab completion.
+The interactive minibuffer prompt when invoking 'eww' now has support
+for tab completion.
+
++++
+*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
+The interactive minibuffer prompt when invoking 'eww' now provides
+completions from 'eww-suggest-uris'.  'eww-suggest-uris' now includes
+bookmark URIs.
+
++++
+*** New command 'eww-copy-alternate-url'.
+It copies an alternate link on the page currently visited in EWW into
+the kill ring.  Alternate links are optional metadata that HTML pages
+use for linking to their alternative representations, such as
+translated versions or associated RSS feeds.
+
++++
+*** 'eww-open-in-new-buffer' supports the prefix argument.
+When invoked with the prefix argument ('C-u'),
+'eww-open-in-new-buffer' will not make the new buffer the current one.
+This is useful for continuing reading the URL in the current buffer
+when the new URL is fetched.
+
+---
+*** History navigation in EWW now behaves as in other browsers.
+Previously, when navigating back and forward through page history, EWW
+would add a duplicate entry to the end of the history list each time.
+This made it impossible to navigate to the "end" of the history list.
+Now, navigating through history in EWW simply changes your position in
+the history list, allowing you to reach the end as expected.  In
+addition, when browsing to a new page from a "historical" one (i.e., a
+page loaded by navigating back through history), EWW deletes the history
+entries newer than the current page.  To change the behavior when
+browsing from "historical" pages, you can customize
+'eww-before-browse-history-function'.
+
++++
+*** 'eww-readable' now toggles display of the readable parts of a web page.
+When called interactively, 'eww-readable' toggles whether to display
+only the readable parts of a page or the full page.  With a positive
+prefix argument, it always displays the readable parts, and with a zero
+or negative prefix, it always displays the full page.
+
++++
+*** New option 'eww-readable-urls'.
+This is a list of regular expressions matching the URLs where EWW should
+display only the readable parts by default.  For more details, see
+"(eww) Basics" in the EWW manual.
+
+---
+*** New option 'eww-readable-adds-to-history'.
+When non-nil (the default), calling 'eww-readable' adds a new entry to
+the EWW page history.
+
+** Go-ts mode
+
++++
+*** New command 'go-ts-mode-docstring'.
+This command adds a docstring comment to the current defun.  If a
+comment already exists, point is only moved to the comment.  It is
+bound to 'C-c C-d' in 'go-ts-mode'.
+
+** Man mode
+
++++
+*** New user option 'Man-prefer-synchronous-call'.
+When this is non-nil, run the 'man' command synchronously rather than
+asynchronously (which is the default behavior).
+
++++
+*** New user option 'Man-support-remote-systems'.
+This option controls whether the man page is formatted on the remote
+system when the current buffer's default-directory is remote.  You can
+invoke the 'man' command with a prefix argument to countermand the
+value of this option for the current invocation of 'man'.
+
+** DocView
+
+---
+*** New face 'doc-view-svg-face'.
+This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'.
+If you don't like the colors produced by the default definition of
+this new face when DocView displays documents, customize this face to
+restore the colors you were used to, or to get colors more to your
+liking.
+
+---
+*** DocView buffers now display a new tool bar.
+This tool bar contains options for searching and navigating within the
+document, replacing the incompatible items for incremental search and
+editing within the default tool bar displayed in the past.
+
+** Shortdoc
+
++++
+*** New function 'shortdoc-function-examples'.
+This function returns examples of use of a given Emacs Lisp function
+from the available shortdoc information.
+
++++
+*** New function 'shortdoc-help-fns-examples-function'.
+This function inserts into the current buffer examples of use of a
+given Emacs Lisp function, which it gleans from the shortdoc
+information.  If you want 'describe-function' ('C-h f') to insert
+examples of using the function into regular "*Help*" buffers, add the
+following to your init file:
+
+    (add-hook 'help-fns-describe-function-functions
+              #'shortdoc-help-fns-examples-function)
+
+** Package
+
+---
+*** New user option 'package-vc-register-as-project'.
+When non-nil, it will automatically register every package as a
+project, that you can quickly select using 'project-switch-project'
+('C-x p p').
+
+---
+*** New user option 'package-vc-allow-build-commands'.
+Controls for which packages Emacs runs extra build commands when
+installing directly from the package VCS repository.
+
+---
+*** New command 'package-vc-log-incoming'.
+This commands displays incoming changes for a VC package without
+modifying the current checkout.
+
+---
+*** New command to start an inferior Emacs loading only specific packages.
+The new command 'package-isolate' will start a new Emacs process, as
+a sub-process of Emacs where you invoke the command, in a way that
+causes the new process to load only some of the installed packages.
+The command prompts for the packages to activate in this
+sub-process, and is intended for testing Emacs and/or the packages
+in a clean environment.
+
+** Flymake
+
++++
+*** New user option 'flymake-indicator-type'.
+This user option controls which error indicator type Flymake should use
+in current buffer.  Depending on your preference, this can either use
+fringes or margins for indicating errors.
+
++++
+*** New user option 'flymake-margin-indicators-string'.
+It controls, for each error type, the string and its face to display as
+the margin indicator.
+
++++
+*** New user option 'flymake-autoresize-margins'.
+If non-nil, Flymake will resize the margins when 'flymake-mode' is
+turned on or off.
+Only relevant if 'flymake-indicator-type' is set to 'margins'.
+
++++
+*** New user option 'flymake-margin-indicator-position'.
+It controls which margin (left or right) is used for margin
+indicators.
+
++++
+*** New user option 'flymake-show-diagnostics-at-end-of-line'.
+When non-nil, Flymake shows summarized descriptions of diagnostics at
+the end of the line.  Depending on your preference, this can either be
+distracting and easily confused with actual code, or a significant
+early aid that relieves you from moving the buffer or reaching for the
+mouse to consult an error message.
+
+** Flyspell
+
+*** New user option 'flyspell-check-changes'.
+When non-nil, Flyspell mode spell-checks only words that you edited; it
+does not check unedited words just because you move point across them.
+
+** JS mode.
+The binding 'M-.' has been removed from the major mode keymaps in
+'js-mode' and 'js-ts-mode', having it default to the global binding
+which calls 'xref-find-definitions'.  If the previous one worked
+better for you, use 'define-key' in your init script to bind
+'js-find-symbol' to that combination again.
+
+** Json mode.
+'js-json-mode' does not derive from 'js-mode' any more so as not
+to confuse tools like Eglot or YASnippet into thinking that those
+buffers contain Javascript code.
+
+** Python mode
+
+---
+*** New user option 'python-indent-block-paren-deeper'.
+If non-nil, increase the indentation of the lines inside parens in a
+header of a block when they are indented to the same level as the body
+of the block:
+
+    if (some_expression
+            and another_expression):
+        do_something()
+
+instead of:
+
+    if (some_expression
+        and another_expression):
+        do_something()
+
+*** New user option 'python-interpreter-args'.
+This allows the user to specify command line arguments to the non
+interactive Python interpreter specified by 'python-interpreter'.
+
+*** New function 'python-shell-send-block'.
+It sends the python block delimited by 'python-nav-beginning-of-block'
+and 'python-nav-end-of-block' to the inferior Python process.
+
+** Inferior Python mode
+
+---
+*** Default value of 'python-shell-compilation-regexp-alist' is changed.
+Support for Python's ExceptionGroup has been added, so in the Python
+shell, the line indicating the source of error in the error messages
+from ExceptionGroup will be recognized as well.
+
+** Scheme mode
+Scheme mode now handles regular expression literal '#/regexp/' that is
+available in some Scheme implementations.
+Also, it should now handle nested sexp-comments.
+
+** Use package
+
++++
+*** New ':vc' keyword.
+This keyword enables the user to install packages using 'package-vc'.
+
++++
+*** New user option 'use-package-vc-prefer-newest'.
+This allows the user to always install the newest commit of a package
+when using the ':vc' keyword.
+
+** Gnus
+
++++
+*** New backend 'nnfeed'.
+This allows backend developers to easily create new backends for web
+feeds, as inheriting backends of 'nnfeed'.
+
++++
+*** New backend 'nnatom'.
+This allow users to add Atom Syndication Format feeds to Gnus as
+servers.
+
+*** The 'nnweb-type' option 'gmane' has been removed.
+The gmane.org website is, sadly, down since a number of years with no
+prospect of it coming back.  Therefore, it is no longer valid to set
+the user option 'nnweb-type' to 'gmane'.
+
+---
+*** New user option 'gnus-mode-line-logo'.
+This allows the user to either disable the display of any logo or
+specify which logo will be displayed as part of the
+buffer-identification in the mode-line of Gnus buffers.
+
+** Rmail
+
+---
+*** New commands for reading mailing lists.
+The new Rmail commands 'rmail-mailing-list-post',
+'rmail-mailing-list-unsubscribe', 'rmail-mailing-list-help', and
+'rmail-mailing-list-archive' allow, respectively, posting to,
+unsubscribing from, requesting help about, and browsing the archives
+of, the mailing list from which the current email message was
+delivered.
+
+** Dictionary
+
+---
+*** New user option 'dictionary-search-interface'.
+Controls how the 'dictionary-search' command prompts for and displays
+dictionary definitions.  Customize this user option to 'help' to have
+'dictionary-search' display definitions in a "*Help*" buffer and
+provide dictionary-based minibuffer completion for word selection.
+
+---
+*** New user option 'dictionary-read-word-prompt'.
+This allows the user to customize the prompt that is used by
+'dictionary-search' when asking for a word to search in the
+dictionary.
+
+---
+*** New user option 'dictionary-display-definition-function'.
+This allows the user to customize the way in which 'dictionary-search'
+displays word definitions.  If non-nil, this user option should be set
+to a function that displays a word definition obtained from a
+dictionary server.  The new function
+'dictionary-display-definition-in-help-buffer' can be used to display
+the definition in a "*Help*" buffer, instead of the default
+"*Dictionary*" buffer.
+
+---
+*** New user option 'dictionary-read-word-function'.
+This allows the user to customize the way in which 'dictionary-search'
+prompts for a word to search in the dictionary.  This user option
+should be set to a function that lets the user select a word and
+returns it as a string.  The new function
+'dictionary-completing-read-word' can be used to prompt with
+completion based on dictionary matches.
+
+---
+*** New user option 'dictionary-read-dictionary-function'.
+This allows the user to customize the way in which 'dictionary-search'
+prompts for a dictionary to search in.  This user option should be set
+to a function that lets the user select a dictionary and returns its
+name as a string.  The new function
+'dictionary-completing-read-dictionary' can be used to prompt with
+completion based on dictionaries that the server supports.
+
+---
+*** The default value of 'dictionary-tooltip-dictionary' has changed.
+The new default value is t, which means use the same dictionary as the
+value of 'dictionary-default-dictionary'.  The previous default value
+was nil, which effectively disabled 'dictionary-tooltip-mode', even if
+the mode was turned on.
+
+** Pp
+
+*** New 'pp-default-function' user option replaces 'pp-use-max-width'.
+
+*** New default pretty printing function, which tries to obey 'fill-column'.
+
+*** 'pp-to-string' takes an additional PP-FUNCTION argument.
+This argument specifies the prettifying algorithm to use.
+
+** Emacs Lisp mode
+
+---
+*** ',@' now has 'prefix' syntax.
+Previously, the '@' character, which normally has 'symbol' syntax,
+would combine with a following Lisp symbol and interfere with symbol
+searching.
+
+---
+*** 'emacs-lisp-docstring-fill-column' now defaults to 72.
+It was previously 65.  The new default formats documentation strings to
+fit on fewer lines without negatively impacting readability.
+
+** CPerl mode
+
+---
+*** Subroutine signatures are now supported.
+CPerl mode fontifies subroutine signatures like variable declarations
+which makes them visually distinct from subroutine prototypes.
+
+*** Syntax of Perl up to version 5.40 is supported.
+CPerl mode supports the new keywords for exception handling and the
+object oriented syntax which were added in Perl 5.36, 5.38 and 5.40.
+
+*** New user option 'cperl-fontify-trailer'.
+This user option takes the values 'perl-code' or 'comment' and treats
+text after an "__END__" or "__DATA__" token accordingly.  The default
+value of 'perl-code' is useful for trailing POD and for AutoSplit
+modules, the value 'comment' makes CPerl mode treat trailers as
+comment, like Perl mode does.
+
+*** New command 'cperl-file-style'.
+This command sets the indentation style for the current buffer.  To
+change the default style, either use the user option with the same name
+or use the command 'cperl-set-style'.
+
+*** New minor mode cperl-extra-paired-delimiters-mode
+Perl 5.36 and newer allows using more than 200 non-ASCII paired
+delimiters for quote-like constructs, eg. "q«text»".  Use this minor
+mode in buffers where this feature is activated.
+
+*** Commands using the Perl info page are obsolete.
+The Perl documentation in info format is no longer distributed with
+Perl or on CPAN since more than 10 years.  Perl documentation can be
+read with 'cperl-perldoc' instead.
+
+*** Highlighting trailing whitespace has been removed.
+The user option 'cperl-invalid-face' is now obsolete, and does
+nothing.  See the user option 'show-trailing-whitespace' instead.
+
+** Emacs Sessions (Desktop)
+
++++
+*** Restoring buffers visiting remote files can now time out.
+When a buffer is restored which visits a remote file, the restoration
+of the session could hang if the remote host is off-line or slow to
+respond.  Setting the user option 'remote-file-name-access-timeout' to
+a positive number will abandon the attempt to restore such buffers
+after a timeout of that many seconds, thus allowing the rest of
+desktop restoration to continue.
+
+** Recentf
+
++++
+*** Checking recent remote files can now time out.
+Similarly to buffer restoration by Desktop, 'recentf-mode' checking
+of the accessibility of remote files can now time out if
+'remote-file-name-access-timeout' is set to a positive number.
+
+---
+*** 'M-x recentf' completion candidates now sorted by recency.
+Emacs now sorts file names in 'M-x recentf' completion by recency,
+with the file you've accessed most recently first.
+
+
+** Notifications
+
++++
+*** Allow using Icon Naming Specification for ':app-icon'.
+You can use a symbol as the value for ':app-icon' to provide icon name
+without specifying a file, like this:
+
+    (notifications-notify
+      :title "I am playing music" :app-icon 'multimedia-player)
+
+** Image
+
++++
+*** Image ':map' property is now recomputed when image is transformed.
+Now images with clickable maps work as expected after you run commands
+such as 'image-increase-size', 'image-decrease-size', 'image-rotate',
+'image-flip-horizontally', and 'image-flip-vertically'.
+
++++
+*** New user option 'image-recompute-map-p'.
+Set this option to nil to prevent Emacs from recomputing image maps.
+
+** Image Dired
+
+*** New user option 'image-dired-thumb-naming'.
+You can now configure how a thumbnail is named using this option.
+
+** ERT
+
++++
+*** New macro 'skip-when' to skip 'ert-deftest' tests.
+This can help avoid some awkward skip conditions.  For example
+'(skip-unless (not noninteractive))' can be changed to the easier
+to read '(skip-when noninteractive)'.
+
++++
+*** Syntax highlighting unit testing support.
+An ERT extension ('ert-font-lock') now provides support for face
+assignment unit testing.  For more information, see the "(ert) Syntax
+Highlighting Tests" node in the ERT manual.
+
+** URL
+
++++
+*** 'url-gateway-broken-resolution' is now obsolete.
+This option was intended for use on SunOS 4.x and Ultrix systems,
+neither of which have been supported by Emacs since version 23.1.
+The user option 'url-gateway-nslookup-program' and the function
+'url-gateway-nslookup-host' are consequently also obsolete.
+
+** Socks
+
++++
+*** Socks supports version 4a.
+The 'socks-server' user option accepts '4a' as a value for its version
+field.
+
+** Edmacro
+
++++
+*** New command 'edmacro-set-macro-to-region-lines'.
+Bound to 'C-c C-r', this command replaces the macro text with the
+lines of the region.  If needed, the region is extended to include
+whole lines.  If the region ends at the beginning of a line, that last
+line is excluded.
+
++++
+*** New user option 'edmacro-reverse-macro-lines'.
+When this is non-nil, the lines of key sequences are displayed with
+the most recent line first.  This is can be useful when working with
+macros with many lines, such as from 'kmacro-edit-lossage'.
+
+** Proced
+
+---
+*** More control on automatic update of Proced buffers.
+The user option 'proced-auto-update-flag' can now be set to 2 additional
+values, which control automatic updates of Proced buffers that are not
+displayed in some window.
+
+** Kmacro
+
++++
+*** New Advanced Macro Counter functions.
+New commands have been added to implement advanced macro counter
+functions.
+
+The commands 'C-x C-k C-r l' and 'C-x C-k C-r s' load and save the
+macro counter from and to a number register, respectively.
+
+The commands 'C-x C-k C-r a =', 'C-x C-k C-r a <', and
+'C-x C-k C-r a >' compare the macro counter with the contents of a
+number register and increment the counter by an optional prefix if the
+comparison succeeds.
+
+The commands 'C-x C-k C-q =', 'C-x C-k C-q <', and 'C-x C-k C-q >'
+compare the macro counter with an optional prefix and terminate the
+macro if the comparison succeeds.
+
+** Kmacro Menu mode
+
++++
+*** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'.
+The new command 'list-keyboard-macros' is the keyboard-macro version
+of commands like 'list-buffers' and 'list-processes', creating a listing
+of the currently existing keyboards macros using the new mode
+'kmacro-menu-mode'.  It allows rearranging the macros in the ring,
+duplicating them, deleting them, and editing their counters, formats,
+and keys.
+
+** Customize
+
++++
+*** New command 'customize-dirlocals'.
+This command pops up a buffer to edit the settings in ".dir-locals.el".
+
+---
+** New command 'customize-toggle-option'.
+This command toggles the value of a boolean (nil/non-nil) option.
+
+** Calc
+
++++
+*** Calc parses fractions written using U+2044 FRACTION SLASH.
+Fractions of the form "123⁄456" are handled as if written "123:456".
+Note in particular the difference in behavior from U+2215 DIVISION SLASH
+and U+002F SOLIDUS, which result in division rather than a rational
+fraction.  You may also be interested to know that precomposed fraction
+characters, such as ½ (U+00BD VULGAR FRACTION ONE HALF), are also
+recognized as rational fractions.  They have been since 2004, but it
+looks like it was never mentioned in the NEWS, or even the manual.
+
+** IELM
+
+---
+*** IELM now remembers input history between sessions.
+The new user option 'ielm-history-file-name' is the name of the file
+where IELM input history will be saved.  Customize it to nil to revert
+to the old behavior of not remembering input history between sessions.
+
+** Xwidget Webkit
+
++++
+*** New user option 'xwidget-webkit-disable-javascript'.
+This allows disabling JavaScript in xwidget Webkit sessions.
+
+** Ls Lisp
+
+---
+*** 'ls-lisp--insert-directory' supports more long options of 'ls'.
+'ls-lisp--insert-directory', the ls-lisp implementation of
+'insert-directory', now supports the '--time=TIME' and '--sort=time'
+options of GNU 'ls'.
+
+** Widget
+
++++
+*** New user option 'widget-skip-inactive'.
+If non-nil, moving point forward or backward between widgets by typing
+'TAB' or 'S-TAB' skips over inactive widgets.  The default value is nil.
+
+** Ruby mode
+
+*** New user option 'ruby-rubocop-use-bundler'.
+By default it retains the previous behavior: read the contents of
+Gemfile and act accordingly.  But you can also set it to t or nil to
+skip the check.
+
+** Thingatpt
+
+---
+*** New variables for providing custom thingatpt implementations.
+The new variables 'bounds-of-thing-at-point-provider-alist' and
+'forward-thing-provider-alist' now allow defining custom implementations
+of 'bounds-of-thing-at-point' and 'forward-thing', respectively.
+
+---
+*** New helper functions for text property-based thingatpt providers.
+The new helper functions 'thing-at-point-for-char-property',
+'bounds-of-thing-at-point-for-char-property', and
+'forward-thing-for-char-property' can help to help implement custom
+thingatpt providers for "things" that are defined by a text property.
+
+---
+*** 'bug-reference-mode' now supports 'thing-at-point'.
+Now, calling '(thing-at-point 'url)' when point is on a bug reference
+will return the URL for that bug.
+
+** Miscellaneous
+
+---
+*** Webjump now assumes URIs are HTTPS instead of HTTP.
+For links in 'webjump-sites' without an explicit URI scheme, it was
+previously assumed that they should be prefixed with "http://".  Such
+URIs are now prefixed with "https://" instead.
+
++++
+*** New user option 'rcirc-log-time-format'.
+This allows for rcirc logs to use a custom timestamp format, than the
+chat buffers use by default.
+
++++
+*** New user option 'read-face-name-sample-text'.
+This user option lets you customize the sample text that
+'read-face-name' and commands that invoke 'read-face-name', such as
+'M-x describe-face', use to visually demonstrate faces in the
+"*Completions*" buffer.  By default this is set to the string
+"SAMPLE", which retains compatibility with Emacs 29.
+
+---
+*** New user option 'Buffer-menu-group-by'.
+It controls how buffers are divided into groups that are displayed with
+headings using Outline minor mode.  Using commands that mark buffers
+on the outline heading line will mark all buffers in the outline.
+
++++
+*** New command 'Buffer-menu-toggle-internal'.
+This command toggles the display of internal buffers in Buffer Menu mode;
+that is, buffers not visiting a file and whose names start with a space.
+Previously, such buffers were never shown.  This command is bound to 'I'
+in Buffer Menu mode.
+
+---
+*** nXML Mode now comes with schemas for Mono/.NET development.
+The following new XML schemas are now supported:
+- MSBuild project files
+- Dotnet package properties files
+- Dotnet resource extension files
+- Dotnet Application config files
+- Nuget config file
+- Nuget package specification file
+- Nuget packages config file
+
+** color.el now supports the Oklab color representation.
+
+---
+** 'M-x ping' can now give "ping" additional flags.
+Typing 'C-u M-x ping' prompts first for the host, and then for the flags
+to give to "ping".
+
+\f
+* New Modes and Packages in Emacs 30.1
+
+** New package EditorConfig.
+This package provides support for the EditorConfig standard,
+an editor-neutral way to provide directory local (project-wide) settings.
+It is enabled via a new global minor mode 'editorconfig-mode'
+which makes Emacs obey the '.editorconfig' files.
+There is also a new major mode 'editorconfig-conf-mode'
+to edit those configuration files.
+
++++
+** New package Track-Changes.
+This library is a layer of abstraction above 'before-change-functions'
+and 'after-change-functions' which provides a superset of
+the functionality of 'after-change-functions':
+- It provides the actual previous text rather than only its length.
+- It takes care of accumulating and bundling changes until a time when
+  its client finds it convenient to react to them.
+- It detects most cases where some changes were not properly
+  reported (calls to 'before/after-change-functions' that are
+  incorrectly paired, missing, etc...) and reports them adequately.
+
+** New major modes based on the tree-sitter library
+
++++
+*** New major mode 'html-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+HTML files.
+
++++
+*** New major mode 'heex-ts-mode'.
+A major mode based on the tree-sitter library for editing HEEx files.
+
++++
+*** New major mode 'elixir-ts-mode'.
+A major mode based on the tree-sitter library for editing Elixir files.
+
++++
+*** New major mode 'lua-ts-mode'.
+A major mode based on the tree-sitter library for editing Lua files.
+
++++
+*** New major mode 'php-ts-mode'.
+A major mode based on the tree-sitter library for editing PHP files.
+
+
+** Minibuffer and Completions
+
++++
+*** New global minor mode 'minibuffer-regexp-mode'.
+This is a minor mode for editing regular expressions in the minibuffer.
+It highlights parens via ‘show-paren-mode’ and ‘blink-matching-paren’ in
+a user-friendly way, avoids reporting alleged paren mismatches and makes
+sexp navigation more intuitive.
+
++++
+*** New minor mode 'completion-preview-mode'.
+This minor mode shows you symbol completion suggestions as you type,
+using an inline preview.  New user options in the 'completion-preview'
+customization group control exactly when Emacs displays this preview.
+'completion-preview-mode' is buffer-local, to enable it globally use
+'global-completion-preview-mode'.
+
++++
+*** New user option 'extended-command-dim-hyphens'.
+Set this to non-nil to have Emacs dim hyphens in 'M-x' completions.
+
+---
+** The highly accessible Modus themes collection has eight items.
+The 'modus-operandi' and 'modus-vivendi' are the main themes that have
+been part of Emacs since version 28.  The former is light, the latter
+dark.  In addition to these, we now have 'modus-operandi-tinted' and
+'modus-vivendi-tinted' for easier legibility, as well as
+'modus-operandi-deuteranopia', 'modus-vivendi-deuteranopia',
+'modus-operandi-tritanopia', and 'modus-vivendi-tritanopia' to cover
+the needs of users with red-green or blue-yellow color deficiency.
+The Info manual "(modus-themes) Top" describes the details and
+showcases all their customization options.
+
++++
+** New global minor mode 'etags-regen-mode'.
+This minor mode generates the tags table automatically based on the
+current project configuration, and later updates it as you edit the
+files and save the changes.
+
++++
+** New package Compat.
+Emacs now comes with a stub implementation of the
+forwards-compatibility Compat package from GNU ELPA.  This allows
+built-in packages to use the library more effectively, and helps
+preventing the installation of Compat if unnecessary.
+
++++
+** New package PEG.
+Emacs now includes a library for writing Parsing Expression
+Grammars (PEG), an approach to text parsing that provides more structure
+than regular expressions, but less complexity than context-free
+grammars.  The Info manual "(elisp) Parsing Expression Grammars" has
+documentation and examples.
+
+** New major mode 'shell-command-mode'.
+This mode is used by default for the output of asynchronous 'shell-command'.
+To revert to the previous behavior, set the (also new) variable
+'async-shell-command-mode' to 'shell-mode'.  Any hooks or mode-specific
+variables used should be adapted appropriately.
+
++++
+** New package Window-Tool-Bar.
+This provides a new minor mode, 'window-tool-bar-mode'.  When this minor
+mode is enabled, a tool bar is displayed at the top of a window.  To
+conserve space, no tool bar is shown if 'tool-bar-map' is nil.  The
+global minor mode 'global-window-tool-bar-mode' enables this minor mode
+in all buffers.
+
++++
+** New package Which-Key
+The 'which-key' package from GNU ELPA is now included in Emacs.  It
+implements the 'which-key-mode' that displays a table of key bindings
+upon entering a partial key chord and waiting for a moment.
+
+\f
+* Incompatible Lisp Changes in Emacs 30.1
+
+---
+** 'subr-native-elisp-p' is renamed to 'native-comp-function-p'.
+The previous name still exists but is marked as obsolete.
+
++++
+** Evaluating a 'lambda' returns an object of type 'interpreted-function'.
+Instead of representing interpreted functions as lists that start with
+either 'lambda' or 'closure', Emacs now represents them as objects
+of their own 'interpreted-function' type, which is very similar
+to 'byte-code-function' objects (the argument list, docstring, and
+interactive forms are placed in the same slots).
+Lists that start with 'lambda' are now used only for non-evaluated
+functions (in other words, for source code), but for backward compatibility
+reasons, 'functionp' still recognizes them as functions and you can
+still call them as before.
+Thus code that attempts to "dig" into the internal structure of an
+interpreted function's object with the likes of 'car' or 'cdr' will
+no longer work and will need to use 'aref' instead to extract its
+various subparts (when 'interactive-form', 'documentation', and
+'help-function-arglist' aren't adequate).
+
++++
+** 'define-globalized-minor-mode' requires that modes use 'run-mode-hooks'.
+Minor modes defined with 'define-globalized-minor-mode', such as
+'global-font-lock-mode', will not be enabled any more in those buffers
+whose major modes fail to use 'run-mode-hooks'.  Major modes defined
+with 'define-derived-mode' are not affected.  'run-mode-hooks' has been the
+recommended way to run major mode hooks since Emacs 22.
+
+---
+** Old derived.el functions removed.
+The following functions have been deleted because they were only used
+by code compiled with Emacs<21:
+'derived-mode-init-mode-variables', 'derived-mode-merge-abbrev-tables',
+'derived-mode-merge-keymaps', 'derived-mode-merge-syntax-tables',
+'derived-mode-run-hooks', 'derived-mode-set-abbrev-table',
+'derived-mode-set-keymap', 'derived-mode-set-syntax-table',
+'derived-mode-setup-function-name'.
+
++++
+** 'M-TAB' now invokes 'completion-at-point' also in Text mode.
+By default, Text mode no longer binds 'M-TAB' to
+'ispell-complete-word'.  Instead, this mode arranges for
+'completion-at-point', globally bound to 'M-TAB', to perform word
+completion as well.  You can have Text mode bind 'M-TAB' to
+'ispell-complete-word' as it did in previous Emacs versions, or
+disable Ispell word completion in Text mode altogether, by customizing
+the new user option 'text-mode-ispell-word-completion'.
+
+** 'pp' and 'pp-to-string' now always include a terminating newline.
+In the past they included a terminating newline in most cases but not all.
+
+** 'buffer-match-p' and 'match-buffers' take '&rest args'.
+They used to take a single '&optional arg' and were documented to use
+an unreliable hack to try and support condition predicates that
+don't accept this optional arg.
+The new semantics makes no such accommodation, but the code still
+supports it (with a warning) for backward compatibility.
+
+** 'post-gc-hook' runs after updating 'gcs-done' and 'gcs-elapsed'.
+
+---
+** The escape sequence '\x' not followed by hex digits is now an error.
+Previously, '\x' without at least one hex digit denoted character code
+zero (NUL) but as this was neither intended nor documented or even
+known by anyone, it is now treated as an error by the Lisp reader.
+
+---
+** Connection-local variables are applied in buffers visiting a remote file.
+This overrides possible directory-local or file-local variables with
+the same name.
+
+---
+** User option 'tramp-completion-reread-directory-timeout' has been removed.
+This user option has been obsoleted in Emacs 27, use
+'remote-file-name-inhibit-cache' instead.
+
+---
+** User options 'eshell-NAME-unload-hook' are now obsolete.
+These hooks were named incorrectly, and so they never actually ran
+when unloading the corresponding feature.  Instead, you should use
+hooks named after the feature name, like 'esh-mode-unload-hook'.
+
++++
+** 'copy-tree' now copies records when its optional 2nd argument is non-nil.
+
++++
+** Regexp zero-width assertions followed by operators are better defined.
+Previously, regexps such as "xy\\B*" would have ill-defined behavior.
+Now any operator following a zero-width assertion applies to that
+assertion only (which is useless).  For historical compatibility, an
+operator character following '^' or '\`' becomes literal, but we
+advise against relying on this.
+
+---
+** Mode-line mnemonics for some coding-systems have changed.
+The mode-line mnemonic for 'utf-7' is now the lowercase 'u', to be
+consistent with the other encodings of this family.
+
+The mode-line mnemonic for 'koi8-u' is now 'У', U+0423 CYRILLIC
+CAPITAL LETTER U, to distinguish between this encoding and the
+UTF-8/UTF-16 family.
+
+If your terminal cannot display 'У', or if you want to get the old
+behavior back for any other reason, you can do that using the
+'coding-system-put' function.  For example, the following restores the
+previous behavior of showing 'U' in the mode line for 'koi8-u':
+
+    (coding-system-put 'koi8-u :mnemonic ?U)
+
+---
+** 'vietnamese-tcvn' is now a coding system alias for 'vietnamese-vscii'.
+VSCII-1 and TCVN-5712 are different names for the same character
+encoding.  Therefore, the duplicate coding system definition has been
+dropped in favor of an alias.
+
+The mode-line mnemonic for 'vietnamese-vscii' and its aliases is the
+lowercase letter 'v'.
+
++++
+** Infinities and NaNs no longer act as symbols on non-IEEE platforms.
+On old platforms like the VAX that do not support IEEE floating-point,
+tokens like 0.0e+NaN and 1.0e+INF are no longer read as symbols.
+Instead, the Lisp reader approximates an infinity with the nearest
+finite value, and a NaN with some other non-numeric object that
+provokes an error if used numerically.
+
++++
+** X color support compatibility aliases are now marked obsolete.
+The compatibility aliases 'x-defined-colors', 'x-color-defined-p',
+'x-color-values', and 'x-display-color-p' are now obsolete.
+
++++
+** 'easy-mmode-define-{minor,global}-mode' aliases are now obsolete.
+Use 'define-minor-mode' and 'define-globalized-minor-mode' instead.
+
+** The obsolete calling convention of 'sit-for' has been removed.
+That convention was: '(sit-for SECONDS MILLISEC &optional NODISP)'.
+
+** The 'millisec' argument of 'sleep-for' has been declared obsolete.
+Use a float value for the first argument instead.
+
+** 'eshell-process-wait-{seconds,milliseconds}' options are now obsolete.
+Instead, use 'eshell-process-wait-time', which supports floating-point
+values.
+
+---
+** Bookmark commands no longer extend minibuffer history when called non-interactively
+Commands that read a bookmark name when called interactively, such as
+'bookmark-jump', used to add their bookmark name argument to the
+'bookmark-history' minibuffer history variable even when called
+non-interactively.  This special behavior is removed in this version
+of Emacs, for consistency with the common Emacs behavior where
+minibuffer history is reserved for past minibuffer inputs.
+
++++
+** Conversion of strings to and from byte-arrays works with multibyte strings.
+The functions 'dbus-string-to-byte-array' and
+'dbus-byte-array-to-string' now accept and return multibyte Lisp
+strings, encoding to UTF-8 and decoding from UTF-8 internally.  This
+means that the argument to 'dbus-byte-array-to-string' must be a valid
+UTF-8 byte sequence, and the optional parameter MULTIBYTE of
+'dbus-byte-array-to-string' is now obsolete and unused.  The argument of
+'dbus-string-to-byte-array' should be a regular Lisp string, not a
+unibyte string.
+
+\f
+* Lisp Changes in Emacs 30.1
+
++++
+** New hook 'hack-dir-local-get-variables-functions'.
+This can be used to provide support for other directory-local settings
+beside '.dir-locals.el'.
+
++++
+** 'auto-coding-functions' can know the name of the file.
+The functions on this hook can now find the name of the file to
+which the text belongs by consulting the variable 'auto-coding-file-name'.
+
++++
+** New user option 'compilation-safety' to control safety of native code.
+It's now possible to control how safe is the code generated by native
+compilation, by customizing this user option.  It is also possible to
+control this at function granularity by using the new 'safety' parameter
+in the function's 'declare' form.
+
+---
+** New variable 'read-buffer-to-switch-current-buffer'.
+'read-buffer-to-switch' let-binds this variable to the current buffer
+from which you are switching.  You can check for this variable in your
+'read-buffer-function' to determine if the caller intends to switch to
+the buffer that this function reads.
+
+---
+** New 'display-completion-list' optional argument for grouping completions.
+'display-completion-list' now takes an optional argument GROUP-FUN that
+controls grouping of displayed completions.
+
++++
+** New buffer-local variable 'undo-inhibit-region'.
+Lisp code can set this to non-nil to tell the next 'undo' command to
+ignore an active region.  This allows functions to select a region
+without restricting a subsequent 'undo'.  For commands that activate
+the region and never want to restrict 'undo' to that region, it is
+preferable to use the existing 'undo-inhibit-region' symbol property
+instead of this variable.
+
+** New types 'closure' and 'interpreted-function'.
+'interpreted-function' is the new type used for interpreted functions,
+and 'closure' is the common parent type of 'interpreted-function'
+and 'byte-code-function'.
+
+Those new types come with the associated new predicates 'closurep' and
+'interpreted-function-p' as well as a new constructor
+'make-interpreted-closure'.
+
+** New function 'help-fns-function-name'.
+For named functions, it just returns the name and otherwise
+it returns a short "unique" string that identifies the function.
+In either case, the string is propertized so clicking on it gives
+further details.
+
++++
+** New function 'char-to-name'.
+This is a convenience function to return the Unicode name of a char (if
+it has one).
+
+** New function 'cl-type-of'.
+This function is like 'type-of' except that it sometimes returns
+a more precise type.  For example, for nil and t it returns 'null'
+and 'boolean' respectively, instead of just 'symbol'.
+
+** New functions 'primitive-function-p' and 'cl-functionp'.
+'primitive-function-p' is like 'subr-primitive-p' except that it returns
+t only if the argument is a function rather than a special-form,
+and 'cl-functionp' is like 'functionp' except it returns nil
+for lists and symbols.
+
+** Built-in types have now corresponding classes.
+At the Lisp level, this means that things like '(cl-find-class 'integer)'
+will now return a class object, and at the UI level it means that
+things like 'C-h o integer RET' will show some information about that type.
+
+** New variable 'major-mode-remap-defaults' and function 'major-mode-remap'.
+The first is like Emacs-29's 'major-mode-remap-alist' but to be set by
+packages (instead of users).  The second looks up those two variables.
+
++++
+** Pcase's functions (in 'pred' and 'app') can specify the argument position.
+For example, instead of '(pred (< 5))' you can write '(pred (> _ 5))'.
+
++++
+** 'define-advice' now sets the new advice's 'name' property to NAME.
+Named advices defined with 'define-advice' can now be removed with
+'(advice-remove SYMBOL NAME)' in addition to '(advice-remove SYMBOL
+SYMBOL@NAME)'.
+
++++
+** New function 'require-with-check' to detect new versions shadowing.
+This is like 'require', but it checks whether the argument 'feature'
+is already loaded, in which case it either signals an error or
+forcibly reloads the file that defines the feature.
+
++++
+** New variable 'lisp-eval-depth-reserve'.
+It puts a limit to the amount by which Emacs can temporarily increase
+'max-lisp-eval-depth' when handling signals.
+
++++
+** New special form 'handler-bind'.
+It provides a functionality similar to 'condition-case' except it runs
+the handler code without unwinding the stack, such that we can record
+the backtrace and other dynamic state at the point of the error.  See
+the Info node "(elisp) Handling Errors".
+
++++
+** Tooltips on fringes.
+It is now possible to provide tooltips on fringes by adding special text
+properties 'left-fringe-help' and 'right-fringe-help'.  See the "(elisp)
+Special Properties" Info node in the Emacs Lisp Reference Manual for
+more details.
+
++++
+** New 'pop-up-frames' action alist entry for 'display-buffer'.
+This has the same effect as the variable of the same name and takes
+precedence over the variable when present.
+
+** New function 'merge-ordered-lists'.
+Mostly used internally to do a kind of topological sort of
+inheritance hierarchies.
+
++++
+** 'drop' is now an alias for the function 'nthcdr'.
+
++++
+** New polymorphic comparison function 'value<'.
+This function returns non-nil if the first argument is less than the
+second.  It works for any two values of the same type with reasonable
+ordering for numbers, strings, symbols, bool-vectors, markers, buffers
+and processes.  Conses, lists, vectors and records are ordered
+lexicographically.
+It is intended as a convenient ordering predicate for sorting, and is
+likely to be faster than hand-written Lisp functions.
+
++++
+** New 'sort' arguments and features.
+The 'sort' function can now be called using the signature
+
+    (sort SEQ &rest KEYWORD-ARGUMENTS)
+
+where arguments after the first are keyword/value pairs, all optional:
+':key' specifies a function that produces the sorting key from an element,
+':lessp' specifies the ordering predicate, defaulting to 'value<',
+':reverse' is used to reverse the sorting order,
+':in-place is used for in-place sorting, as the default is now to
+sort a copy of the input.
+
+The new signature is less error-prone and reduces the need to write
+ordering predicates by hand.  We recommend that you use the ':key'
+argument instead of ':lessp' unless a suitable ordering predicate is
+already available.  This can also be used for multi-key sorting:
+
+    (sort seq :key (lambda (x) (list (age x) (size x) (cost x))))
+
+sorts by the return value of 'age', then by 'size', then by 'cost'.
+
+The old signature, '(sort SEQ PREDICATE)', can still be used and sorts
+its input in-place as before.
+
+** New API for 'derived-mode-p' and control of the graph of major modes.
+
+*** 'derived-mode-p' now takes the list of modes as a single argument.
+The same holds for 'provided-mode-derived-p'.
+The old calling convention where multiple modes are passed as
+separate arguments is deprecated.
+
+*** New functions to access the graph of major modes.
+While 'define-derived-mode' still only supports single inheritance,
+modes can declare additional parents (for tests like 'derived-mode-p')
+with 'derived-mode-add-parents'.
+Accessing the 'derived-mode-parent' property directly is now
+deprecated in favor of the new functions 'derived-mode-set-parent'
+and 'derived-mode-all-parents'.
+
++++
+** Drag-and-drop functions can now be called once for compound drops.
+It is now possible for drag-and-drop handler functions to respond to
+drops incorporating more than one URL.  Functions capable of this must
+set their 'dnd-multiple-handler' symbol properties to a non-nil value.
+See the Info node "(elisp) Drag and Drop".
+
+Incident to this change, the function 'dnd-handle-one-url' has been
+made obsolete, for it cannot take these new handlers into account.
+
+** New function 're-disassemble' to see the innards of a regexp.
+If you compiled with '--enable-checking', you can use this to help debug
+either your regexp performance problems or the regexp engine.
+
++++
+** XLFDs are no longer restricted to 255 characters.
+'font-xlfd-name' now returns an XLFD even if it is greater than 255
+characters in length, provided that the LONG_XLFDs argument is true.
+
+Other features in Emacs which employ XLFDs have been modified to
+produce and understand XLFDs larger than 255 characters.
+
+** 'defadvice' is marked as obsolete.
+See the "(elisp) Porting Old Advice" Info node for help converting
+them to use 'advice-add' or 'define-advice' instead.
+
+** 'cl-old-struct-compat-mode' is marked as obsolete.
+You may need to recompile our code if it was compiled with Emacs < 24.3.
+
++++
+** New macro 'static-if' for conditional evaluation of code.
+This macro hides a form from the evaluator or byte-compiler based on a
+compile-time condition.  This is handy for avoiding byte-compilation
+warnings about code that will never actually run under some
+conditions.
+
++++
+** Desktop notifications are now supported on the Haiku operating system.
+The new function 'haiku-notifications-notify' provides a subset of the
+capabilities of the 'notifications-notify' function in a manner
+analogous to 'w32-notification-notify'.
+
+** New variable 'haiku-pass-control-tab-to-system'.
+This sets whether Emacs should pass 'C-TAB' on to the system instead of
+handling it, fixing a problem where window switching would not activate
+if an Emacs frame had focus on the Haiku operation system.
+
++++
+** New value 'if-regular' for the REPLACE argument to 'insert-file-contents'.
+It results in 'insert-file-contents' erasing the buffer instead of
+preserving markers if the file being inserted is not a regular file,
+rather than signaling an error.
+
++++
+** New variable 'current-key-remap-sequence'.
+It is bound to the key sequence that caused a call to a function bound
+within 'function-key-map' or 'input-decode-map' around those calls.
+
++++
+** The function 'key-translate' can now remove translations.
+If the second argument TO is nil, the existing key translation is
+removed.
+
++++
+** New variables describing the names of built in programs.
+The new variables 'ctags-program-name', 'ebrowse-program-name',
+'etags-program-name', 'hexl-program-name', 'emacsclient-program-name'
+'movemail-program-name', and 'rcs2log-program-name' should be used
+instead of "ctags", "ebrowse", "etags", "hexl", "emacsclient", and
+"rcs2log", when starting one of these built in programs in a
+subprocess.
+
++++
+** New variable 'case-symbols-as-words' affects case operations for symbols.
+If non-nil, then case operations such as 'upcase-initials' or
+'replace-match' (with nil FIXEDCASE) will treat the entire symbol name
+as a single word.  This is useful for programming languages and styles
+where only the first letter of a symbol's name is ever capitalized.
+The default value of this variable is nil.
+
++++
+** 'x-popup-menu' now understands touch screen events.
+When a 'touchscreen-begin' or 'touchscreen-end' event is passed as the
+POSITION argument, it will behave as if that event was a mouse event.
+
++++
+** New functions for handling touch screen events.
+The new functions 'touch-screen-track-tap' and
+'touch-screen-track-drag' handle tracking common touch screen gestures
+from within a command.
+
+** New user option 'safe-local-variable-directories'.
+This user option names directories in which Emacs will treat all
+directory-local variables as safe.
+
++++
+** New parameter to 'touchscreen-end' events.
+CANCEL non-nil establishes that the touch sequence has been
+intercepted by programs such as window managers and should be ignored
+with Emacs.
+
+** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
+
++++
+** New variable 'secondary-tool-bar-map'.
+If non-nil, this variable contains a keymap of menu items that are
+displayed along tool bar items inside 'tool-bar-map'.
+
+** New variable 'completion-lazy-hilit'.
+Lisp programs that present completion candidates may bind this
+variable non-nil around calls to functions such as
+'completion-all-completions'.  This tells the underlying completion
+styles to skip eager fontification of completion candidates, which
+improves performance.  Such a Lisp program can then use the
+'completion-lazy-hilit' function to fontify candidates just in time.
+
+---
+** New function 'completion-table-with-metadata'.
+This function returns a completion table with additional metadata.
+
+** New Xref generic functions for recording and restoring context.
+Xref backends can now implement the generic function
+'xref-backend-context' to change how Xref records the context used for
+fetching cross-references when bookmarking Xref results for later use.
+In addition, the new generic function 'xref-backend-restore' lets
+backends change how Xref then restores this context.
+
+** New primitive 'buffer-last-name'.
+It returns the name of a buffer before the last time it was renamed or
+killed.
+
+** New primitive 'marker-last-position'.
+It returns the last position of a marker in its buffer even if that
+buffer has been killed.  ('marker-position' would return nil in that
+case.)
+
+** Functions and variables to transpose sexps
+
++++
+*** New helper variable 'transpose-sexps-function'.
+Emacs now can set this variable to customize the behavior of the
+'transpose-sexps' function.
+
++++
+*** New function 'transpose-sexps-default-function'.
+The previous implementation is moved into its own function, to be
+bound by 'transpose-sexps-function'.
+
+*** New function 'treesit-transpose-sexps'.
+Tree-sitter now unconditionally sets 'transpose-sexps-function' for all
+tree-sitter enabled modes.  This functionality utilizes the new
+'transpose-sexps-function'.
+
+** Functions and variables to move by program statements
+
+*** New variable 'forward-sentence-function'.
+Major modes can now set this variable to customize the behavior of the
+'forward-sentence' command.
+
+*** New function 'forward-sentence-default-function'.
+The previous implementation of 'forward-sentence' is moved into its
+own function, to be bound by 'forward-sentence-function'.
+
+*** New function 'treesit-forward-sentence'.
+All tree-sitter enabled modes that define 'sentence' in
+'treesit-thing-settings' now set 'forward-sentence-function' to call
+'treesit-forward-sentence'.
+
+** Functions and variables to move by program sexps
+
+*** New function 'treesit-forward-sexp'.
+Tree-sitter conditionally sets 'forward-sexp-function' for major modes
+that have defined 'sexp' in 'treesit-thing-settings' to enable
+sexp-related motion commands.
+
++++
+** Returned strings are never docstrings.
+Functions and macros whose bodies consist of a single string literal now
+only return that string; it is not used as a docstring.  Example:
+
+    (defun sing-a-song ()
+      "Sing a song.")
+
+The above function returns the string '"Sing a song."' but has no
+docstring.  Previously, that string was used as both a docstring and
+return value, which was never what the programmer wanted.  If you want
+the string to be a docstring, add an explicit return value.
+
+This change applies to 'defun', 'defsubst', 'defmacro' and 'lambda'
+forms; other defining forms such as 'cl-defun' already worked this way.
+
+** New or changed byte-compilation warnings
+
+---
+*** Warn about missing 'lexical-binding' directive.
+The compiler now warns if an Elisp file lacks the standard
+'-*- lexical-binding: ... -*-' cookie on the first line.
+This line typically looks something like
+
+    ;;; My little pony mode  -*- lexical-binding: t -*-
+
+It is needed to inform the compiler about which dialect of ELisp
+your code is using: the modern dialect with lexical binding or
+the old dialect with only dynamic binding.
+
+Lexical binding avoids some name conflicts and allows the compiler to
+detect more mistakes and generate more efficient code, so it is
+recommended.  For how to adapt your code to lexical binding, see the
+manual section "(elisp) Converting to Lexical Binding".
+
+If your code cannot be converted to lexical binding, you can insert
+the line
+
+    ;;; -*- lexical-binding: nil -*-
+
+first in the file to declare that it uses the old dialect.
+
+---
+*** Warn about empty bodies for more special forms and macros.
+The compiler now warns about an empty body argument to 'when',
+'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
+the existing warnings for 'let' and 'let*'.  Example:
+
+    (when (> x 2))
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'empty-body'.
+
+---
+*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
+The compiler now warns about quoted condition (error) names
+in 'condition-case' and 'ignore-error'.  Example:
+
+    (condition-case nil
+        (/ x y)
+      ('arith-error "division by zero"))
+
+Quoting them adds the error name 'quote' to those handled or ignored
+respectively, which was probably not intended.
+
+---
+*** Warn about comparison with literal constants without defined identity.
+The compiler now warns about comparisons by identity with a literal
+string, cons, vector, record, function, large integer or float as this
+may not match any value at all.  Example:
+
+    (eq x "hello")
+
+Only literals for symbols and small integers (fixnums), including
+characters, are guaranteed to have a consistent (unique) identity.
+This warning applies to 'eq', 'eql', 'memq', 'memql', 'assq', 'rassq',
+'remq' and 'delq'.
+
+To compare by (structural) value, use 'equal', 'member', 'assoc',
+'rassoc', 'remove' or 'delete' instead.  Floats and bignums can also
+be compared using 'eql', '=' and 'memql'.  Function literals cannot be
+compared reliably at all.
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
+
+---
+*** Warn about 'condition-case' without handlers.
+The compiler now warns when the 'condition-case' form is used without
+any actual handlers, as in
+
+    (condition-case nil (read buffer))
+
+because it has no effect other than the execution of the body form.
+In particular, no errors are caught or suppressed.  If the intention
+was to catch all errors, add an explicit handler for 'error', or use
+'ignore-error' or 'ignore-errors'.
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
+
+---
+*** Warn about 'unwind-protect' without unwind forms.
+The compiler now warns when the 'unwind-protect' form is used without
+any unwind forms, as in
+
+    (unwind-protect (read buffer))
+
+because the behavior is identical to that of the argument; there is
+no protection of any kind.  Perhaps the intended unwind forms have
+been misplaced or forgotten, or the use of 'unwind-protect' could be
+simplified away.
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
+
+---
+*** Warn about useless trailing 'cond' clauses.
+The compiler now warns when a 'cond' form contains clauses following a
+default (unconditional) clause.  Example:
+
+    (cond ((= x 0) (say "none"))
+          (t (say "some"))
+          (say "goodbye"))
+
+Such a clause will never be executed but is likely to be a mistake,
+perhaps due to misplaced brackets.
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
+
+---
+*** Warn about mutation of constant values.
+The compiler now warns about code that modifies program constants in
+some obvious cases.  Examples:
+
+    (setcar '(1 2) 7)
+    (aset [3 4] 0 8)
+    (aset "abc" 1 ?d)
+
+Such code may have unpredictable behavior because the constants are
+part of the program, not data structures generated afresh during
+execution, and the compiler does not expect them to change.
+
+To avoid the warning, operate on an object created by the program
+(maybe a copy of the constant), or use a non-destructive operation
+instead.
+
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'mutate-constant'.
+
+---
+*** Warn about more ignored function return values.
+The compiler now warns when the return value from certain functions is
+implicitly ignored.  Example:
+
+    (progn (nreverse my-list) my-list)
+
+will elicit a warning because it is usually pointless to call
+'nreverse' on a list without using the returned value.
+
+To silence the warning, make use of the value in some way, such as
+assigning it to a variable.  You can also wrap the function call in
+'(ignore ...)', or use 'with-suppressed-warnings' with the warning
+name 'ignored-return-value'.
+
+The warning will only be issued for calls to functions declared
+'important-return-value' or 'side-effect-free' (but not 'error-free').
+
+---
+*** Warn about docstrings that contain control characters.
+The compiler now warns about docstrings with control characters other
+than newline and tab.  This is often a result of improper escaping.
+Example:
+
+    (defun my-fun ()
+      "Uses c:\remote\dir\files and the key \C-x."
+      ...)
+
+where the docstring contains the four control characters 'CR', 'DEL',
+'FF' and 'C-x'.
+
+The warning name is 'docstrings-control-chars'.
+
+---
+*** The warning about wide docstrings can now be disabled separately.
+Its warning name is 'docstrings-wide'.
+
+---
+** New user option 'native-comp-async-warnings-errors-kind'.
+It allows control of what kinds of warnings and errors from asynchronous
+native compilation are reported to the parent Emacs process.  The
+default is to report all errors and only important warnings.  If you
+were used to customizing 'native-comp-async-report-warnings-errors' to
+nil or 'silent', we suggest that you now leave it at its default value,
+and see if you get only warnings that matter.
+
+** Function 'declare' forms
+
++++
+*** New 'ftype' function declaration.
+The declaration '(ftype TYPE)' specifies the type of a function.
+Example:
+
+    (defun hello (x y)
+      (declare (ftype (function (integer boolean) string)))
+      ...)
+
+specifies that the function takes two arguments, an integer and a
+boolean, and returns a string.  If the compilation happens with
+'compilation-safety' set to zero, this information can be used by the
+native compiler to produce better code, but specifying an incorrect type
+may lead to Emacs crashing.  See the Info node "(elisp) Declare Form"
+for further information.
+
++++
+*** New 'important-return-value' function declaration and property.
+The declaration '(important-return-value t)' sets the
+'important-return-value' property which indicates that the function
+return value should probably not be thrown away implicitly.
+
+** Bytecode is now always loaded eagerly.
+Bytecode compiled with older Emacs versions for lazy loading using
+'byte-compile-dynamic' is now loaded all at once.
+As a consequence, 'fetch-bytecode' has no use, does nothing, and is
+now obsolete.  The variable 'byte-compile-dynamic' has no effect any
+more; compilation will always yield bytecode for eager loading.
+
++++
+** New functions 'file-user-uid' and 'file-group-gid'.
+These functions are like 'user-uid' and 'group-gid', respectively, but
+are aware of file name handlers, so they will return the remote UID or
+GID for remote files (or -1 if the connection has no associated user).
+
++++
+** New function 'file-name-completion-annotation'.
+This function takes a file name and returns a string with details
+about that file, which 'read-file-name' uses as completion annotations
+for completion candidates.  File name handlers can modify the behavior
+of this function.
+
++++
+** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
+Previously, 'fset', 'defalias' and 'defvaralias' could be made to
+build circular function and variable indirection chains as in
+
+    (defalias 'able 'baker)
+    (defalias 'baker 'able)
+
+but trying to use them would sometimes make Emacs hang.  Now, an attempt
+to create such a loop results in an error.
+
+Since circular alias chains now cannot occur, 'function-alias-p',
+'indirect-function' and 'indirect-variable' will never signal an error.
+Their 'noerror' arguments have no effect and are therefore obsolete.
+
++++
+** 'treesit-font-lock-rules' now accepts additional global keywords.
+When supplied with ':default-language LANGUAGE', rules after it will
+default to use 'LANGUAGE'.
+
+---
+** New optional argument to 'modify-dir-local-variable'.
+A 5th argument, optional, has been added to
+'modify-dir-local-variable'.  It can be used to specify which
+dir-locals file to modify.
+
+** Connection local variables
+
++++
+*** New macros 'connection-local-p' and 'connection-local-value'.
+The former macro returns non-nil if a variable has a connection-local
+binding.  The latter macro returns the connection-local value of a
+variable if any, or its current value.
+
+** Hash tables
+
++++
+*** ':rehash-size' and ':rehash-threshold' args no longer have any effect.
+These keyword arguments are now ignored by 'make-hash-table'.  Emacs
+manages the memory for all hash table objects in the same way.
+The functions 'hash-table-rehash-size' and 'hash-table-rehash-threshold'
+remain for compatibility but now always return the old default values.
+
++++
+*** The printed representation has been shrunk and simplified.
+The 'test' parameter is omitted if it is 'eql' (the default), as is
+'data' if empty.  'rehash-size', 'rehash-threshold' and 'size' are
+always omitted, and ignored if present when the object is read back in.
+
+** Obarrays
+
++++
+*** New obarray type.
+Obarrays are now represented by an opaque type instead of using vectors.
+They are created by 'obarray-make' and manage their internal storage
+automatically, which means that the size parameter to 'obarray-make' can
+safely be omitted.  That is, they do not become slower as they fill up.
+
+The old vector representation is still accepted by functions operating
+on obarrays, but 'obarrayp' only returns t for obarray objects.
+'type-of' now returns 'obarray' for obarray objects.
+
+Old code which (incorrectly) created "obarrays" as Lisp vectors filled
+with something other than 0, as in '(make-vector N nil)', will no longer
+work, and should be rewritten to use 'obarray-make'.  Alternatively, you
+can fill the vector with 0.
+
++++
+*** New function 'obarray-clear' removes all symbols from an obarray.
+
+---
+*** 'obarray-size' and 'obarray-default-size' are now obsolete.
+They pertained to the internal storage size which is now irrelevant.
+
++++
+** 'treesit-install-language-grammar' can handle local directory instead of URL.
+It is now possible to pass a directory of a local repository as URL
+inside 'treesit-language-source-alist', so that calling
+'treesit-install-language-grammar' would avoid cloning the repository.
+It may be useful, for example, for the purposes of bisecting a
+treesitter grammar.
+
++++
+** New buffer-local variable 'tabulated-list-groups'.
+It controls display and separate sorting of groups of entries.
+
++++
+** New variable 'revert-buffer-restore-functions'.
+It helps to preserve various states after reverting the buffer.
+
+---
+** New text property 'context-menu-functions'.
+Like the variable with the same name, it adds menus from the list that
+is the value of the property to context menus shown when clicking on the
+text which as this property.
+
+---
+** Detecting the end of an iteration of a keyboard macro.
+'read-event', 'read-char', and 'read-char-exclusive' no longer return -1
+when called at the end of an iteration of the execution of a keyboard
+macro.  Instead, they will transparently continue reading available input
+(e.g., from the keyboard).  If you need to detect the end of a macro
+iteration, check the following condition before calling one of the
+aforementioned functions:
+
+    (and (arrayp executing-kbd-macro)
+         (>= executing-kbd-macro-index (length executing-kbd-macro)))
+
++++
+** 'vtable-update-object' updates an existing object with just two arguments.
+It is now possible to update the representation of an object in a vtable
+by calling 'vtable-update-object' with just the vtable and the object as
+arguments.  (Previously the 'old-object' argument was required which, in
+this case, would mean repeating the object in the argument list.)  When
+replacing an object with a different one, passing both the new and old
+objects is still necessary.
+
+** 'vtable-insert-object' can insert "before" or at an index.
+The signature of 'vtable-insert-object' has changed and is now:
+
+    (vtable-insert-object TABLE OBJECT &optional LOCATION BEFORE)
+
+LOCATION corresponds to the old AFTER-OBJECT argument; if BEFORE is
+non-nil, the new object is inserted before the LOCATION object, making
+it possible to insert a new object at the top of the table.  (Before,
+this was not possible.)  In addition, LOCATION can be an integer, a
+(zero-based) index into the table at which the new object is inserted
+(BEFORE is ignored in this case).
+
+** JSON
+
+---
+*** The parser keeps duplicated object keys in alist and plist output.
+A JSON object such as '{"a":1,"a":2}' will now be translated into the
+Lisp values '((a . 1) (a . 2))' or '(:a 1 :a 2)' if alist or plist
+object types are requested.
+
+---
+*** The parser sometimes signals different types of errors.
+It will now signal 'json-utf8-decode-error' for inputs that are not
+correctly UTF-8 encoded.
+
+---
+*** The parser and encoder now accept arbitrarily large integers.
+Previously, they were limited to the range of signed 64-bit integers.
+
+** New tree-sitter functions and variables for defining and using "things"
+
++++
+*** New variable 'treesit-thing-settings'.
+It allows modes to define "things" like 'defun', 'text', 'sexp', and
+'sentence' for navigation commands and tree-traversal functions.
+
++++
+*** New functions for navigating "things".
+There are new navigation functions 'treesit-thing-prev',
+'treesit-thing-next', 'treesit-navigate-thing',
+'treesit-beginning-of-thing', and 'treesit-end-of-thing'.
+
++++
+*** New functions 'treesit-thing-at', 'treesit-thing-at-point'.
+
++++
+*** Tree-traversing functions.
+The functions 'treesit-search-subtree', 'treesit-search-forward',
+'treesit-search-forward-goto', and 'treesit-induce-sparse-tree' now
+accept more kinds of predicates.  Lisp programs can now use thing
+symbols (defined in 'treesit-thing-settings') and any thing definitions
+for the predicate argument.
+
+** Other tree-sitter function and variable changes
+
++++
+*** 'treesit-parser-list' now takes additional optional arguments.
+The additional arguments are LANGUAGE and TAG.  If LANGUAGE is given,
+only return parsers for that language.  If TAG is given, only return
+parsers with that tag.  Note that passing nil as tag doesn't mean return
+all parsers, but rather "all parsers with no tags".
+
++++
+*** New variable 'treesit-primary-parser'.
+This variable should be set by multi-langauge major modes before calling
+'treesit-major-mode-setup', in order for tree-sitter integration
+functionalities to operate correctly.
+
+\f
+* Changes in Emacs 30.1 on Non-Free Operating Systems
+
+** MS-Windows
+
++++
+*** You can now opt out of following the system's Dark mode.
+By default, Emacs on MS-Windows follows the system's Dark mode for its
+title bars' and scroll bars' appearance.  If the new user option
+'w32-follow-system-dark-mode' is customized to the nil value, Emacs
+will disregard the system's Dark mode and will always use the default
+Light mode.
+
+---
+*** You can now use Image-Dired even if 'convert' command is not installed.
+If you don't have GraphicsMagick or ImageMagick installed, and thus the
+'gm convert'/'convert' command is not available, Emacs on MS-Windows
+will now use its own function 'w32image-create-thumbnail' to create
+thumbnail images and show them in the thumbnail buffer.  Unlike with
+using 'convert', this fallback method is synchronous, so Emacs will wait
+until all the thumbnails are created and displayed, before showing them.
+
+---
+*** Emacs on MS-Windows now supports the ':stipple' face attribute.
+
+\f
+----------------------------------------------------------------------
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+\f
+Local variables:
+coding: utf-8
+mode: outline
+mode: emacs-news
+paragraph-separate: "[  \f]"
+end: