Merge from origin/emacs-31

4458f68df1 ; Update exported ChangeLog files and etc/AUTHORS
0968d7e5e2 ; Update acknowledgements for Emacs 31.
d30a86ba2c ; Fill in missing :version and :package-version metadata.
6dedbb722d ; * admin/release-process: Combine two 'make' commands.
e1f465d993 * doc/misc/efaq.texi (New in Emacs 31): New node.
eca43790ac ; * etc/NEWS: Remove temporary +++/--- lines.
8b38548dd5 ; Document native-compile-directory.
8e33b6a059 ; Document C-x <UP> in shell-mode.
61c7285a95 ; Document project-remember-project.
ced4d70ee0 Add "VTE" to list of auto-enabled xterm-mouse-mode terminals
91a630245f ; * lisp/speedbar.el (speedbar-window--close): Doc fix.
0792252594 Handle 'speedbar-buffer' kill when in 'speedbar-window-mo...
951ee70ee3 ; * lisp/simple.el (char-uppercase-p): Fix a typo.

# Conflicts:
#	etc/NEWS
This commit is contained in:
Sean Whitton 2026-08-17 18:42:21 +01:00
commit c1ad9d2720
26 changed files with 995 additions and 838 deletions

View file

@ -1,3 +1,673 @@
2026-08-17 Sean Whitton <spwhitton@spwhitton.name>
* doc/misc/efaq.texi (New in Emacs 31): New node.
2026-08-16 Philip Kaludercic <philipk@posteo.net>
Add "VTE" to list of auto-enabled xterm-mouse-mode terminals
* lisp/term/xterm.el (xterm--auto-xt-mouse-allowed-names): Add
entry to match VTE, GNOME's terminal emulation library.
(Bug#74833)
2026-08-16 Vincenzo Pupillo <v.pupillo@gmail.com>
Handle 'speedbar-buffer' kill when in 'speedbar-window-mode'.
This handles the DFRAME TIMER ERROR reported by Daniel Mendler
(bug#81561). In addition, it eliminates other causes of stale
idle timers.
* lisp/speedbar.el (speedbar-window-mode): Add a 'kill-buffer'
handler. Removed an unnecessary 'speedbar-mode' invocation.
(speedbar-window--close): New optional parameter used by the
'kill-buffer' handler for 'speedbar-buffer'.
(speedbar-set-timer): Make sure that 'speedbar-set-timer' is
called in 'speedbar-buffer', this prevents the creation of stale
idle timers.
(speedbar--speedbar-live-p): Make sure that 'speedbar-buffer' is
still live.
2026-08-15 Eli Zaretskii <eliz@gnu.org>
Fix an infloop during cursor movement
* src/xdisp.c (move_it_vertically_backward): Prevent infloop due
to overlays with embedded newlines at BOB. (Bug#81567)
2026-08-14 Protesilaos <info@protesilaos.com>
vc-dir: Set major mode before popping to the buffer
* lisp/vc/vc-dir.el (vc-dir): Set major mode before popping to
the buffer (bug#81613).
2026-08-14 Sean Whitton <spwhitton@spwhitton.name>
hs-hide-block-behavior: Fix some terminology
* lisp/progmodes/hideshow.el (hs-hide-block-behavior): Use
'after-point' instead of 'after-cursor'.
* doc/emacs/programs.texi (Hideshow):
* etc/NEWS: Update documentation.
2026-08-14 Alan Third <alan@idiocy.org>
Backport: Fix freeze in NS event handling (bug#81510)
* src/nsterm.m (EV_TRAILER): Don't queue event if it's of kind
'NO_EVENT'.
2026-08-14 Stéphane Marks <shipmints@gmail.com>
Fix Fns_block_system_sleep to respect activity_id lifetime (bug#81577)
* src/nsfns.m (Fns_block_system_sleep): Move unblock_input after
setting activity_id.
2026-08-12 F. Jason Park <jp@neverwas.me>
Remove assertion in erc-speedbar--dframe-controlled
* lisp/erc/erc-speedbar.el (erc-speedbar--ensure): Remove assertion for
robustness even though it should still pass.
(erc-speedbar--get-timers): Remove unused function.
(erc-speedbar--dframe-controlled): Fix failing assertion related to
changes from bug#81561, namely the negating of the condition in
`dframe-set-timer' that checks whether `dframe-client-functions' is
nonempty.
* test/lisp/erc/erc-scenarios-status-sidebar.el
(erc-scenarios-status-sidebar--nickbar): Inline body of deleted function
`erc-speedbar--get-timers'.
2026-08-12 João Távora <joaotavora@gmail.com>
Eglot: bump version to 1.24.31 and update EGLOT-NEWS
This is a change specific to emacs-31. Don't merge to master.
* lisp/progmodes/eglot.el: (Version): Mark it 1.24.31
* etc/EGLOT-NEWS (1.24.31): Fill in section.
2026-08-12 João Távora <joaotavora@gmail.com>
Flymake: really restore advertised compatibility to Emacs 26
Emacs 26 doesn't have with-supressed-warnings
bug#79930
* lisp/progmodes/flymake.el (flymake-goto-next-error): Use with-no-warnings.
(Version): Bump to 1.4.6
2026-08-12 João Távora <joaotavora@gmail.com>
Eglot: support commas in globs (bug#81425)
* lisp/progmodes/eglot.el (eglot--glob-parse): Tweak.
* test/lisp/progmodes/eglot-tests.el (eglot-test-glob-test): Add
some comma-cases.
2026-08-11 Aaron L. Zeng <azeng@janestreet.com>
Eglot: respect e-stay-out-of when turning off (bug#81593)
* lisp/progmodes/eglot.el (eglot--managed-mode): Respect
`eglot-stay-out-of' during teardown/reconnect.
2026-08-11 Juri Linkov <juri@linkov.net>
Fix Custom keybindings in the documentation
* etc/NEWS:
* doc/emacs/custom.texi (Changing a Variable):
Use more user-friendly representation of the
key sequence 'C-c TAB' as it's displayed in
the Help buffer for 'Custom-goto-first-choice'.
Fix typos in keybindings.
2026-08-09 João Távora <joaotavora@gmail.com>
Eglot: prevent showDocument disruption of sync requests (bug#81538)
This couldn't be reproduced here, but seems nevertheless possible. The
previous (run-at-time 0...) technique for the window/showDocument
handling never really avoided the fact that that timer could kick during
the accept-process-output of jsonrpc-request, thus happening before the
response to the original request. Since the handling evolves a lot of
output to send to the process, it could be interrupted by the 'throw'
that's meant to exit abort 'accept-process-output' (and only that).
This commit should ensure the sequence is always this one.
a1. -> adals/ff-thingy sync client request
b1. <- window/showDocument server request
b2. -> window/showDocument client response (after scheduling 'c')
a2. <- ada/ff-thingy server response
c. -> f-f-no-select, Eglot sends the large didOpen notification
* lisp/progmodes/eglot.el (eglot-handle-request): Maybe use
"post command" once trick.
2026-08-09 Juri Linkov <juri@linkov.net>
* lisp/progmodes/sh-script.el (bash-ts-mode): Fix 'sexp-default' thing.
Handle 'sexp-default' thing in 'treesit-thing-settings'
for "${a}" in addition to "$(a)".
2026-08-09 Martin Rudalics <rudalics@gmx.at>
Fix setting windows' old_buffer in 'set-window-configuration' (Bug#81589)
* src/window.c (struct save_window_data): New slot change_stamp.
(Fset_window_configuration): Restore the old_buffer of a window
from the saved old_buffer only if the change stamps of the frame
and save_window_data are the same (Bug#81589).
(Fcurrent_window_configuration): Store FRAME's current change
stamp in save_window_data.
2026-08-09 Daniel Mendler <mail@daniel-mendler.de>
Fix defcustom type of 'dframe-update-speed'
* lisp/dframe.el (dframe-update-speed): Generalize type from integer to
number and update docstring. (Bug#81560)
2026-08-09 Vincenzo Pupillo <v.pupillo@gmail.com>
Speedbar: no more stale idle timers (bug#81561)
* lisp/dframe.el (dframe-set-timer): Fixed the condition for removing
the timer (the code does not match what is written in the comment).
* lisp/speedbar.el (speedbar-window--close): 'speedbar-set-timer' must
be called from the 'speedbar-buffer'.
2026-08-09 Philip Kaludercic <philipk@posteo.net>
Load all dependencies when isolating a package
* lisp/emacs-lisp/package.el (package-isolate): Replace call to
'package-compute-transaction', which omits already inferred
dependencies, with a manual dependency resolution.
2026-08-09 Martin Rudalics <rudalics@gmx.at>
Have 'frame-deletable-p' check other frame's terminal (Bug#81575)
* lisp/frame.el (frame-deletable-p): Return nil when there's no
other visible or iconified frame on FRAME's terminal (Bug#81575).
2026-08-08 DaKnig <ZannyKnig@disroot.org> (tiny change)
Eglot: Add vala mode support
* lisp/progmodes/eglot.el (lisp/progmodes/eglot.el): Add 'vala-mode'.
(Bug#81543)
2026-08-08 Philip Kaludercic <philipk@posteo.net>
Warn about INFOPATH shadowing package manuals
* doc/emacs/package.texi (Packages): Add footnote. (Bug#81105)
2026-08-07 Martin Rudalics <rudalics@gmx.at>
Handle transposing and rotating of dedicated windows (Bug#81406)
* lisp/window-x.el (transpose-dedicated-windows): New option.
(window-layout-rotate-clockwise)
(window-layout-rotate-anticlockwise)
(window-layout-flip-leftright, window-layout-flip-topdown)
(window-layout-transpose, rotate-windows-back): Say that these
functions may signal an error when they encounter dedicated,
fixed-size or atomic windows.
(rotate-windows): Handle dedicated windows like the other
transpose functions.
(window--transpose): Handle 'transpose-dedicated-windows'.
* doc/lispref/windows.texi (Changing Window Layouts): Describe new
option 'transpose-dedicated-windows'.
* etc/NEWS: Announce new option 'transpose-dedicated-windows'.
2026-08-06 Philip Kaludercic <philipk@posteo.net>
Remove overlays from package menu when performing transaction
* lisp/emacs-lisp/package.el (package-menu--perform-transaction):
Remove all overlays at the beginning of the function. (Bug#81213)
2026-08-05 Philip Kaludercic <philipk@posteo.net>
Avoid installing packages when using 'package-isolate'
* lisp/emacs-lisp/package.el (package-isolate): When translating
full package names into package descriptors, prefer the package
descriptors of already installed packages to those of remote
packages.
2026-08-05 Eshel Yaron <me@eshelyaron.com>
Mitigate arbitrary code execution vulnerability
This mitigates a vulnerability that allowed a specially
crafted file to trigger execution of attacker-controlled
arbitrary Emacs Lisp code immediately when the file is
visited in Emacs (before the file's malicious contents are
even displayed). See demonstration in bug#80574.
* lisp/progmodes/cc-fonts.el (c-compose-keywords-list):
* lisp/vc/vc-hooks.el (vc-find-backend-function):
Nullify 'read-symbol-shorthands' around risky 'intern' calls.
Do not merge to master.
2026-08-05 Stéphane Marks <shipmints@gmail.com>
Fix progress-reporter-echo-area update-text
* lisp/subr.el (progress-reporter-echo-area): Format UPDATE-TEXT
as a string (bug#81514).
2026-08-05 Sean Whitton <spwhitton@spwhitton.name>
VC-Git: Pass --no-optional-locks
* lisp/vc/vc-git.el (vc-git--no-optional-locks): New function.
(vc-git-command, vc-git--call): Use it.
2026-08-05 Sean Whitton <spwhitton@spwhitton.name>
Fix text-property-search-backward skipping one character regions
* lisp/emacs-lisp/text-property-search.el
(text-property-search-backward)
(text-property--find-end-backward): Fix skipping one character
non-matching regions (bug#81539).
* test/lisp/emacs-lisp/text-property-search-tests.el
(text-property-setup): Make one of the propertized regions one
character long to test bug#81539.
(text-property-search-forward-bold-nil)
(text-property-search-forward-nil-nil)
(text-property-search-backward-bold-nil)
(text-property-search-backward-nil-nil)
(text-property-search-backward-prop-match-match-face-nil-nil)
(text-property-search-backward-prop-match-match-face-italic-t)
(text-property-search-backward-prop-match-match-face-italic-nil):
Update tests.
2026-08-05 Binbin Ye <phantom2501@gmail.com>
Fix JSX tag angle-bracket pairing in tsx-ts-mode
* lisp/progmodes/typescript-ts-mode.el (tsx-ts--s-p-query):
Capture 'jsx_self_closing_element' as well.
(tsx-ts--syntax-propertize-captures): For JSX tag elements, give
only the leading '<' and trailing '>' matching-pair syntax and
leave the interior untouched; for 'jsx_text', neutralize
balanced pair characters to punctuation (bug#81460).
* test/lisp/progmodes/typescript-ts-mode-tests.el
(tsx-ts-mode-test-jsx-tag-syntax-propertize): New test.
2026-08-04 Michael Albinus <michael.albinus@gmx.de>
* admin/notes/jargon: Add FUD.
2026-08-04 Spencer Baugh <sbaugh@janestreet.com>
pcm-try-completion: collapse ** into *
* lisp/minibuffer.el (completion-pcm--merge-completions): Only
include one star in the return value (bug#81394).
* test/lisp/minibuffer-tests.el (completion-pcm-test-7): Update
for new behavior.
2026-08-04 Richard Lawrence <rwl@recursewithless.net>
Distinguish UTC vs. UTC+0:00 times in iCalendar library
This fixes a bug discussed on emacs-devel; see the thread at
https://https://lists.gnu.org/archive/html/emacs-devel/2026-07/msg00445.html
The issue was that the library did not distinguish between UTC time and
times that have an offset of 0 but are not in the UTC time zone,
e.g. standard times in Europe/London or Europe/Dublin. This led to test
failures on systems in these time zones. This fix represents true UTC
times by inserting the special value `t' in the zone slot of a decoded
time at parse time (which `encode-time' already handles correctly).
This distinguishes them from decoded times with an offset of 0 seconds.
* lisp/calendar/icalendar-ast.el (icalendar-make-component):
Ensure auto-generated DTSTAMP uses the new representation.
(icalendar-make-node-from-templates): Fix docstring.
* lisp/calendar/icalendar-parser.el (icalendar-read-time)
(icalendar-read-date-time): Read iCalendar UTC times to the new
representation.
(icalendar-print-time): Print the new representation.
(icalendar--decoded-time-p, icalendar--decoded-date-time-p)
(icalendar-date-time-is-utc-p): Check for the new
representation.
(icalendar-date-time): Docstring improvement.
(icalendar-requires-utc-validator): New validator function to
check that property values are in UTC.
(icalendar-completed, icalendar-created, icalendar-dtstamp): Use
it.
* lisp/calendar/icalendar-recur.el
(icalendar-recur-tz-decode-time): Decode to new representation;
explicitly support this.
* lisp/calendar/icalendar-utils.el (icalendar-date-time<)
(icalendar-date-time-simultaneous-p):
* lisp/calendar/diary-icalendar.el
(diary-icalendar-format-time-as-local): Work with the new
representation.
(diary-icalendar-convert-time-via-strategy)
(diary-icalendar-parse-entry): Ensure times decode to new
representation.
* test/lisp/calendar/icalendar-parser-tests.el
(icalendar-parser-test-bad-hyphenated-dates):
* test/lisp/calendar/icalendar-recur-tests.el
(icalendar-test-recur-find-secondly-interval)
(icalendar-test-recur-tz-observance-on): Update tests to use new
representation.
* test/lisp/calendar/icalendar-parser-tests.el
(icalendar-parse-test-utc+0-is-not-utc): New regression test.
* test/lisp/calendar/diary-icalendar-tests.el: Update 'to-utc test.
* test/lisp/calendar/diary-icalendar-resources/import-bug-24199.diary-all:
Update diary representation of UTC times in a recurrence rule.
2026-08-04 Eli Zaretskii <eliz@gnu.org>
Fix documentation of ':set' function in 'defcustom'
* etc/NEWS: Document the change in signature of ':set'.
* lisp/custom.el (defcustom): Doc fix. (Bug#81547)
2026-08-03 Aaron L. Zeng <azeng@janestreet.com>
Fix vc-hg-diff arguments to diff vs empty tree
* lisp/vc/vc-hg.el (vc-hg-diff): Fix behavior according to
backend function specification (bug#81527).
* test/lisp/vc/vc-hg-tests.el (vc-hg-diff-revision-arguments):
New test.
2026-08-02 João Távora <joaotavora@gmail.com>
Eglot: fix use of progress reporters again (bug#81514)
There were still some cases of errors reported with the new stricter
progress reporters.
* lisp/progmodes/eglot.el (eglot--on-shutdown): Cleanup with
progress-reporter-done.
(eglot-handle-notification): Always pass percentage to
progress-reporter-update.
2026-08-01 Eli Zaretskii <eliz@gnu.org>
Fix display of ambiguous-width CJK characters in GUI sessions
* lisp/international/characters.el (use-cjk-char-width-table): Fix
to work correctly in GUI sessions on Windows. (Bug#81489)
2026-08-01 João Távora <joaotavora@gmail.com>
Eglot: do more orthodox use of progress reporters (bug#81514)
The progress reporters on recent Emacs has backward incompatible
changes, but our use of them wasn't too correct either.
* lisp/progmodes/eglot.el (eglot-handle-notification): Call
progress-reporter-done.
2026-07-31 Philip Kaludercic <philipk@posteo.net>
Summarize changes when upgrading packages
* lisp/emacs-lisp/package.el (package-upgrade-all): Print a
final message listing the completed and rejected package
upgrades, as the messages printed by 'package-install' get lost
in the Messages buffer. (Bug#81112)
2026-07-31 Philip Kaludercic <philipk@posteo.net>
Prevent 'package-menu--mark-upgrades-1' from blocking
* lisp/emacs-lisp/package.el (package-menu--mark-upgrades-1):
If 'package-retention-policy' applies, still move forward a line
so that the loop can consider the next package. (Bug#81373)
2026-07-31 Sean Whitton <spwhitton@spwhitton.name>
Export GIT_OPTIONAL_LOCKS=0 for "git status" invocations (bug#80903)
* lisp/vc/vc-git.el (vc-git--env-vars): New function.
(vc-git-command, vc-git--call): Use it (bug#80903).
2026-07-31 Charles A. Roelli <charles@aurox.ch>
* lisp/vc/vc.el (vc-delete-file): Don't backup backup files.
2026-07-31 Donjuanplatinum <donplat@barrensea.org> (tiny change)
Restore current buffer after clone-indirect-buffer-hook errors
* src/buffer.c (Fmake_indirect_buffer): Replace
set_buffer_internal_1 with specpdl unwind in the clone path
(bug#81504).
2026-07-31 Sean Whitton <spwhitton@spwhitton.name>
Assign some calendar & icalendar files to packages
* lisp/calendar/diary-icalendar.el:
* lisp/calendar/icalendar-ast.el:
* lisp/calendar/icalendar-macs.el:
* lisp/calendar/icalendar-mode.el:
* lisp/calendar/icalendar-parser.el:
* lisp/calendar/icalendar-recur.el:
* lisp/calendar/icalendar-shortdoc.el:
* lisp/calendar/icalendar-utils.el: Assign to 'icalendar'
package.
* lisp/calendar/diary-lib.el: Assign to 'calendar' package.
2026-07-30 Aaron L. Zeng <azeng@janestreet.com>
Do not asynchronously prompt to save buffers after vc-checkin
* lisp/vc/vc-dispatcher.el (vc-set-async-update): Bind
`non-essential' around background `vc-dir-refresh'.
2026-07-30 Stephen Berman <stephen.berman@gmx.net>
File name with newline: require 'ls' --dired switch
File name with newline: require 'ls' --dired switch
Previously the handling of newlines in file names tested for the
-b switch, but on systems such as Solaris 'ls' takes -b but not
--dired and the latter is needed to set the correct bounds of file
names containing a newline.
* lisp/dired.el (dired--check-use-ls-dired): New function.
(dired-internal-noselect, dired-insert-directory)
(dired--set-auto-toggle-b-switch): Use it.
(dired--remove-b-switch): Delete.
* test/lisp/dired-tests.el (dired-test-filename-with-newline-1)
(dired-test-filename-with-newline-2): Use the new function to skip
tests when 'ls' does not support the --dired switch (bug#81481).
2026-07-30 Eli Zaretskii <eliz@gnu.org>
Fix starting local processes in the MS-Windows build
* src/w32proc.c (sys_spawnve): Use default value of
'exec-suffixes', as we are starting a local process.
2026-07-30 Eli Zaretskii <eliz@gnu.org>
Avoid errors in 'dabbrev-expand'
* lisp/dabbrev.el (dabbrev-expand): Fix use of
'dabbrev--last-buffer-found': it could be a killed buffer.
(Bug#81452)
(cherry picked from commit 0e8fbd63e96b9b775d386b19f2a64d89d91cc6e3)
2026-07-30 Michael Albinus <michael.albinus@gmx.de>
Backport: Use default exec-suffixes when needed (bug#81280, bug#81517)
* lisp/files.el (executable-find): Use (default-value 'exec-suffixes).
* src/callproc.c (Qexec_suffixes): Declare.
(call_process):
* src/process.c (Fmake_process): Use Fdefault_value (Qexec_suffixes).
* test/lisp/files-x-tests.el (files-x-test--variables6):
New defconst.
(files-x-test-connection-local-special-variables): New test.
(cherry picked from commit dcdd76f89e77421bf8be4ae0c2324b3029a23f1a)
2026-07-29 Richard Lawrence <rwl@recursewithless.net>
Fix attendee lookup in gnus-icalendar
* lisp/gnus/gnus-icalendar.el
(gnus-icalendar-event--find-attendee): Restore previous behavior
for matching attendees to user variables (bug#81408).
2026-07-29 Sean Whitton <spwhitton@spwhitton.name>
vc-working-revision: Don't bind default-directory to a relative name
* lisp/vc/vc-hooks.el (vc-working-revision): Don't bind
default-directory to a relative file name.
2026-07-28 Stephen Berman <stephen.berman@gmx.net>
Fix Dired problem with nonexistent directory (bug#81509)
* lisp/dired.el (dired, dired-other-window, dired-other-frame)
(dired-other-tab): If the directory that the Dired command tries
to visit does not exist, ensure the buffer that was current when
the command was invoked remains the current buffer.
2026-07-27 Michael Albinus <michael.albinus@gmx.de>
Fix emacs-eglot test on emba
* test/infra/Dockerfile.emba (emacs-eglot): Do not install
typescript via npm.
2026-07-27 Sean Whitton <spwhitton@spwhitton.name>
Fix C-x v w a/A on the repository root
With regard to vc--fileset-by-state, all the cond* clauses after
the '(atom next)' clause were essentially dead code.
With regard to vc-dir-status-files, when operating on the
repository root we would pass "./" to vc-dir-status-files, which
isn't a sensible value for 'default-directory'.
* lisp/vc/vc.el (vc-dir-status-files): Call expand-file-name on
DIRECTORY before using it.
(vc--fileset-by-state): Fix the control flow.
* test/lisp/vc/vc-tests/vc-tests.el
(vc-test--apply-to-other-working-tree): Pass the repository root
as the fileset instead of the five file names in order to test
vc--fileset-by-state's control flow.
2026-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
(sh-font-lock-paren): Fix bug#81192
Since commit 4e1fe56e316c turned several new chars into punctuations,
they're not skipped by (skip-syntax-backward "w_") any more,
so we need to skip them more explicitly instead when trying to
skip a case pattern.
* lisp/progmodes/sh-script.el (sh-font-lock-paren): Skip more
punctuation chars.
* test/lisp/progmodes/sh-script-resources/sh-indents.erts
(sh-indents-case-pattern-bug#81192): New test.
2026-07-24 Michael Albinus <michael.albinus@gmx.de>
Backport: ; Fix last change, again
(cherry picked from commit b1a5151dbbe1579c77fbc61f11f39ae3f709cf23)
2026-07-24 Michael Albinus <michael.albinus@gmx.de>
Backport: ; Fix last change
* lisp/net/tramp.el (with-tramp-progress-reporter):
Deactivate `progress-reporter-echo-area' when calling
`progress-reporter-done'. We call `tramp-message' instead.
* lisp/net/tramp-fuse.el (tramp-fuse-handle-insert-directory):
* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory):
Use progress reporter.
(cherry picked from commit e4df903f6b5946fde7ecb3619c2b7ef8bc2331ce)
2026-07-24 Stéphane Marks <shipmints@gmail.com>
Backport: Fix 'with-tramp-progress-reporter' (bug#81455)
Clear stateful progress reporters like 'system-taskbar'.
* lisp/net/tramp.el (with-tramp-progress-reporter): Call
'progress-reporter-done' in 'unwind-protect'.
(cherry picked from commit 1f9a492aeace12c0e49cf8ac3e0b09fb8a82ddb3)
2026-07-24 Yuan Fu <casouri@gmail.com>
Fix treesit_cursor_helper_1 for zero-width nodes (bug#81436)
* lisp/treesit.el (treesit--some): Add edebug declare.
* src/treesit.c (treesit_cursor_helper_1): Don't use
ts_tree_cursor_goto_first_child_for_byte for zero-width nodes.
2026-07-24 Yuan Fu <casouri@gmail.com>
Update tree-sitter manual for embed level
* doc/lispref/parsing.texi (Using Parser): Mention embed level.
(Multiple Languages): Explain embed level, and local vs
non-local parsers.
2026-07-23 Sean Whitton <spwhitton@spwhitton.name>
vc--count-outgoing: Set process query on exit flag to nil
* lisp/vc/vc.el (vc--count-outgoing): Set process query on exit
flag to nil (bug#81454). Do not merge to master.
2026-07-23 Sean Whitton <spwhitton@spwhitton.name>
Fix discarding user edits after async commit completes (bug#81453)
* lisp/vc/vc-dispatcher.el (vc-resynch-buffer): New
'unless-modified' value for NOQUERY parameter.
(vc-finish-logentry): Pass it in the case of an asynchronous
commit (bug#81453).
2026-07-23 Sean Whitton <spwhitton@spwhitton.name>
Bump Emacs version to 31.0.91
* README:
* configure.ac:
* exec/configure.ac:
* java/AndroidManifest.xml.in (Version-code):
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 31.0.91.
2026-07-22 Sean Whitton <spwhitton@spwhitton.name>
VC-Annotate menu: Fix inserting "Span NN.NN days" entries
@ -67200,7 +67870,7 @@
This file records repository revisions from
commit 1cda0967b4d3c815fc610794ad6a8fc2b913a3c5 (exclusive) to
commit 1bd56ff93273f754e72e9a50cbefae3b218d2260 (inclusive).
commit 0968d7e5e268a8b698730addb22bc84fe88782d5 (inclusive).
See ChangeLog.4 for earlier changes.
;; Local Variables:

View file

@ -105,8 +105,7 @@ with defcustoms that use :package-version have the appropriate
add-to-list that determines the correspondence between package versions
and Emacs versions. Any changes you make in :version etc. should be
tested by running "M-x customize-changed" after regenerating cus-load.el
(run "make custom-deps" in the lisp/ directory) and loaddefs.el (run
"make autoloads-force").
and loaddefs.el (run "make -C lisp custom-deps autoloads-force").
** Manuals
Check for node names using problematic characters:
@ -118,7 +117,7 @@ Lisp files), and add the relevant authors to the Acknowledgments in
doc/emacs/ack.texi and emacs.texi. To find new files, you could run a
command such as this:
$ git diff --name-status emacs-NN emacs-XX | grep -E "^A"
$ git diff --name-status --diff-filter=A emacs-NN emacs-XX
where emacs-NN is the previous Emacs release branch, and emacs-XX is the
new one.

View file

@ -596,6 +596,11 @@ for the Transport Layer Security protocol.
Arne J@o{}rgensen wrote @file{latexenc.el}, a package to
automatically guess the correct coding system in @LaTeX{} files.
@item
Rahul Martim Juliato and St@'ephane Marks wrote
@file{markdown-ts-mode.el} and @file{markdown-ts-mode-x.el}, a major
mode for editing Markdown files.
@item
Alexandre Julliard wrote @file{vc-git.el}, support for the Git version
control system.
@ -711,6 +716,10 @@ chart that can be printed to a PostScript printer; and
@file{whitespace.el}, a package that detects and cleans up excess
whitespace in a file (building on an earlier version by Rajesh Vaidheeswarran).
@item
Richard Lawrence wrote @file{diary-icalendar.el}, a library to handle
iCalendar (RFC 5545) data.
@item
Frederic Lepied wrote @file{expand.el}, which uses the abbrev
mechanism for inserting programming constructs.
@ -826,6 +835,11 @@ Bill Mann wrote @file{perl-mode.el}, a mode for editing Perl code.
Brian Marick and Daniel LaLiberte wrote @file{hideif.el}, support for
hiding selected code within C @code{#ifdef} clauses.
@item
St@'ephane Marks wrote @file{system-sleep.el} and
@file{system-taskbar.el}, libraries to interface with operating system
sleep/wake and taskbar facilities.
@item
Simon Marshall wrote @file{regexp-opt.el}, which generates a regular
expression from a list of strings; and the fast-lock and lazy-lock
@ -872,6 +886,10 @@ buffer listings; @file{ehelp.el}, bindings for browsing help screens;
and @file{rfc822.el}, a parser for E-mail addresses in the format
used in mail messages and news articles (Internet RFC 822 and its successors).
@item
Bret Mogilefsky, Christian Vogler, Juergen Hoetzel, Reuben Thomas and
wrote @file{lua-mode.el}, an Emacs mode for editing Lua programs.
@item
Gerd M@"ollmann was the Emacs maintainer from the beginning of Emacs 21
development until the release of 21.1. He wrote the new display
@ -1059,8 +1077,9 @@ Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode
for editing Fortran code.
@item
Vincenzo Pupillo wrote @code{php-ts-mode.el}, a major mode for editing
PHP programs.
Vincenzo Pupillo wrote @file{mhtml-ts-mode.el}, a major mode for editing
HTML files, and @file{php-ts-mode.el}, a major mode for editing PHP
programs.
@item
Ashwin Ram wrote @file{refer.el}, commands to look up references in
@ -1472,6 +1491,10 @@ Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
linker scripts, and contributed subword handling and style
guessing in CC mode.
@item
Eshel Yaron wrote @file{elisp-scope.el}, an implementation of semantic
analysis for Emacs Lisp symbols.
@item
Jonathan Yavner wrote @file{testcover.el}, a package for keeping track
of the testing status of Emacs Lisp code; @file{unsafep.el} to determine

View file

@ -1507,79 +1507,81 @@ Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris Hanson, Jesper
Harder, Alexandru Harsanyi, K. Shane Hartman, John Heidemann, Jon
K. Hellan, Magnus Henoch, Markus Heritsch, Dirk Herrmann, Karl Heuer,
Manabu Higashida, Joe Hildebrand, Konrad Hinsen, Torsten Hilbrich,
Anders Holst, Jeffrey C. Honig, J@"urgen H@"otzel, Tassilo Horn, Kurt
Hornik, Khaled Hosny, Tom Houlder, Joakim Hove, Denis Howe, Lars
Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Philip Jackson, Martyn
Jago, Pavel Janik, Paul Jarc, Ulf Jasper, Thorsten Jolitz, Michael
K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson, Alexandre
Julliard, Arne J@o{}rgensen, Jambunathan K, Tomoji Kagatani, Brewster
Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
Howard Kaye, Michael Kifer, Richard King, Wilhelm Kirschbaum, Peter
Kleiweg, Karel Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry
K. Kolodney, David Howard Kaye, Michael Kifer, Richard King, Peter
Kleiweg, M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian
Kremer, Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David K@aa{}gedal,
Daniel LaLiberte, Karl Landstrom, Mario Lang, Aaron Larson, James
R. Larus, Gemini Lasswell, Vinicius Jose Latorre, Werner Lemberg,
Frederic Lepied, Peter Liljenberg, Christian Limpach, Lars Lindberg,
Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov, Francis
Litterio, Sergey Litvinov, Leo Liu, Emilio C. Lopes, Martin Lorentzson,
Dave Love, Eric Ludlam, K@'aroly L@H{o}rentey, Sascha L@"udecke, Greg
McGary, Roland McGrath, Michael McNamara, Alan Mackenzie, Christopher
J. Madsen, Neil M. Mager, Arni Magnusson, Artur Malabarba, Ken
Manheimer, Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson,
Charlie Martin, Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus,
Thomas May, Will Mengarini, David Megginson, Jimmy Aguilar Mena, Stefan
Merten, Ben A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell,
Richard Mlynarik, Gerd M@"ollmann, Dani Moncayo, Stefan Monnier, David
Moore, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris, Don
Morrison, John Muhl, Diane Murray, Riccardo Murri, Sen Nagata, Erik
Naggum, Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton,
Thien-Thi Nguyen, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nik@v{s}i@'c,
Jeff Norden, Andrew Norman, Theresa O'Connor, Kentaro Ohkouchi,
Christian Ohler, Kenichi Okada, Alexandre Oliva, Bob Olson, Michael
Olson, Takaaki Ota, Mark Oteiza, Pieter E. J. Pareit, Ross Patterson,
David Pearson, Juan Pechiar, Jeff Peck, Damon Anton Permezel, Tom
Perrine, William M. Perry, Per Persson, Jens Petersen, Nicolas Petton,
Daniel Pfeiffer, Justus Piater, Richard L. Pieri, Fred Pierresteguy,
Fran@,{c}ois Pinard, Daniel Pittman, Christian Plaunt, Alexander
Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i, Michael
D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Jim Radford,
Ken Raeburn, Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly,
Edward M. Reingold, David Reitter, Alex Rezinsky, Rob Riepel, Lara Rios,
Adrian Robert, Nick Roberts, Roland B. Roberts, John Robinson, Denis
B. Roegel, Danny Roozendaal, Sebastian Rose, William Rosenblatt, Markus
Rost, Guillermo J. Rozas, Martin Rudalics, Ivar Rummelhoff, Jason
Rumney, Wolfgang Rupprecht, Benjamin Rutt, Kevin Ryde, Phil Sainty,
James B. Salem, Masahiko Sato, Timo Savola, Jorgen Sch@"afer, Holger
Schauer, William Schelter, Ralph Schleicher, Gregor Schmid, Michael
Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan Schormann, Alex
Schroeder, Stefan Schoef, Rainer Sch@"opf, Raymond Scholz, Eric Schulte,
Andreas Schwab, Randal Schwartz, Oliver Seidel, Daniel Semyonov, Manuel
Serrano, Paul Sexton, Hovav Shacham, Stanislav Shalunov, Marc Shapiro,
Richard Sharman, Olin Shivers, Tibor @v{S}imko, Espen Skoglund, Rick
Sladkey, Lynn Slater, Chris Smith, David Smith, JD Smith, Paul D. Smith,
Wilson Snyder, William Sommerfeld, Simon South, Andre Spiegel, Michael
Staats, Richard M. Stallman, Thomas Steffen, Ulf Stegemann, Reiner
Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson,
Ken Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora, Luc Teirlinck,
Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas, Jim
Thompson, Theodor Thornhill, Toru Tomabechi, Andy Oram, David O'Toole,
Markus Triska, Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda,
Rajesh Vaidheeswarran, Neil W. Van Dyke, Didier Verna, Joakim Verona,
Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John Paul
Wallington, Colin Walters, Barry Warsaw, Christoph Wedler, Ilja Weis,
Zhang Weize, Morten Welinder, Joseph Brian Wells, Rodney Whitby, Sean
Whitton, John Wiegley, Sascha Wilde, Ed Wilkinson, Mike Williams, Roland
Winkler, Bill Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright,
Felix S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Po Lu, Katsumi Yamaoka,
Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto Zimmermann,
Neal Ziring, Teodor Zlatanov, and Detlev Zundel.
Juergen Hoetzel, Anders Holst, Jeffrey C. Honig, J@"urgen H@"otzel,
Tassilo Horn, Kurt Hornik, Khaled Hosny, Tom Houlder, Joakim Hove, Denis
Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Philip Jackson,
Martyn Jago, Pavel Janik, Paul Jarc, Ulf Jasper, Thorsten Jolitz,
Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson, Alexandre
Julliard, Rahul Martim Juliato, Arne J@o{}rgensen, Jambunathan K, Tomoji
Kagatani, Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas,
Ivan Kanis, David Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata,
Taro Kawagishi, Howard Kaye, Michael Kifer, Richard King, Wilhelm
Kirschbaum, Peter Kleiweg, Karel Kl@'i@v{c}, Shuhei Kobayashi, Pavel
Kobyakov, Larry K. Kolodney, David Howard Kaye, Michael Kifer, Richard
King, Peter Kleiweg, M. Koppelman, Koseki Yoshinori, Robert Krawitz,
Sebastian Kremer, Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David
K@aa{}gedal, Daniel LaLiberte, Karl Landstrom, Mario Lang, Aaron Larson,
James R. Larus, Gemini Lasswell, Vinicius Jose Latorre, Richard
Lawrence, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian
Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
Juri Linkov, Francis Litterio, Sergey Litvinov, Leo Liu, Emilio
C. Lopes, Martin Lorentzson, Dave Love, Eric Ludlam, K@'aroly
L@H{o}rentey, Sascha L@"udecke, Greg McGary, Roland McGrath, Michael
McNamara, Alan Mackenzie, Christopher J. Madsen, Neil M. Mager, Arni
Magnusson, Artur Malabarba, Ken Manheimer, Bill Mann, Brian Marick,
St@'ephane Marks, Simon Marshall, Bengt Martensson, Charlie Martin,
Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will
Mengarini, David Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben
A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell, Richard
Mlynarik, Gerd M@"ollmann, Bret Mogilefsky, Dani Moncayo, Stefan
Monnier, David Moore, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn
Morris, Don Morrison, John Muhl, Diane Murray, Riccardo Murri, Sen
Nagata, Erik Naggum, Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann,
Mike Newton, Thien-Thi Nguyen, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje
Nik@v{s}i@'c, Jeff Norden, Andrew Norman, Theresa O'Connor, Kentaro
Ohkouchi, Christian Ohler, Kenichi Okada, Alexandre Oliva, Bob Olson,
Michael Olson, Takaaki Ota, Mark Oteiza, Pieter E. J. Pareit, Ross
Patterson, David Pearson, Juan Pechiar, Jeff Peck, Damon Anton Permezel,
Tom Perrine, William M. Perry, Per Persson, Jens Petersen, Nicolas
Petton, Daniel Pfeiffer, Justus Piater, Richard L. Pieri, Fred
Pierresteguy, Fran@,{c}ois Pinard, Daniel Pittman, Christian Plaunt,
Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i,
Michael D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Jim
Radford, Ken Raeburn, Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul
Reilly, Edward M. Reingold, David Reitter, Alex Rezinsky, Rob Riepel,
Lara Rios, Adrian Robert, Nick Roberts, Roland B. Roberts, John
Robinson, Denis B. Roegel, Danny Roozendaal, Sebastian Rose, William
Rosenblatt, Markus Rost, Guillermo J. Rozas, Martin Rudalics, Ivar
Rummelhoff, Jason Rumney, Wolfgang Rupprecht, Benjamin Rutt, Kevin Ryde,
Phil Sainty, James B. Salem, Masahiko Sato, Timo Savola, Jorgen
Sch@"afer, Holger Schauer, William Schelter, Ralph Schleicher, Gregor
Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan
Schormann, Alex Schroeder, Stefan Schoef, Rainer Sch@"opf, Raymond
Scholz, Eric Schulte, Andreas Schwab, Randal Schwartz, Oliver Seidel,
Daniel Semyonov, Manuel Serrano, Paul Sexton, Hovav Shacham, Stanislav
Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor @v{S}imko,
Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith, David Smith, JD
Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon South,
Andre Spiegel, Michael Staats, Richard M. Stallman, Thomas Steffen, Ulf
Stegemann, Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani,
Peter Stephenson, Ken Stevens, Andy Stewart, Jonathan Stigelman, Martin
Stjernholm, Kim F. Storm, Steve Strassmann, Christopher Suckling, Olaf
Sylvester, Naoto Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora,
Luc Teirlinck, Jean-Philippe Theberge, Jens T.@: Berger Thielemann,
Reuben Thomas, Spencer Thomas, Jim Thompson, Theodor Thornhill, Toru
Tomabechi, Andy Oram, David O'Toole, Markus Triska, Tom Tromey, Eli
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Christian Vogler,
Geoffrey Voelker, Johan Vromans, Inge Wallin, John Paul Wallington,
Colin Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
Morten Welinder, Joseph Brian Wells, Rodney Whitby, Sean Whitton, John
Wiegley, Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix
S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Po Lu, Katsumi Yamaoka,
Masatake Yamato, Eshel Yaron, Jonathan Yavner, Ryan Yeske, Ilya
Zakharevich, Milan Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski,
Andrew Zhilin, Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto
Zimmermann, Neal Ziring, Teodor Zlatanov, and Detlev Zundel.
@end iftex
@node Intro

View file

@ -2388,16 +2388,19 @@ records the list of known projects. It defaults to the file
@subsection Managing the Project List File
@table @kbd
@item M-x project-remember-project
Add the current project to the @code{project-list-file}.
@item M-x project-forget-project
Remove a known project from the @code{project-list-file}.
@end table
@findex project-remember-project
@findex project-forget-project
Normally Emacs automatically adds and removes projects to and from the
@code{project-list-file}, but sometimes you may want to manually edit
the available projects. @kbd{M-x project-forget-project}
prompts you to choose one of the available projects, and then removes
it from the file.
the available projects. @kbd{M-x project-remember-project} remembers
the current project, and @kbd{M-x project-forget-project} prompts you to
choose one of the available projects, and then removes it from the file.
@vindex project-list-exclude
The user option @code{project-list-exclude} may be set to always

View file

@ -1303,6 +1303,12 @@ resubmit them or copy them to the end. Or you can use a
Fetch the next earlier old shell command
(@code{comint-previous-input}).
@findex comint-complete-input-ring
@kindex C-x @key{UP} @r{(Shell mode)}
@item C-x @key{UP}
Complete the current input using shell command history
(@code{comint-complete-input-ring}).
@kindex M-n @r{(Shell mode)}
@findex comint-next-input
@item M-n
@ -1350,6 +1356,12 @@ successively more recent shell commands from the buffer.
@kbd{C-@key{UP}} works like @kbd{M-p}, and @kbd{C-@key{DOWN}} like
@kbd{M-n}.
@kbd{C-x @key{UP}} tries to complete (@pxref{Completion}) your current
input against the history of old shell commands. So, for example, you
could type the first few words of a long and complex shell command you
executed earlier, then invoke this command to have Emacs fill in the
rest of it.
The history search command @kbd{M-r} begins an incremental regular
expression search of previous shell commands. After typing @kbd{M-r},
start typing the desired string or regular expression; the last

View file

@ -871,6 +871,15 @@ invokes the same Emacs executable as the process that called this
function.
@end defun
@defun native-compile-directory directory
This function recursively searches for @file{.el} files in
@var{directory} and any subdirectories thereof, and runs
native-compilation on any that have not already been compiled. To
determine whether a file has already been compiled, it searches for a
corresponding @file{.eln} in the @code{native-comp-eln-load-path}
variable (@pxref{Native-Compilation Variables}).
@end defun
@defun batch-native-compile &optional for-tarball
This function runs native-compilation on files specified on the Emacs
command line in batch mode. It must be used only in a batch execution

View file

@ -848,6 +848,7 @@ in the Emacs development repository (@pxref{Latest version of Emacs}).
@menu
* Origin of the term Emacs::
* Latest version of Emacs::
* New in Emacs 31::
* New in Emacs 30::
* New in Emacs 29::
* New in Emacs 28::
@ -923,6 +924,92 @@ this command a prefix argument to read about which features were new
in older versions.
@node New in Emacs 31
@section What is different about Emacs 31?
@cindex Differences between Emacs 30 and Emacs 31
@cindex Emacs 31, new features in
Here's a selection of changes in Emacs 31 as compared to Emacs 30. The
full list is too long to fit here, but can be read in the Emacs
@file{NEWS} file by typing @kbd{C-h n} inside Emacs.
@itemize
@item
Using the mouse to control Emacs is enabled by default in most
terminals.
@item
New @file{user-lisp/} subdirectory of your Emacs configuration
directory. Lisp files placed here will be automatically compiled and
loaded without additional configuration.
@item
Child frames (used e.g. for completion and tooltips) are now supported
on text frames.
@item
Various improvements to the way the @file{*Completions*} buffer works.
In particular, it can be configured to be displayed immediately and to
be updated dynamically as you type.
@item
Commands to split windows now make better choices between splitting
vertically and splitting horizontally. Whether the frame is landscape
or portrait now has more of an influence.
@item
New built-in facility to hide minor mode lighters:
@code{mode-line-collapse-minor-modes}.
@item
New commands to interactively store buffers and files in registers:
@code{buffer-to-register} and @code{file-to-register}.
@item
You can now bookmark local and remote shell buffers.
@item
SHR slices large images into rows, so scrolling no longer jumps past the
entire image.
@item
Ispell can now save spelling corrections as abbrevs, such that if you
make the same mistake again it will be immediately corrected.
@item
Typing @kbd{d} during @code{query-replace} shows a diff buffer with the
replacements.
@item
The @file{*grep*} and @file{*xref*} now support editable modes, like
Occur Edit mode. The edits will be reflected in buffers visiting the
originating files.
@item
New VC commands to handle repositories with multiple working trees. The
VC Directory and Log View mode interfaces have seen a number of
usability improvements.
@item
New feature to review changes to packages before installing or upgrading
them, and new minor mode to automatically suggest packages to install
when visiting files with no specific major mode yet available.
@item
The Speedbar can be configured to open in a window instead of a frame.
@item
New theme, the Newcomers Presets theme, designed to make Emacs more
approachable for new users. It is basically a set of alternative
defaults.
@item
New library to handle iCalendar (RFC 5545) data, with integrations for
the Calendar and Diary packages.
@end itemize
@node New in Emacs 30
@section What is different about Emacs 30?
@cindex Differences between Emacs 29 and Emacs 30

View file

@ -16,8 +16,9 @@ Aaron Jensen: changed nsterm.m frameset.el ruby-bracketed-args-indent.rb
Aaron Larson: co-wrote bibtex.el
Aaron L. Zeng: changed savehist.el emacs-module-tests.el emacs-module.c
eval.c goto-addr.el lisp.h vc-hg.el
Aaron L. Zeng: changed savehist.el vc-hg.el eglot.el
emacs-module-tests.el emacs-module.c eval.c goto-addr.el lisp.h
vc-dispatcher.el vc-hg-tests.el
Aaron S. Hawley: wrote lisp-tests.el undo-tests.el
and changed simple.el files.texi isearch.el morse.el sgml-mode.el
@ -737,8 +738,8 @@ Billy Lei: wrote burmese.el
Billy Zheng: changed README.md eglot.el
Binbin Ye: changed json-ts-mode-tests.el json-ts-mode.el
typescript-ts-mode.el
Binbin Ye: changed typescript-ts-mode.el json-ts-mode-tests.el
json-ts-mode.el typescript-ts-mode-tests.el
Bjarte Johansen: wrote ob-sed.el
and changed use-package-bind-key.el
@ -1308,7 +1309,7 @@ Daniel Mendler: co-wrote compat.el
and changed minibuffer.el simple.el browse-url.el eldoc.el ibuffer.el
crm.el eww.el minibuf.texi project.el buffer-tests.el buffer.c buffer.h
dispextern.h display.texi faces.el frame.c frame.h package.el
picture.el subr-tests.el subr.el and 30 other files
picture.el subr-tests.el subr.el and 31 other files
Daniel M German: co-wrote org-protocol.el
@ -1978,8 +1979,8 @@ Eshel Yaron: wrote completion-preview.el elisp-scope.el
and changed completion-preview-tests.el programs.texi eglot.el
elisp-mode.el emacs.texi emoji.el eww.el help-fns.el info.el
minibuffer-tests.el minibuffer.el text-mode.el window.c xdisp.c xref.el
bookmark.el dictionary.el display.texi easy-mmode.el eldoc.el
elec-pair.el and 24 other files
bookmark.el cc-fonts.el dictionary.el display.texi easy-mmode.el
eldoc.el and 26 other files
Espen Skoglund: wrote pascal.el
@ -2102,9 +2103,9 @@ Filippo Argiolas: changed eglot.el eglot.texi c-ts-common.el
F. Jason Park: changed erc.el erc-tests.el erc-backend.el erc-stamp.el
erc-common.el erc-fill.el erc.texi erc-goodies.el erc-button.el
erc-fill-tests.el erc-networks.el foonet.eld erc-compat.el erc-match.el
erc-speedbar.el erc-dcc.el erc-scenarios-common.el erc-sasl.el
erc-networks-tests.el erc-track.el erc-goodies-tests.el
erc-fill-tests.el erc-networks.el foonet.eld erc-compat.el
erc-speedbar.el erc-match.el erc-dcc.el erc-scenarios-common.el
erc-sasl.el erc-networks-tests.el erc-track.el erc-goodies-tests.el
and 209 other files
Flemming Hoejstrup Hansen: changed forms.el
@ -5165,7 +5166,7 @@ and co-wrote compat.el
and changed package.el rcirc.el package.texi rcirc.texi vc.el
sgml-mode.el vc-git.el project.el which-key.el package-autosuggest.eld
startup.el package-activate.el message.el subr.el custom.texi eglot.el
simple.el bytecomp.el cus-edit.el custom.el help.el and 94 other files
simple.el bytecomp.el cus-edit.el custom.el help.el and 95 other files
Philippe Altherr: changed sh-script.el sh-script-tests.el shell.sh
@ -5454,13 +5455,13 @@ Richard Lawrence: wrote calendar-tests.el diary-icalendar.el
icalendar-parser.el icalendar-recur.el icalendar-shortdoc.el
icalendar-utils.el
and changed calendar.el diary-icalendar-tests.el icalendar-recur-tests.el
icalendar.el calendar.texi diary-lib.el gnus-icalendar.el
icalendar-parser-tests.el icalendar-tests.el .gitattributes cal-dst.el
cal-move.el cond-star.el diary-icalendar-resources emacs.texi
icalendar.el calendar.texi icalendar-parser-tests.el gnus-icalendar.el
diary-lib.el icalendar-tests.el .gitattributes cal-dst.el cal-move.el
cond-star.el diary-icalendar-resources emacs.texi
gnus-icalendar-tests.el icalendar-ast-tests.el
import-bug-11473.diary-iso import-bug-22092.diary-iso
import-bug-33277.diary-iso import-legacy-function.ics
and 22 other files
import-bug-24199.diary-all import-bug-33277.diary-iso
and 23 other files
Richard Levitte: changed vc-mtn.el
@ -5784,9 +5785,9 @@ Sean Whitton: wrote em-elecslash.el em-extpipe-tests.el em-extpipe.el
vc-test-misc.el
and co-wrote vc-tests-helpers.el vc-tests.el
and changed vc.el vc-git.el vc-dispatcher.el vc-hg.el vc-dir.el
diff-mode.el vc-hooks.el vc1-xtra.texi log-view.el maintaining.texi
vc-hooks.el diff-mode.el vc1-xtra.texi log-view.el maintaining.texi
subr.el project.el log-edit.el files.texi server.el simple.el window.el
cond-star.el dired-aux.el keyboard.c vc/vc-bzr.el and 334 other files
cond-star.el configure.ac dired-aux.el keyboard.c and 347 other files
Sebastian Fieber: changed gnus-art.el mm-decode.el mm-view.el
@ -6032,7 +6033,7 @@ and co-wrote font-lock.el gitmerge.el pcvs.el visual-wrap.el
and changed subr.el simple.el cl-macs.el bytecomp.el files.el keyboard.c
lisp.h vc.el eval.c xdisp.c alloc.c help-fns.el buffer.c sh-script.el
package.el tex-mode.el progmodes/compile.el lread.c keymap.c window.c
easy-mmode.el and 1744 other files
easy-mmode.el and 1745 other files
Stefano Facchini: changed gtkutil.c
@ -6059,10 +6060,10 @@ Steinar Bang: changed gnus-setup.el imap.el
Stéphane Boucher: changed replace.el
Stephane Marks: wrote savehist-tests.el system-sleep.el system-taskbar.el
and changed frame.el markdown-ts-mode.el frames.texi nsfns.m tab-bar.el
bookmark.el frame.c nsterm.m subr.el project.el display.texi recentf.el
savehist.el vtable.el w32fns.c ibuf-macs.el os.texi saveplace.el
shell.el subr-x.el treesit.el and 34 other files
and changed frame.el markdown-ts-mode.el nsfns.m frames.texi subr.el
tab-bar.el bookmark.el frame.c nsterm.m project.el display.texi
recentf.el savehist.el vtable.el w32fns.c ibuf-macs.el os.texi
saveplace.el shell.el subr-x.el tramp.el and 34 other files
Stephane Zermatten: changed term-tests.el term.el ansi-osc.el
@ -6697,10 +6698,10 @@ Vincent Del Vecchio: changed info.el mh-utils.el
Vincenzo Pupillo: wrote mhtml-ts-mode.el php-ts-mode.el
and changed js.el c-ts-mode.el java-ts-mode.el c-ts-common.el
cmake-ts-mode.el typescript-ts-mode.el speedbar.el treesit.el
Makefile.in compilation.txt compile-tests.el css-mode.el frames.texi
html-ts-mode.el progmodes/compile.el progmodes/python.el speedbar.texi
sql.el treesit-admin.el yaml-ts-mode.el
cmake-ts-mode.el speedbar.el typescript-ts-mode.el treesit.el
Makefile.in compilation.txt compile-tests.el css-mode.el dframe.el
frames.texi html-ts-mode.el progmodes/compile.el progmodes/python.el
speedbar.texi sql.el treesit-admin.el yaml-ts-mode.el
Vince Salvino: changed msdos.texi w32.c w32fns.c

File diff suppressed because it is too large Load diff

View file

@ -246,13 +246,15 @@ The following specifiers are available:
For example, a value of \"%h%t@mydomain.com\" will generate a UID code
for each entry composed of a hash of the event data, a creation
timestamp, and your personal domain name."
:type 'string)
:type 'string
:version "31.1")
(defcustom ical:vcalendar-prodid
(format "-//gnu.org//GNU Emacs %s//EN" emacs-version)
"The value of the `icalendar-prodid' property for VCALENDAR objects
produced by this Emacs."
:type 'string)
:type 'string
:version "31.1")
(defconst ical:vcalendar-version "2.0"
"The current version of the VCALENDAR object, used in the
@ -298,7 +300,8 @@ RFC5545.")
A value of 2 only logs errors.
A value of 1 also logs warnings.
A value of 0 also logs debugging information."
:type 'integer)
:type 'integer
:version "31.1")
(defvar icalendar-debug nil
"Enable icalendar debug messages.")

View file

@ -92,7 +92,8 @@ That is to say, the first time during an Emacs session."
(defcustom eshell-after-initialize-hook nil
"A hook that gets run after an Eshell session has been fully initialized."
:type 'hook)
:type 'hook
:version "31.1")
(defcustom eshell-exit-hook nil
"A hook that is run whenever `eshell' is exited.

View file

@ -171,7 +171,8 @@ message with the same \"Subject\" as B. First element is ignored.")
(defcustom rmail-summary-starting-message 1
"Message number to start summarizing at."
:type 'integer
:group 'rmail-summary)
:group 'rmail-summary
:version "31.1")
(defvar rmail-summary-message-descendants-vector nil
"Vector that holds the direct descendants of each message.

View file

@ -112,6 +112,7 @@ The executable can be configured via `org-ditaa-exec'."
(defcustom org-ditaa-java-exec "java"
"Java executable to use when evaluating ditaa blocks using a JAR."
:group 'org-babel
:package-version '(Org . "9.8")
:type 'string
:risky t)

View file

@ -144,6 +144,7 @@ detangling, and indentation.
It has no effect if `org-src-preserve-indentation' is non-nil."
:group 'org-edit-structure
:package-version '(Org . "9.8")
:type 'integer
:safe #'wholenump)

View file

@ -136,17 +136,20 @@ If the element is a function or a list of a function and a number,
(defcustom zone-all-frames nil
"When non-nil, zone in all open frames.
Displays the `*zone*' buffer in all windows in all frames."
:type 'boolean)
:type 'boolean
:version "31.1")
(defcustom zone-all-windows-in-frame nil
"When non-nil, zone in all windows in the current frame."
:type 'boolean)
:type 'boolean
:version "31.1")
(defcustom zone-delete-other-windows nil
"When non-nil, make the frame a single window before zoning.
The original windows and their content will be restored when zoning
completes."
:type 'boolean)
:type 'boolean
:version "31.1")
;;;; Hooks to detect the start and finish of zone activity

View file

@ -417,7 +417,8 @@ end of a rule with negative prefix arg.
Default nil means: `antlr-end-of-rule' jumps to beginning of a
rule, `antlr-end-of-rule' jumps to end of a rule."
:type 'boolean)
:type 'boolean
:version "31.1")
(defcustom antlr-options-use-submenus t
"Non-nil, if the major mode menu should include option submenus.
@ -743,7 +744,8 @@ The value might be tool-dependent, see `antlr-tool-version-variables'.")
(defcustom antlr-run-tool-on-buffer-file t ; was nil before 3.2.0
"Non-nil, if \\[antlr-run-tool] runs on the file for the current buffer.
If nil, the provided tool command must include the file name."
:type 'boolean)
:type 'boolean
:version "31.1")
(defcustom antlr-tool-command nil
"Command used in \\[antlr-run-tool] to run the Antlr tool.
@ -759,20 +761,23 @@ OBSOLETE as user option - customize version dependent user options."
"Command used in \\[antlr-run-tool] to run the Antlr tool.
This variable should include all options passed to Antlr.
Value for `antlr-tool-command' when using ANTLR v4."
:type 'string)
:type 'string
:version "31.1")
(defcustom antlr-v3-tool-command "java org.antlr.Tool"
"Command used in \\[antlr-run-tool] to run the Antlr tool.
This variable should include all options passed to Antlr.
Value for `antlr-tool-command' when using ANTLR v3."
:type 'string)
:type 'string
:version "31.1")
(defcustom antlr-v2-tool-command "java antlr.Tool"
"Command used in \\[antlr-run-tool] to run the Antlr tool.
This variable should include all options passed to Antlr except the
option \"-glib\" which is automatically suggested if necessary.
Value for `antlr-tool-command' when using ANTLR v2."
:type 'string)
:type 'string
:version "31.1")
(defcustom antlr-ask-about-save t
"If not nil, \\[antlr-run-tool] asks which buffers to save.

View file

@ -995,7 +995,8 @@ Elements in this list will be searched before those in
The buffer-local value of this variable will be inherited by the
compilation buffer."
:type '(repeat (string :tag "Directory")))
:type '(repeat (string :tag "Directory"))
:version "31.1")
;;;###autoload
(defcustom compile-command

View file

@ -656,7 +656,8 @@ compilation and evaluation time conflicts."
"Number of spaces for each indentation step in `csharp-ts-mode'."
:type 'integer
:safe 'integerp
:group 'csharp)
:group 'csharp
:version "31.1")
(defvar csharp-ts-mode--indent-rules
`((c-sharp

View file

@ -187,7 +187,8 @@
("1.12" . "29.2")
("1.12" . "29.3")
("1.12.29" . "29.4")
("1.17.30" . "30.1")))
("1.17.30" . "30.1")
("1.24.31" . "31.1")))
(defun eglot-alternatives (alternatives)
"Compute server-choosing function for `eglot-server-programs'.
@ -601,7 +602,8 @@ This is done by sending an additional '$/cancelRequest' notification
every time Eglot decides to forget a request. The effect of this
notification is implementation defined, and is only useful for some
servers."
:type 'boolean)
:type 'boolean
:package-version '(Eglot . "1.22"))
(defface eglot-code-action-indicator-face
'((t (:inherit warning :weight bold)))
@ -5409,11 +5411,13 @@ initial delay and repeat rate, and may not be 100% accurate."
(defcustom eglot-semantic-token-types
',types "LSP-supplied semantic types Eglot should consider."
:type '(set ,@(mapcar (lambda (o) `(const ,o)) types))
:group 'eglot-semantic-fontification)
:group 'eglot-semantic-fontification
:package-version '(Eglot . "1.20"))
(defcustom eglot-semantic-token-modifiers
',modifiers "LSP-supplied semantic modifiers Eglot should consider."
:type '(set ,@(mapcar (lambda (o) `(const ,o)) modifiers))
:group 'eglot-semantic-fontification)))))
:group 'eglot-semantic-fontification
:package-version '(Eglot . "1.20"))))))
(eglot--semtok-define-things)

View file

@ -131,7 +131,8 @@
(add-to-list 'customize-package-emacs-version-alist
'(Flymake ("1.3.4" . "30.1")
("1.3.5" . "30.1")
("1.3.6" . "30.1")))
("1.3.6" . "30.1")
("1.4.6" . "31.1")))
(defcustom flymake-error-bitmap '(flymake-double-exclamation-mark
flymake-error-fringe)

View file

@ -6684,7 +6684,7 @@ and KILLP is t if a prefix arg was specified."
(defun char-uppercase-p (char)
"Return non-nil if CHAR is an upper-case character.
A character is considered upper-case if there's a correspoding
A character is considered upper-case if there's a corresponding
lower-case character.
If the Unicode tables are not yet available, e.g. during bootstrap,
this function gives correct return values only for ASCII characters."

View file

@ -1102,7 +1102,6 @@ supported at a time.
speedbar-last-selected-file nil)
(set-buffer speedbar-buffer)
(speedbar-mode)
;; let's create the window
(setq speedbar--window
@ -1121,14 +1120,19 @@ supported at a time.
(speedbar-update-contents)
(speedbar-set-timer dframe-update-speed)
;; handle kill-buffer
(add-hook 'kill-buffer-hook (lambda () (speedbar-window--close t)) nil t)
;; hscroll
(setq-local auto-hscroll-mode nil)
;; reset the selection variable
(setq speedbar-last-selected-file nil)
(select-window current-window))))
(defun speedbar-window--close ()
"Close `speedbar-window'."
(defun speedbar-window--close (&optional no-kill-buffer)
"Close `speedbar-window'.
If optional argument NO-KILL-BUFFER is not nil, close window without
killing `speedbar-buffer', which is useful for `kill-buffer-hook'."
(when (speedbar-window--live-p)
(let ((current-window (selected-window)))
;; store the current window width
@ -1142,10 +1146,11 @@ supported at a time.
(setq speedbar--window nil
speedbar-frame nil
dframe-attached-frame nil)
(with-current-buffer speedbar-buffer
(speedbar-set-timer nil))
(kill-buffer speedbar-buffer)
(setq speedbar-buffer nil)
(speedbar-set-timer nil)
(unless no-kill-buffer
(kill-buffer speedbar-buffer)
(setq speedbar-buffer nil))
(when (and current-window (window-live-p current-window))
(select-window current-window)))))
@ -2751,13 +2756,15 @@ This should only be used by modes classified as special."
"Set up the speedbar timer with TIMEOUT.
Uses `dframe-set-timer'.
Also resets scanner functions."
(dframe-set-timer timeout 'speedbar-timer-fn 'speedbar-update-flag)
;; Apply a revert hook that will reset the scanners. We attach to revert
;; because most reverts occur during VC state change, and this lets our
;; VC scanner fix itself.
(if timeout
(add-hook 'after-revert-hook 'speedbar-reset-scanners)
(remove-hook 'after-revert-hook 'speedbar-reset-scanners))
;; `dframe-set-timer' must be called from `speedbar-buffer'.
(with-current-buffer speedbar-buffer
(dframe-set-timer timeout 'speedbar-timer-fn 'speedbar-update-flag)
;; Apply a revert hook that will reset the scanners. We attach to revert
;; because most reverts occur during VC state change, and this lets our
;; VC scanner fix itself.
(if timeout
(add-hook 'after-revert-hook 'speedbar-reset-scanners)
(remove-hook 'after-revert-hook 'speedbar-reset-scanners)))
;; change this if it changed for some reason
(speedbar-set-mode-line-format))
@ -2767,7 +2774,7 @@ Also resets scanner functions."
((and (speedbar-current-frame)
(frame-live-p (speedbar-current-frame)))
t)
((speedbar-window--window-live-p) t)
((speedbar-window--live-p) t)
(t nil)))
(defun speedbar-timer-fn ()

View file

@ -106,6 +106,7 @@ If set to `color' only the cursor color is updated. This uses the OSC
(defconst xterm--auto-xt-mouse-allowed-names
(rx string-start
(or "Konsole"
"VTE"
"WezTerm"
;; "XTerm" ;Disabled because OSC52 support is opt-in only.
"iTerm2" ;OSC52 support has opt-in/out UI on first usage

View file

@ -113,7 +113,8 @@ specify nil for this variable."
When non-nil, the first menu-entry's character that acts as a shortcut
is displayed with the `highlight' face to help identify it. The
`tmm-mid-prompt' string is not used then."
:type 'boolean)
:type 'boolean
:version "31.1")
(defface tmm-inactive
'((t :inherit shadow))

View file

@ -51,6 +51,9 @@
(eval-when-compile (require 'subr-x))
(add-to-list 'customize-package-emacs-version-alist
'(transient ("0.13.3" . "31.1")))
(declare-function info "info" (&optional file-or-node buffer))
(declare-function Man-find-section "man" (section))
(declare-function Man-next-section "man" (n))
@ -2236,6 +2239,8 @@ For historic reasons \\`C-x' is used by default, but users are
encouraged to pick another key, preferably one that is not commonly used
in Emacs but is still convenient to them. See info node `(transient)
Common Suffix Commands'."
:package-version '(transient . "0.8.8")
:group 'transient
:type 'key
:initialize (lambda (symbol exp)
(custom-initialize-default symbol exp)