Merge from savannah/emacs-31

916572f6e0 Fix the Android build
3801c09ae2 Don't resurrect invisible child frames when rebuilding pa...
e4350c538f Improve progress-reporter state to remove hard coded leng...
30df8657fb (tex-main-file): Add forgotten safety predicate (bug#81099)
35a82765bf Fix bug in latexenc when AUCTeX is loaded
e9d1367a32 paren.el: Fix part of bug#81035
fd1b5cd890 ; * test/lisp/files-tests.el (w32-downcase-file-names): D...
79391d3e19 ; * lisp/mouse.el (send-to--resolve-handler): Fix last ch...
eb1de3f585 ; Avoid rebuilding Emacs Lisp Intro when building release...
f26f2a832c ; Avoid byte-compilation warning in mouse.el
cf325876fa Adapt Tramp version
84556123eb ; * admin/make-tarball.txt: Update.
8f5b786cac Check buffer-local value in tramp-local-environment-varia...
This commit is contained in:
Po Lu 2026-06-06 11:39:01 +08:00
commit 7ffbf45886
13 changed files with 81 additions and 56 deletions

View file

@ -13,29 +13,22 @@ Preparations:
Steps to take before starting on the first pretest in any release sequence: Steps to take before starting on the first pretest in any release sequence:
0. The release branch (e.g. emacs-28) should already have been made 0. The release branch (e.g. emacs-31) should already have been made
and you should use it for all that follows. Diffs from this and you should use it for all that follows. Diffs from this
branch should be going to the emacs-diffs mailing list. branch should be going to the emacs-diffs mailing list.
1. Decide on versions of m4 and autoconf, and ensure you will 1. Decide on versions of m4 and autoconf, and ensure you will
have them available for the duration of the release process. have them available for the duration of the release process.
2. Consider increasing the value of the variable 2. Remove any old pretests from <https://alpha.gnu.org/gnu/emacs/pretest>.
'customize-changed-options-previous-release' in cus-edit.el to
refer to a newer version of Emacs. (This is now done when cutting
the release branch, see admin/release-branch.txt, but it can't
hurt to double check its value.) Commit cus-edit.el if changed.
3. Remove any old pretests from <https://alpha.gnu.org/gnu/emacs/pretest>.
You can use 'gnupload --delete' (see below for more gnupload details). You can use 'gnupload --delete' (see below for more gnupload details).
(We currently don't bother with this.)
4. Check that all new Lisp libraries belong to sensible packages. 3. Check that all new Lisp libraries belong to sensible packages.
Run "make -C lisp finder-data" and check the diff of the generated Run "make -C lisp finder-data" and check the diff of the generated
file against the previously released Emacs version to see what has file against the previously released Emacs version to see what has
changed. changed.
5. If this is an emergency release without a prior pretest, inform the 4. If this is an emergency release without a prior pretest, inform the
maintainers of the bundled packages which are developed separately maintainers of the bundled packages which are developed separately
to make sure they install adjustments required for an official to make sure they install adjustments required for an official
release. Currently, these packages include: release. Currently, these packages include:
@ -70,7 +63,7 @@ General steps (for each step, check for possible errors):
"M-x emacs-news-delete-temporary-markers" command to delete any "M-x emacs-news-delete-temporary-markers" command to delete any
left-over "---" and "+++" markers from etc/NEWS, as well as the left-over "---" and "+++" markers from etc/NEWS, as well as the
"Temporary note" section at the beginning of that file, and commit "Temporary note" section at the beginning of that file, and commit
etc/NEWS if it was modified. For a bug fix release (e.g. 28.2), etc/NEWS if it was modified. For a bug fix release (e.g. 31.2),
delete any empty headlines too. delete any empty headlines too.
2. Regenerate the versioned ChangeLog.N and etc/AUTHORS files. 2. Regenerate the versioned ChangeLog.N and etc/AUTHORS files.
@ -268,30 +261,33 @@ General steps (for each step, check for possible errors):
9. You can now tag the release/pretest and push it together with the 9. You can now tag the release/pretest and push it together with the
last commit: last commit:
cd EMACS_ROOT_DIR && git tag -a TAG -m "Emacs TAG" cd EMACS_ROOT_DIR && git tag -s TAG -m "Emacs STR"
git push git push
git push --tags git push --tags
Here TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release. Here TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
For a release, if you are producing a release candidate first, use For STR see below. For a release, if you are producing a release
emacs-XX.Y-rcN (N = 1, 2, ...) when you tar the RC, and add the candidate first, use emacs-XX.Y-rcN (N = 1, 2, ...) when you tar the
actual release tag later, when the official release tarball is RC, and add the actual release tag later, when the official release
uploaded to ftp.gnu.org. When adding a tag later, it is safer to tarball is uploaded to ftp.gnu.org. When adding a tag later, it is
use the SHA1 of the last commit which went into the release safer to use the SHA1 of the last commit which went into the release
tarball, in case there were some intervening commits since then: tarball, in case there were some intervening commits since then:
git tag -a TAG -m "Emacs TAG" SHA1 git tag -s TAG -m "Emacs TAG STR" SHA1
git push --tags git push --tags
In the past, we were not always consistent with the annotation In the past, we were not always consistent with the annotation
(i.e. -m "Emacs TAG"). The preferred format is like this for a (i.e. -m "Emacs TAG"). The preferred format is like this for a
pretest, release candidate and final release: pretest, release candidate and final release:
git tag -a emacs-28.0.90 -m "Emacs 28.0.90 pretest" git tag -s emacs-31.0.90 -m "Emacs 31.0.90 pretest"
git tag -a emacs-28.1-rc1 -m "Emacs 28.1 RC1" git tag -s emacs-31.1-rc1 -m "Emacs 31.1 RC1"
git tag -a emacs-28.1 -m "Emacs 28.1 release" git tag -s emacs-31.1 -m "Emacs 31.1 release"
10. Decide what compression schemes to offer. 10. Merge the release branch to master, checking you skip the right
commits.
11. Decide what compression schemes to offer.
For a release, at least gz and xz: For a release, at least gz and xz:
gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz
xz -c emacs-NEW.tar > emacs-NEW.tar.xz xz -c emacs-NEW.tar > emacs-NEW.tar.xz
@ -300,7 +296,9 @@ General steps (for each step, check for possible errors):
Now you should upload the files to the GNU FTP server; your Now you should upload the files to the GNU FTP server; your
GPG key must already be accepted as described above. GPG key must already be accepted as described above.
The simplest method of uploading is with the gnulib The simplest method of uploading is with the gnulib
<https://www.gnu.org/s/gnulib/> script "build-aux/gnupload": <https://www.gnu.org/s/gnulib/> script "build-aux/gnupload"
(/usr/share/gnulib/build-aux/gnupload on Debian and its derivatives
with the 'gnulib' and 'ncftp' packages installed):
For a pretest or release candidate: For a pretest or release candidate:
gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \ gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
@ -333,14 +331,14 @@ General steps (for each step, check for possible errors):
For a pretest, place the files in /incoming/alpha instead, so that For a pretest, place the files in /incoming/alpha instead, so that
they appear on <https://alpha.gnu.org/>. they appear on <https://alpha.gnu.org/>.
11. After five minutes, verify that the files are visible at 12. After five minutes, verify that the files are visible at
<https://alpha.gnu.org/gnu/emacs/pretest/> for a pretest, or <https://alpha.gnu.org/gnu/emacs/pretest/> for a pretest, or
<https://ftp.gnu.org/gnu/emacs/> for a release. <https://ftp.gnu.org/gnu/emacs/> for a release.
Download them and check the signatures and SHA1/SHA256 checksums. Download them and check the signatures and SHA1/SHA256 checksums.
Check they build (./configure --with-native-compilation). Check they build (./configure --with-native-compilation).
12. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org. 13. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org.
For a pretest, also bcc: platform-testers@gnu.org. For a pretest, also bcc: platform-testers@gnu.org.
For a release, also bcc: info-gnu@gnu.org. For a release, also bcc: info-gnu@gnu.org.
(The reason for using bcc: is to make it less likely that people (The reason for using bcc: is to make it less likely that people
@ -354,19 +352,19 @@ General steps (for each step, check for possible errors):
because replies that invariably are not announcements also get because replies that invariably are not announcements also get
sent out as if they were.) sent out as if they were.)
To create the included SHA1 and SHA256 checksums, run: To create the included SHA256 and SHA512 checksums, run:
sha1sum emacs-NEW.tar.xz
sha256sum emacs-NEW.tar.xz sha256sum emacs-NEW.tar.xz
sha512sum emacs-NEW.tar.xz
You can optionally sign the announcement email using You can optionally sign the announcement email using
the same PGP key that you used for signing the tarball. the same PGP key that you used for signing the tarball.
(Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign (Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign
an email.) an email.)
13. After a release, update the Emacs pages as described below. 14. After a release, update the Emacs pages as described below.
14. After a release, bump the Emacs version on the release branch. 15. After a release, bump the Emacs version on the release branch.
There is no need to bump the version after a pretest; the version There is no need to bump the version after a pretest; the version
is bumped before the next pretest or release instead. is bumped before the next pretest or release instead.
@ -396,7 +394,7 @@ like this:
<div class="release-banner"> <div class="release-banner">
<div class="container"> <div class="container">
<h2><em>Emacs 28.1 is out</em>, download it <a href="download.html">here</a>!</h2> <h2><em>Emacs 31.1 is out</em>, download it <a href="download.html">here</a>!</h2>
</div> </div>
</div> </div>

View file

@ -5240,12 +5240,14 @@ if test "${with_native_compilation}" != "no"; then
else else
libgccjit_not_found_err libgccjit_not_found_err
fi]) fi])
AC_CHECK_HEADERS([libgccjit.h], [], # `libgcc_not_found' may set `with_native_compilation' to `no'.
[if test "${with_native_compilation}" = "default"; then AS_IF([test "$with_native_compilation" != "no"],
[AC_CHECK_HEADERS([libgccjit.h], [],
[if test "${with_native_compilation}" = "default"; then
libgccjit_dev_not_found libgccjit_dev_not_found
else else
libgccjit_dev_not_found_err libgccjit_dev_not_found_err
fi]) fi])])
if test "${with_native_compilation}" != "no"; then if test "${with_native_compilation}" != "no"; then
# Check if libgccjit really works. # Check if libgccjit really works.
AC_RUN_IFELSE([libgccjit_smoke_test], [], AC_RUN_IFELSE([libgccjit_smoke_test], [],

View file

@ -7,7 +7,7 @@
@c In the Tramp GIT, the version number and the bug report address @c In the Tramp GIT, the version number and the bug report address
@c are auto-frobbed from configure.ac. @c are auto-frobbed from configure.ac.
@set trampver 2.8.2-pre @set trampver 2.8.2
@set trampurl https://www.gnu.org/software/tramp/ @set trampurl https://www.gnu.org/software/tramp/
@set tramp-bug-report-address tramp-devel@@gnu.org @set tramp-bug-report-address tramp-devel@@gnu.org
@set emacsver 28.1 @set emacsver 28.1

View file

@ -157,7 +157,8 @@ coding system names is determined from `latex-inputenc-coding-alist'."
nil t) nil t)
(match-string 2) (match-string 2)
(or (and (bound-and-true-p TeX-master) (or (and (bound-and-true-p TeX-master)
(stringp TeX-master)) (stringp TeX-master)
TeX-master)
(bound-and-true-p tex-main-file))))) (bound-and-true-p tex-main-file)))))
(dolist (ext `("" ,(if (boundp 'TeX-default-extension) (dolist (ext `("" ,(if (boundp 'TeX-default-extension)
(concat "." TeX-default-extension) (concat "." TeX-default-extension)

View file

@ -539,6 +539,7 @@ Some context functions add menu items below the separator."
(cdr mode)))) (cdr mode))))
menu) menu)
(autoload 'send-to--resolve-handler "send-to")
(defun context-menu-send-to (menu _click) (defun context-menu-send-to (menu _click)
"Add a \"Send to...\" context MENU entry on supported platforms." "Add a \"Send to...\" context MENU entry on supported platforms."
(run-hooks 'activate-menubar-hook 'menu-bar-update-hook) (run-hooks 'activate-menubar-hook 'menu-bar-update-hook)

View file

@ -5478,7 +5478,9 @@ should be set connection-local.")
"Return non-nil if ARG exists in default `process-environment'. "Return non-nil if ARG exists in default `process-environment'.
Tramp does not propagate local environment variables in remote Tramp does not propagate local environment variables in remote
processes." processes."
(member arg (default-toplevel-value 'process-environment))) (or (ignore-error void-variable
(member arg (buffer-local-toplevel-value 'process-environment)))
(member arg (default-toplevel-value 'process-environment))))
(defun tramp-handle-make-process (&rest args) (defun tramp-handle-make-process (&rest args)
"An alternative `make-process' implementation for Tramp files." "An alternative `make-process' implementation for Tramp files."

View file

@ -7,7 +7,7 @@
;; Maintainer: Michael Albinus <michael.albinus@gmx.de> ;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes ;; Keywords: comm, processes
;; Package: tramp ;; Package: tramp
;; Version: 2.8.2-pre ;; Version: 2.8.2
;; Package-Requires: ((emacs "28.1")) ;; Package-Requires: ((emacs "28.1"))
;; Package-Type: multi ;; Package-Type: multi
;; URL: https://www.gnu.org/software/tramp/ ;; URL: https://www.gnu.org/software/tramp/
@ -40,7 +40,7 @@
;; ./configure" to change them. ;; ./configure" to change them.
;;;###tramp-autoload ;;;###tramp-autoload
(defconst tramp-version "2.8.2-pre" (defconst tramp-version "2.8.2"
"This version of Tramp.") "This version of Tramp.")
;;;###tramp-autoload ;;;###tramp-autoload
@ -76,7 +76,7 @@
;; Check for Emacs version. ;; Check for Emacs version.
(let ((x (if (not (string-version-lessp emacs-version "28.1")) (let ((x (if (not (string-version-lessp emacs-version "28.1"))
"ok" "ok"
(format "Tramp 2.8.2-pre is not fit for %s" (format "Tramp 2.8.2 is not fit for %s"
(replace-regexp-in-string "\n" "" (emacs-version)))))) (replace-regexp-in-string "\n" "" (emacs-version))))))
(unless (string-equal "ok" x) (error "%s" x))) (unless (string-equal "ok" x) (error "%s" x)))
@ -109,7 +109,8 @@
("2.5.2.28.1" . "28.1") ("2.5.3.28.2" . "28.2") ("2.5.4" . "28.3") ("2.5.2.28.1" . "28.1") ("2.5.3.28.2" . "28.2") ("2.5.4" . "28.3")
("2.6.0.29.1" . "29.1") ("2.6.2.29.2" . "29.2") ("2.6.3-pre" . "29.3") ("2.6.0.29.1" . "29.1") ("2.6.2.29.2" . "29.2") ("2.6.3-pre" . "29.3")
("2.6.3" . "29.4") ("2.6.3" . "29.4")
("2.7.1.30.1" . "30.1") ("2.7.3.30.2" . "30.2"))) ("2.7.1.30.1" . "30.1") ("2.7.3.30.2" . "30.2")
("2.8.2" . "31.1")))
(add-hook 'tramp-unload-hook (add-hook 'tramp-unload-hook
(lambda () (lambda ()

View file

@ -272,9 +272,14 @@ It is the default value of `show-paren-data-function'."
(save-restriction (save-restriction
;; Determine the range within which to look for a match. ;; Determine the range within which to look for a match.
(when blink-matching-paren-distance (when blink-matching-paren-distance
(narrow-to-region (let ((beg (max (point-min)
(max (point-min) (- (point) blink-matching-paren-distance)) (- (point) blink-matching-paren-distance))))
(min (point-max) (+ (point) blink-matching-paren-distance)))) ;; `syntax-propertize' can't widen so make sure it won't
;; need to (bug#81035).
(syntax-propertize beg)
(narrow-to-region
beg
(min (point-max) (+ (point) blink-matching-paren-distance)))))
;; Scan across one sexp within that range. ;; Scan across one sexp within that range.
;; Errors or nil mean there is a mismatch. ;; Errors or nil mean there is a mismatch.
(condition-case () (condition-case ()

View file

@ -7125,8 +7125,7 @@ REPORTER is the result of a call to `make-progress-reporter'.
STATE can be one of: STATE can be one of:
- A float representing the percentage complete in the range 0.0-1.0 - A float representing the percentage complete in the range 0.0-1.0
for a numeric reporter. for a numeric reporter.
- An integer representing the index which cycles through the range 0-3 - A monotonically increasing integer for a pulsing reporter.
for a pulsing reporter.
- The symbol `done' to indicate that the progress reporter is complete.") - The symbol `done' to indicate that the progress reporter is complete.")
(defsubst progress-reporter-update (reporter &optional value suffix) (defsubst progress-reporter-update (reporter &optional value suffix)
@ -7141,7 +7140,7 @@ MIN-VALUE and MAX-VALUE.
Optional argument SUFFIX is a string to be displayed after REPORTER's Optional argument SUFFIX is a string to be displayed after REPORTER's
main message and progress text. If REPORTER is a non-numerical main message and progress text. If REPORTER is a non-numerical
reporter, then VALUE should be nil, or a string to use instead of reporter, then VALUE should be nil, or a string to use instead of
SUFFIX. SUFFIX is considered obsolete and may be removed in the future. SUFFIX.
See `progress-reporter-update-functions' for the list of functions See `progress-reporter-update-functions' for the list of functions
called on each update. called on each update.
@ -7252,8 +7251,9 @@ area is busy with something else."
(message "%s" text))) (message "%s" text)))
((pred integerp) ((pred integerp)
(let ((message-log-max nil) (let ((message-log-max nil)
(pulse-char (aref progress-reporter--pulse-characters (pulse-char
state))) (aref progress-reporter--pulse-characters
(mod state (length progress-reporter--pulse-characters)))))
(message "%s %s" text pulse-char))) (message "%s %s" text pulse-char)))
('done ('done
(message "%sdone" text)))))) (message "%sdone" text))))))
@ -7305,7 +7305,7 @@ area is busy with something else."
(if suffix (if suffix
(aset parameters 6 suffix) (aset parameters 6 suffix)
(setq suffix (or (aref parameters 6) ""))) (setq suffix (or (aref parameters 6) "")))
(let ((index (mod (1+ (car reporter)) 4))) (let ((index (1+ (car reporter))))
(setcar reporter index) (setcar reporter index)
(run-hook-with-args 'progress-reporter-update-functions (run-hook-with-args 'progress-reporter-update-functions
reporter reporter

View file

@ -282,7 +282,9 @@ REPORTER and STATE are the same as in
((pred floatp) ((pred floatp)
(system-taskbar--progress state)) (system-taskbar--progress state))
((pred integerp) ((pred integerp)
(system-taskbar--progress (/ (1+ state) 4.0))) ;; This won't show 0.0 to indicate work in process until done.
(system-taskbar--progress
(/ (1+ (mod state 5)) 5.0)))
('done ('done
(system-taskbar--progress nil))))) (system-taskbar--progress nil)))))

View file

@ -89,6 +89,7 @@ The command `tex-file' runs TeX on the file specified by `tex-main-file'
if the variable is non-nil." if the variable is non-nil."
:type '(choice (const :tag "None" nil) :type '(choice (const :tag "None" nil)
file) file)
:safe (lambda (x) (or (stringp x) (null x)))
:group 'tex-file) :group 'tex-file)
;;;###autoload ;;;###autoload

View file

@ -369,7 +369,7 @@ possibly_non_vc_files="
) || exit ) || exit
if [ $with_info = yes ]; then if [ $with_info = yes ]; then
info_files="info/dir $(echo info/*.info info/*.txt info/*.jpg)" || exit info_files="info/dir $(echo info/*.info info/*.txt info/*.jpg info/*.png)" || exit
else else
info_files= info_files=
fi fi

View file

@ -1651,8 +1651,13 @@ -(void)remove
unblock_input (); unblock_input ();
} }
/* Making a frame invisible seems to break the parent->child /* A child window cannot remain attached while hidden. Per Apple's
relationship, so reinstate it. */ documentation, "Calling orderOut(_:) on a child window causes the
window to be removed from its parent window before being removed"
(https://developer.apple.com/documentation/appkit/nswindow/orderout(_:)),
and ns_make_frame_invisible hides the frame with -orderOut:. The
parent->child relationship is therefore broken while invisible, so
reinstate it now that we are making the frame visible again. */
if ([window parentWindow] == nil && FRAME_PARENT_FRAME (f) != NULL) if ([window parentWindow] == nil && FRAME_PARENT_FRAME (f) != NULL)
{ {
block_input (); block_input ();
@ -9979,8 +9984,15 @@ - (void)setParentChildRelationships
[ourView toggleFullScreen:self]; [ourView toggleFullScreen:self];
#endif #endif
[parentWindow addChildWindow:self /* -addChildWindow: also orders the child window onto the screen, so
ordered:NSWindowAbove]; attaching a child frame Emacs considers invisible is what
resurrects a dismissed completion popup (corfu, company-box, ...)
when relationships are rebuilt. Only attach a visible child; a
hidden one is re-attached by ns_make_frame_visible when it is
shown again. */
if (FRAME_VISIBLE_P (ourFrame))
[parentWindow addChildWindow:self
ordered:NSWindowAbove];
} }
/* Check our child windows are configured correctly. */ /* Check our child windows are configured correctly. */