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:
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
branch should be going to the emacs-diffs mailing list.
1. Decide on versions of m4 and autoconf, and ensure you will
have them available for the duration of the release process.
2. Consider increasing the value of the variable
'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>.
2. Remove any old pretests from <https://alpha.gnu.org/gnu/emacs/pretest>.
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
file against the previously released Emacs version to see what has
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
to make sure they install adjustments required for an official
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
left-over "---" and "+++" markers from etc/NEWS, as well as the
"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.
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
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 --tags
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
emacs-XX.Y-rcN (N = 1, 2, ...) when you tar the RC, and add the
actual release tag later, when the official release tarball is
uploaded to ftp.gnu.org. When adding a tag later, it is safer to
use the SHA1 of the last commit which went into the release
For STR see below. For a release, if you are producing a release
candidate first, use emacs-XX.Y-rcN (N = 1, 2, ...) when you tar the
RC, and add the actual release tag later, when the official release
tarball is uploaded to ftp.gnu.org. When adding a tag later, it is
safer to use the SHA1 of the last commit which went into the release
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
In the past, we were not always consistent with the annotation
(i.e. -m "Emacs TAG"). The preferred format is like this for a
pretest, release candidate and final release:
git tag -a emacs-28.0.90 -m "Emacs 28.0.90 pretest"
git tag -a emacs-28.1-rc1 -m "Emacs 28.1 RC1"
git tag -a emacs-28.1 -m "Emacs 28.1 release"
git tag -s emacs-31.0.90 -m "Emacs 31.0.90 pretest"
git tag -s emacs-31.1-rc1 -m "Emacs 31.1 RC1"
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:
gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz
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
GPG key must already be accepted as described above.
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:
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
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://ftp.gnu.org/gnu/emacs/> for a release.
Download them and check the signatures and SHA1/SHA256 checksums.
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 release, also bcc: info-gnu@gnu.org.
(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
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
sha512sum emacs-NEW.tar.xz
You can optionally sign the announcement email using
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
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
is bumped before the next pretest or release instead.
@ -396,7 +394,7 @@ like this:
<div class="release-banner">
<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>

View file

@ -5240,12 +5240,14 @@ if test "${with_native_compilation}" != "no"; then
else
libgccjit_not_found_err
fi])
AC_CHECK_HEADERS([libgccjit.h], [],
# `libgcc_not_found' may set `with_native_compilation' to `no'.
AS_IF([test "$with_native_compilation" != "no"],
[AC_CHECK_HEADERS([libgccjit.h], [],
[if test "${with_native_compilation}" = "default"; then
libgccjit_dev_not_found
else
libgccjit_dev_not_found_err
fi])
fi])])
if test "${with_native_compilation}" != "no"; then
# Check if libgccjit really works.
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 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 tramp-bug-report-address tramp-devel@@gnu.org
@set emacsver 28.1

View file

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

View file

@ -539,6 +539,7 @@ Some context functions add menu items below the separator."
(cdr mode))))
menu)
(autoload 'send-to--resolve-handler "send-to")
(defun context-menu-send-to (menu _click)
"Add a \"Send to...\" context MENU entry on supported platforms."
(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'.
Tramp does not propagate local environment variables in remote
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)
"An alternative `make-process' implementation for Tramp files."

View file

@ -7,7 +7,7 @@
;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
;; Package: tramp
;; Version: 2.8.2-pre
;; Version: 2.8.2
;; Package-Requires: ((emacs "28.1"))
;; Package-Type: multi
;; URL: https://www.gnu.org/software/tramp/
@ -40,7 +40,7 @@
;; ./configure" to change them.
;;;###tramp-autoload
(defconst tramp-version "2.8.2-pre"
(defconst tramp-version "2.8.2"
"This version of Tramp.")
;;;###tramp-autoload
@ -76,7 +76,7 @@
;; Check for Emacs version.
(let ((x (if (not (string-version-lessp emacs-version "28.1"))
"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))))))
(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.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.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
(lambda ()

View file

@ -272,9 +272,14 @@ It is the default value of `show-paren-data-function'."
(save-restriction
;; Determine the range within which to look for a match.
(when blink-matching-paren-distance
(let ((beg (max (point-min)
(- (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
(max (point-min) (- (point) blink-matching-paren-distance))
(min (point-max) (+ (point) blink-matching-paren-distance))))
beg
(min (point-max) (+ (point) blink-matching-paren-distance)))))
;; Scan across one sexp within that range.
;; Errors or nil mean there is a mismatch.
(condition-case ()

View file

@ -7125,8 +7125,7 @@ REPORTER is the result of a call to `make-progress-reporter'.
STATE can be one of:
- A float representing the percentage complete in the range 0.0-1.0
for a numeric reporter.
- An integer representing the index which cycles through the range 0-3
for a pulsing reporter.
- A monotonically increasing integer for a pulsing reporter.
- The symbol `done' to indicate that the progress reporter is complete.")
(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
main message and progress text. If REPORTER is a non-numerical
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
called on each update.
@ -7252,8 +7251,9 @@ area is busy with something else."
(message "%s" text)))
((pred integerp)
(let ((message-log-max nil)
(pulse-char (aref progress-reporter--pulse-characters
state)))
(pulse-char
(aref progress-reporter--pulse-characters
(mod state (length progress-reporter--pulse-characters)))))
(message "%s %s" text pulse-char)))
('done
(message "%sdone" text))))))
@ -7305,7 +7305,7 @@ area is busy with something else."
(if suffix
(aset parameters 6 suffix)
(setq suffix (or (aref parameters 6) "")))
(let ((index (mod (1+ (car reporter)) 4)))
(let ((index (1+ (car reporter))))
(setcar reporter index)
(run-hook-with-args 'progress-reporter-update-functions
reporter

View file

@ -282,7 +282,9 @@ REPORTER and STATE are the same as in
((pred floatp)
(system-taskbar--progress state))
((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
(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."
:type '(choice (const :tag "None" nil)
file)
:safe (lambda (x) (or (stringp x) (null x)))
:group 'tex-file)
;;;###autoload

View file

@ -369,7 +369,7 @@ possibly_non_vc_files="
) || exit
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
info_files=
fi

View file

@ -1651,8 +1651,13 @@ -(void)remove
unblock_input ();
}
/* Making a frame invisible seems to break the parent->child
relationship, so reinstate it. */
/* A child window cannot remain attached while hidden. Per Apple's
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)
{
block_input ();
@ -9979,6 +9984,13 @@ - (void)setParentChildRelationships
[ourView toggleFullScreen:self];
#endif
/* -addChildWindow: also orders the child window onto the screen, so
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];
}