diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 2ef31c0042b..8299668a8a6 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -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 . +2. Remove any old pretests from . 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 - script "build-aux/gnupload": + 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 . -11. After five minutes, verify that the files are visible at +12. After five minutes, verify that the files are visible at for a pretest, or 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:
-

Emacs 28.1 is out, download it here!

+

Emacs 31.1 is out, download it here!

diff --git a/configure.ac b/configure.ac index 940c9fa9844..1c1ef5f8ef1 100644 --- a/configure.ac +++ b/configure.ac @@ -5240,12 +5240,14 @@ if test "${with_native_compilation}" != "no"; then else libgccjit_not_found_err fi]) - AC_CHECK_HEADERS([libgccjit.h], [], - [if test "${with_native_compilation}" = "default"; then + # `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], [], diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index 6eddd0e71c5..165d0eb1352 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -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 diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el index 57f23e6b8aa..6e0cde6b653 100644 --- a/lisp/international/latexenc.el +++ b/lisp/international/latexenc.el @@ -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) diff --git a/lisp/mouse.el b/lisp/mouse.el index 20c819ee0a8..1ff79e3833e 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -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) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index bbe44880fd1..044580bac07 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -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." diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index b900ab377aa..00d5ffb2afa 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus ;; 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 () diff --git a/lisp/paren.el b/lisp/paren.el index 10c72dadc79..c2ecdc60c72 100644 --- a/lisp/paren.el +++ b/lisp/paren.el @@ -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 - (narrow-to-region - (max (point-min) (- (point) blink-matching-paren-distance)) - (min (point-max) (+ (point) 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 + 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 () diff --git a/lisp/subr.el b/lisp/subr.el index 08eee8646a4..cea786ae64d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -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 diff --git a/lisp/system-taskbar.el b/lisp/system-taskbar.el index cc41183fb32..973b426e026 100644 --- a/lisp/system-taskbar.el +++ b/lisp/system-taskbar.el @@ -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))))) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 86a4b1d006e..d6be9d511d6 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -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 diff --git a/make-dist b/make-dist index 427274cf249..aa8df7126ee 100755 --- a/make-dist +++ b/make-dist @@ -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 diff --git a/src/nsterm.m b/src/nsterm.m index 45d43c88423..ab656e5942e 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -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,8 +9984,15 @@ - (void)setParentChildRelationships [ourView toggleFullScreen:self]; #endif - [parentWindow addChildWindow:self - ordered:NSWindowAbove]; + /* -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]; } /* Check our child windows are configured correctly. */